Страница 1 из 2

Срабатывает пользовательский крон, но не работает скрипт.

Добавлено: 31 июл 2012, 09:44
Phantom
Сделал я небольшой скрипт по рандомной смене обоев рабочего стола. Занес в крон(естественно под обычным пользователем) с интервалом минута. Он срабатывает, но обои не меняются. Если скрипт просто запустить под тем же пользователем, то обои красиво меняются. Подскажите где запердуха?
Собственно сам скрипт

Код: Выделить всё

#!/bin/sh
PICT=$(ls /home/andrew/Walpapers | shuf -n 1)
gsettings set org.gnome.desktop.background picture-uri "file:///home/andrew/Walpapers/$PICT"
exit 0

Запись по crontab -e

Код: Выделить всё

*/1 * * * *     /usr/bin/autowalpaper.sh
Сислоги

Код: Выделить всё

Jul 31 07:41:01 localhost CRON[2238]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:42:01 localhost CRON[2336]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:43:01 localhost CRON[2389]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:44:01 localhost CRON[2428]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:45:01 localhost CRON[2524]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:46:01 localhost CRON[2643]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:47:01 localhost CRON[2741]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:48:01 localhost CRON[2779]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:49:01 localhost CRON[2859]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:50:01 localhost CRON[2901]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Jul 31 07:51:01 localhost CRON[2965]: (andrew) CMD (/usr/bin/autowalpaper.sh)
Ошибок нигде нет. *WALL BREAK*
По правам

Код: Выделить всё

-rwxr-xr-x 1 andrew andrew 156 2012-07-31 07:57 /usr/bin/autowalpaper.sh
Думал, что рандом затыкается на одной и той же картинке, но вручную он всегда разный....

Re: Срабатывает пользовательский крон, но не работает скрипт

Добавлено: 31 июл 2012, 09:54
Infernal Flame
Phantom
а может имеет смысл перекинуть скрипт в хомдир пользователя, а не держать его в /usr/bin ?

была как-то подобная затыка... пока предварительно в скрипте не делал cd в директорию с исполняемым барахлом, которое надо было юзать, он посылал далеко и надолго.

Re: Срабатывает пользовательский крон, но не работает скрипт

Добавлено: 31 июл 2012, 10:23
Phantom
Перенес в хоум директорию. Те же грабли.

Re: Срабатывает пользовательский крон, но не работает скрипт

Добавлено: 31 июл 2012, 12:18
Infernal Flame
Phantom
а в скрипет еще дописал ?

Re: Срабатывает пользовательский крон, но не работает скрипт

Добавлено: 01 авг 2012, 10:11
Phantom
#!/bin/sh
cd ~/
PICT=$(ls Walpapers | shuf -n 1)
gsettings set org.gnome.desktop.background picture-uri "file:///home/andrew/Walpapers/$PICT"
exit 0
Запускается, но не меняет обои. Такое впечатление, чо крон действует из какого то своего окружения, хотя должен из пользовательского...

Re: Срабатывает пользовательский крон, но не работает скрипт

Добавлено: 01 авг 2012, 12:41
Infernal Flame
Phantom
может стоит попробовать еще смену пользователя?

Код: Выделить всё

su - username
а сам скрипт стартовать от рута - тогда пароль не будет спрашивать....

Re: Срабатывает пользовательский крон, но не работает скрипт

Добавлено: 01 авг 2012, 13:15
Phantom
Не ну это совсем не выход. Запускать процесс от рута, чтобы прыгать в окружение пользователя и запускать там скрипт, потом же надо из окружения вывалиться иначе в процессах будет su висеть. Как то громоздко и по моему идеологически не верно. Эх.....не хочу ставить графическую свистелку для этого....

Re: Срабатывает пользовательский крон, но не работает скрипт

Добавлено: 01 авг 2012, 14:29
Gen1us2k
Запусти скрипт от своего юзера.

*/1 * * * * $user /usr/bin/autowalpaper.sh

Re: Срабатывает пользовательский крон, но не работает скрипт

Добавлено: 01 авг 2012, 15:24
Infernal Flame
Gen1us2k
йопт... а я и не обратил внимание, что в кроне юзер-то и не стоит... точно пора идти новые очки заказывать..

Re: Срабатывает пользовательский крон, но не работает скрипт

Добавлено: 01 авг 2012, 17:42
Phantom
Разницы никакой. Только указывает дополнительно пользователя. Я тут кое что нарыл. Попробую чуть погодя. Вот пример.

Код: Выделить всё

Все решилось переносом в пользовательский crontab, Специалисты и так поняли, а другим поясню,
создал файл /usr/home/user/test c тремя строками:
  
SHELL=/bin/sh
MAILTO=lab
*/1 * * * /home/user/mail/tarifsender.sh

Далее (из под user):

crontab -l  - проверяем есть у пользователя свой кронтаб.

crontab -u user /usr/home/user/test - создаем crontab из файла test.

размещаем файл /usr/home/user/tarifsender.sh c единственной строкой:

/bin/echo "Text pisma"|/usr/local/bin/mutt -x -a /tmp/mess.txt  -s "tema" user@host.ru

Все работает
Вот у человека получилось решить так.