用户crontab + python +随机壁纸=不起作用?
题
我有一个Python脚本,可以通过GCONF正确将桌面壁纸设置为给定文件夹中的随机图片。
然后,我的crontab中有以下条目
* * * * * python /home/bolster/bin/change-background.py
Syslog正确报告执行
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)
但是没有桌面变化,有什么想法吗?
解决方案
您的脚本取决于 DISPLAY
环境变量,当您在X会话中执行shell脚本时设置,但是当脚本从cron运行时,请尚未设置。
其他提示
要设置显示环境变量,我将其直接放在crontab中。另外,我将使脚本可执行,并给它一个适当的标题(#!/usr/bin/env python
),以便可以直接执行。此外,您可以依靠crontab运行时将PWD设置为家。
我的crontab看起来像这样:
DISPLAY=:0.0
* * * * * bin/change-background.py
您还可以设置路径(以与显示相同的方式),以便 bin/
甚至不需要。
克朗塔邦中设置环境的主要陷阱是值是 不是 可变交互。例如,这不是给出预期的结果:
PATH=$HOME/bin:$PATH
根据Bolo的观察,我忘了在显示屏中构建脚本或crontab。
最简单的解决方案是用 env DISPLAY=:0.0
所以:
* * * * * env DISPLAY=:0.0 python /home/bolster/bin/change-background.py
不隶属于 StackOverflow