PyNotify在cron中无法工作?
我写了一个脚本,用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)>
,没有错误信息,所以我也不知道该去哪里找问题。
1 个回答
5
我对定时任务(cron jobs)了解得不算太深,但我知道一点关于pynotify的事情。它使用了libnotify和一些DBUS的东西,所以它会在某个地方调用DBUS,并且我记得它还会传递一个显示ID,用来指定通知应该显示在哪个地方。
现在,默认情况下,cron任务是不能和图形界面应用程序一起工作的,你需要指定一个显示器供它们使用:
00 * * * * myname env DISPLAY=:0 python ~/scripts/script.py
这样设置后,cron就会使用当前的显示器(桌面)。
如果你在使用Ubuntu,这个页面可能对你有帮助:
https://help.ubuntu.com/community/CronHowto