5

gconfを介してデスクトップの壁紙を特定のフォルダー内のランダムな画像に正しく設定するpythonスクリプトがあります。

次に、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)

しかし、デスクトップの変更はありません。何かアイデアはありますか?

4

3 に答える 3

6

DISPLAYスクリプトは、Xセッションでシェルからスクリプトを実行するときに設定される環境変数に依存しますが、スクリプトがcronから実行されると設定解除されます。

于 2010-04-26T13:27:09.777 に答える
2

Bolo の観察によると、DISPLAY をスクリプトまたは crontab に組み込むことを忘れていました。

最も簡単な解決策は、crontab の前にenv DISPLAY=:0.0

それで:

* * * * * env DISPLAY=:0.0 python /home/bolster/bin/change-background.py
于 2010-04-26T13:35:07.663 に答える
2

DISPLAY 環境変数を設定するには、crontab に直接配置します。また、スクリプトを実行可能にし、適切なヘッダー ( #!/usr/bin/env python) を付けて、直接実行できるようにします。さらに、crontab の実行時に PWD が HOME に設定されていることに依存できます。

私のcrontabは次のようになります。

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

PATH を (DISPLAY と同じ方法で) 設定することもできるので、bin/は必要ありません。


crontab で環境を設定する際の主な落とし穴は、値が変数補間されないことです。たとえば、これは期待される結果を与えません。

PATH=$HOME/bin:$PATH
于 2010-04-26T16:06:29.880 に答える