【发布时间】:2013-11-24 13:05:00
【问题描述】:
我在同时使用这三种技术时遇到了一些困难。
Cron 条目:
* * * * * /usr/bin/python /path/to/python/email/program.py
Python 程序:
1 #!/usr/bin/python
2
3 import imaplib
4 import os
5 import sys
6 import pynotify
7
8 if not pynotify.init('Emails'):
9 sys.exit(1)
10
11 with open('/path/to/python/email/count.tmp', 'r') as file:
12 data = int(file.read().strip())
13 client = imaplib.IMAP4_SSL('mail.sever.com', '993')
14 client.login('user@server.com', 'password')
15 client.select()
16
17 unseen = client.search(None, 'UnSeen')[1][0].split()
18
19 if unseen[0] == '':
20 pass
21 else:
22 if len(unseen) != data:
23 n = pynotify.Notification(str(len(unseen) - data) + " New Messages",
24 str(len(unseen)) + " Unread Messages",
25 "file:///path/to/python/email/mail.png")
26 if not n.show():
27 print "Fail"
28 sys.exit(1)
30 with open('/path/to/python/email/count.tmp', 'w') as file:
31 file.write(str(len(unseen)))
脚本在单独运行时可以正常运行,但在安排为 cron 作业时不会运行。我检查了系统日志,它说脚本正在运行,我已经以 sudo 身份运行日志中的行来验证。
我查过了
Execute python Script on Crontab
和
但似乎都没有,也没有进一步的链接似乎解决了这种组合。
有什么想法吗?
-更新 1-
由于 pynotify 似乎根本不允许程序运行,我已将他们的调用替换为 os.system 调用。至少这会更新小 tmp 文件,但仍然没有通知。
os.system('/usr/bin/X11/notify-send "{} New Messages" "{} Unread Messages"'.format(len(unseen) - data, len(unseen))
-更新 2-
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/__init__.py:57: GtkWarning: could not open display
warnings.warn(str(e), _gtk.Warning)
** (other.py:16509): WARNING **: Command line `dbus-launch --autolaunch=91bdcc4a583bfb56734fbe1200000010 --binary-syntax --close-stderr' exited with non-zero exit status 1: Autolaunch error: X11 initialization failed.\n
【问题讨论】: