2010-11-26 4 views
4

Ich habe ein Skript geschrieben, das pynotify verwendet, um eine Warnung zu geben. es funktioniert gut, wenn ich es (python script.py) ausführen, aber wenn es von Cron mit ausgeführt wird, funktioniert es nicht! Ich habe keine Ahnung warum. Hier ist der Code-Schnipsel:PyNotify funktioniert nicht von 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() 

Richten der Ausgabe zu ~/log.file gibt: <pynotify.Notification object at 0x16d4e60 (NotifyNotification at 0x13804e0)> und keine Fehler, so dass ich bin mir nicht ganz sicher, wo sonst zu suchen.

Antwort

5

Ich bin nicht so tief in Cron Jobs, aber ich weiß ein bisschen über pynotify. Es benutzt libnotify und einige DBUS-Sachen, also irgendwo, wo es den Aufruf an den DBUS und die iirc gibt, übergibt es auch die Anzeige-ID, auf der die Benachrichtigung angezeigt werden soll.

nun standardmäßig cron die mit GUI-Anwendungen nicht funktionieren, müssen Sie eine Anzeige angeben, für sie zu benutzen:

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

Dies ist der cron die aktuelle Anzeige verwenden machen (Desktop).

Wenn Sie auf Ubuntu laufen diese Seite könnte für Sie von Interesse sein:
https://help.ubuntu.com/community/CronHowto

+0

, das war das Problem! Vielen Dank! –

+0

@Ivo Wetzel nette Erklärung, aber es funktioniert nicht für mich in gnome ubuntu – roshan