PyNotify не работает от cron? - PullRequest
4 голосов
/ 26 ноября 2010

Я написал скрипт, который использует 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 голосов
/ 26 ноября 2010

Я не настолько глубоко увлечен работой cron, но немного знаю о pynotify.Он использует libnotify и некоторые вещи из DBUS, поэтому где-то он делает вызов DBUS и iirc также передает идентификатор дисплея, на котором должно отображаться уведомление.

Теперь по умолчанию cron не работают с GUIприложениям, вы должны указать отображение для их использования:

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

Это заставит хрон использовать текущий дисплей (Desktop).

Если вы работаете в Ubuntu, эта страницаможет быть интересным для вас:
https://help.ubuntu.com/community/CronHowto

...