Крон, не работающий

Записал короткий сценарий оболочки "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. Кроме того, я удалил начало строк комментария # кроме хижины):

#!/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:~$ 

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

0
задан 26 February 2013 в 23:13

2 ответа

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

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

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

Совет Offtopic: это не правило просто форма, чтобы держать сценарии отдельно, использовать /usr/local/bin для Вас администраторские сценарии.:)

0
ответ дан 26 February 2013 в 23:13

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

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

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

> /dev/null 2>&1

... и даже подавив коды выхода из ошибок, добавив (далее): [ 1117]

|| /bin/true

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

MAILTO=""

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

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

0
ответ дан 26 February 2013 в 23:13

Другие вопросы по тегам:

Похожие вопросы: