Я пытаюсь работать sh
сценарий каждую минуту с помощью crontab, но это не работает.
Когда я запускаю скрипт вручную, он выполняется правильно, однако crontab не может сделать этого.
Я создал использование задания crontab -e
, и я вижу, что крон работает потому что, если я ввожу pgrep cron
Я получаю PID в ответ.
Я также знаю, что мой формат времени корректен, потому что я протестировал его с этим тестером онлайн.
wallpaperSlider.sh:
#!/bin/bash
feh --randomize --bg-fill /home/username/Pictures/wallpapers/*
задание crontab:
SHELL=/bin/bash
* * * * * username /home/username/.crons/wallpaperSlider.sh
Я считал наиболее распространенные ошибки в AskUbuntu, и я не думаю, что испытываю любого.
Я понимаю, что, возможно, пропускаю некоторую переменную среды, но я не уверен, как проверить это.
Я также знаю это crontab -e
изменяется/создает tmp файл, в моем случае /tmp/crontab.wCajAu/crontab
.
crontab -e
изменяет файл в tmp
папка, я потеряю все изменения, после того как я перезагружаю?Ваш формат крона является неправильным. Вы хотите:
* * * * * /home/username/.crons/wallpaperSlider.sh
crontabs пользователя не имеют a username
поле. Это только используется для crontabs в масштабе всей системы как /etc/crontab
. Вам также не нужно SHELL=/bin/bash
с тех пор, даже если Ваша оболочка по умолчанию не является ударом (это dash
на Ubuntu), Ваш сценарий сам имеет строку хижины (#!/bin/bash
) таким образом, это будет выполнено bash
независимо от того, что запускает крон оболочки.
У Вас, вероятно, будут другие проблемы также, хотя, так как Вы пытаетесь запустить приложение, которое связывается с X-сервером от крона. Если так, необходимо использовать:
DISPLAY=":0.0"
XAUTHORITY="/home/YOURUSERNAME/.Xauthority"
XDG_RUNTIME_DIR="/run/user/1000"
* * * * * /home/username/.crons/wallpaperSlider.sh