Python os调用在crontab中不起作用

时间:2012-08-29 07:13:53

标签: python cron

我目前正在编写一个脚本来每隔一分钟更改一次桌面背景,但是当我将输出传输到我得到的文件时:

** (process:22375): WARNING **: Command line `dbus-launch --autolaunch=134db3df26c562acad27e9cf00000009 --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n

python脚本如下:

#!/usr/bin/env python

import os, random

def main():

    files =  os.listdir("/home/benkaiser/scripts/XKCD_IMAGES");
    nameOfImg = random.choice(files)

    os.system("gsettings set org.gnome.desktop.background picture-uri file:///home/benkaiser/scripts/XKCD_IMAGES/" + nameOfImg)

    print "Finished Fine!";

    return 0

if __name__ == '__main__':
    main()

crontab命令是:     * * * * * /home/benkaiser/scripts/changeDesktop.py

我已经确定该文件是可执行的,这不是问题所在。这似乎与提供错误的os.system调用有关

3 个答案:

答案 0 :(得分:1)

问题是gsettings需要知道要运行的屏幕。如果你在终端中运行它,它将在终端所在的屏幕上运行,但是如果你在crontab中运行它,它的上下文中没有任何屏幕。

您可以通过向gsettings命令或环境变量添加开关来指定显示。这取决于是否曾在无法推断显示的情况下编写gsettings。

答案 1 :(得分:0)

Crontab通常不了解X服务器。试试,

* * * * * DISPLAY=:0 /home/benkaiser/scripts/changeDesktop.py

我不确定它是否会起作用。

答案 2 :(得分:0)

不确定您的设置,但添加DISPLAY=:0.0对我有用。 Ubuntu 12.04,gnome3,双显示器

在crontab中有这个条目

* * * * * DISPLAY=:0.0 /home/german/change-bg.py