2010-11-26 53 views
4

我寫過一個腳本,它使用pynotify來提醒。它運行得很好,當我運行它時(python script.py),但是從cron與00 * * * * myname python ~/scripts/script.py運行時,它不起作用!我不知道爲什麼。這裏的片段:PyNotify無法從cron工作?

 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)>並沒有錯誤,所以我不太肯定別人看。

回答

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

+0

這是問題!謝謝! – 2010-11-26 01:12:55