Крон не работает

Крон не работает

Написал короткий скрипт оболочки «wallch.sh» для случайной смены фона рабочего стола:

DIR="/home/user/Wallpapers"
PIC=$(ls $DIR/*.jpg | shuf -n1)
FIL="file://"
gsettings set org.gnome.desktop.background picture-uri $FIL$PIC

И скопировал его в /bin/, затем sudo chmod 755 /bin/wallch.shв него. Это может легко работать с терминала гладко, без каких-либо ошибок.

Однако когда я добавляю строку в crontab (делаю это из терминала как пользователь), например:

* * * * * /bin/wallch.sh

Он просто не запускался. Теоретически он должен был запускаться каждую минуту.

/var/log/syslogговорит:

Feb 25 19:36:01 user-Ubuntu CRON[11762]: (user) CMD (/bin/wallch.sh # JOB_ID_3)
Feb 25 19:36:01 user-Ubuntu CRON[11761]: (CRON) info (No MTA installed, discarding output)
Feb 25 19:37:01 user-Ubuntu CRON[11790]: (user) CMD (/bin/wallch.sh # JOB_ID_3)
Feb 25 19:37:01 user-Ubuntu CRON[11789]: (CRON) info (No MTA installed, discarding output)
Feb 25 19:38:01 user-Ubuntu CRON[11828]: (user) CMD (/bin/wallch.sh # JOB_ID_3)
Feb 25 19:38:01 user-Ubuntu CRON[11827]: (CRON) info (No MTA installed, discarding output)

Какие-либо предложения?

Обновлять:

Скрипт, который я написал (обратите внимание, что я изменил имя файла, теперь это /bin/wallch. Также я удалил строки комментариев, начинающиеся с , #за исключением shebang):

#!/bin/sh
DIR="/home/user/Wallpapers"
PIC=$(ls $DIR/*.jpg | shuf -n1)
FIL="file://"
gsettings set org.gnome.desktop.background picture-uri $FIL$PIC

Выход stat /bin/wallch:

user@user-Ubuntu:~$ stat /bin/wallch
File: `/bin/wallch'
Size: 484           Blocks: 8          IO Block: 4096   regular file
Device: 806h/2054d  Inode: 130389      Links: 1
Access: (4755/-rwsr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2013-02-26 11:03:01.727198732 -0600
Modify: 2013-02-26 10:37:46.727135926 -0600
Change: 2013-02-26 11:02:06.215196433 -0600
Birth: -
user@user-Ubuntu:~$ 

Спасибо за любые ответы!

решение1

Да, вы можете установить любой пакет MTA. Если у вас уже есть SMTP-сервер (MTA) где-либо, который вы можете использовать, выберите nullmailer. В противном случае вы можете использовать postfix(требует некоторой работы) или , courier-mtaкоторый также поставляется с разумными настройками по умолчанию (и несколько проще для новичков, на мой взгляд).

Имена фиксированной ширины выше — это имена пакетов в Ubuntu. Так что apt-get install <packagename>вы установите MTA. Основная проблема, похоже, в том, что вы не настроили MTA и поэтому cronне можете отправлять почту. Само задание не указывает на ошибку, судя по выводу журнала, который я вижу.

Примечание: вы также можете подавить любой вывод ваших заданий, добавив (в строку задания):

> /dev/null 2>&1

... и даже подавить коды выхода из ошибок с помощью добавления (далее):

|| /bin/true

... Я бы не рекомендовал этого, однако. Также настройка MAILTOв вашем crontab(см. man 5 crontab) является еще одним вариантом здесь. Но это своего рода "глобальный" для соответствующего crontab:

MAILTO=""

Что cronотправляет по почте, так это вывод (stdout/stderr, если он находит MTA, который есть) задания, которое он выполнил. И он делает это по умолчанию, да. Также коды выхода ошибок (ненулевые) приведут к отправке вывода по почте.

Однако он также должен иметь возможность запустить задание, что во всех случаях требует, чтобы файл был исполняемым ( chmod a+x ...) или чтобы в случае скрипта вы добавили путь к интерпретатору скрипта и чтобы в случае скрипта в начале файла присутствовала соответствующая строка с хэшбэнгом.

решение2

используйте вместо этого эту строку cron

* * * * * DISPLAY=:0 GSETTINGS_BACKEND=dconf /bin/wallch.sh

можно также использовать */2 в колонке часов для смены фона каждые два часа (все четные часы)

Совет не по теме: это не правило, а просто форма разделения скриптов, используйте /usr/local/binсвои административные скрипты. :)

Связанный контент