Пользователь Crontab + Python + Случайные обои = не работа?

У меня есть сценарий Python, который правильно устанавливает обои для рабочего стола через gconf к случайному изображению в данной папке.

У меня затем есть следующая запись в моем crontab

* * * * * python /home/bolster/bin/change-background.py

И системный журнал правильно сообщает о выполнении

Apr 26 14:11:01 bolster-desktop CRON[9751]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:12:01 bolster-desktop CRON[9836]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:13:01 bolster-desktop CRON[9860]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:14:01 bolster-desktop CRON[9905]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:15:01 bolster-desktop CRON[9948]: (bolster) CMD (python /home/bolster/bin/change-background.py)
Apr 26 14:16:01 bolster-desktop CRON[9983]: (bolster) CMD (python /home/bolster/bin/change-background.py)

Но никакой desktopy changey, Какие-либо идеи?

5
задан Bolster 26 April 2010 в 13:22
поделиться

3 ответа

Ваш сценарий зависит от переменной среды DISPLAY , которая устанавливается при выполнении сценарий из оболочки в сеансе X, но не устанавливается, когда сценарий запускается из cron.

6
ответ дан 13 December 2019 в 22:04
поделиться

Чтобы установить переменную среды DISPLAY, я бы поместил ее прямо в crontab. Кроме того, я бы сделал исполняемый файл сценария и дал ему соответствующий заголовок ( #! / Usr / bin / env python ), чтобы он мог выполняться напрямую. Кроме того, вы можете быть уверены, что PWD будет установлен в HOME при запуске crontab.

Мой crontab будет выглядеть так:

DISPLAY=:0.0
* * * * * bin/change-background.py

Вы также можете установить PATH (таким же образом, как DISPLAY), чтобы bin / даже не понадобился.


Основная проблема при настройке среды в crontab заключается в том, что значения не интерполируются переменными. Например, это не дает ожидаемых результатов:

PATH=$HOME/bin:$PATH
2
ответ дан 13 December 2019 в 22:04
поделиться

По наблюдениям Боло, я забыл о встраивании ДИСПЛЕЯ в скрипт или crontab.

Самое простое решение - добавить к crontab env DISPLAY =: 0.0

так:

* * * * * env DISPLAY=:0.0 python /home/bolster/bin/change-background.py
2
ответ дан 13 December 2019 в 22:04
поделиться
Другие вопросы по тегам:

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