4

我编写了一个使用 pynotify 发出警报的脚本。当我运行它时它工作得很好(python script.py),但是当从 cron 运行时00 * * * * myname python ~/scripts/script.py,它不起作用!我不知道为什么。这是片段:

        if os.path.isfile(os.path.expanduser('~/.thumbnails/normal')+'/'+thumbnail):
            n = pynotify.Notification(video_file[0], 'finished download', os.path.expanduser('~/.thumbnails')+'/'+thumbnail)
        else:
            n = pynotify.Notification(video_file[0], 'finished download', '/usr/share/icons/gnome/48x48/mimetypes/gnome-mime-application-x-shockwave-flash.png')
        print n
        n.show()

将输出定向到 ~/log.file 给出:<pynotify.Notification object at 0x16d4e60 (NotifyNotification at 0x13804e0)>并且没有错误,所以我不太确定还能去哪里看。

4

1 回答 1

5

我对 cron 工作没有那么深入,但我对 pynotify 有点了解。它使用 libnotify 和一些 DBUS 的东西,所以它在某个地方调用了 DBUS 和 iirc,它还传递了应该显示通知的显示 ID。

现在,默认情况下 cron 不适用于 GUI 应用程序,您必须指定一个显示器供它们使用:

00 * * * * myname env DISPLAY=:0 python ~/scripts/script.py

这将使 cron 使用当前显示(桌面)。

如果您在 Ubuntu 上运行此页面,您可能会感兴趣:
https ://help.ubuntu.com/community/CronHowto

于 2010-11-26T00:59:44.130 回答