Zenity在crontab的Python脚本中无法工作
我有一个Python脚本,里面用Zenity来显示一些通知。代码片段如下:
if message_list:
pretty_print(message_list)
os.system("/usr/bin/zenity --notification --text='You have unread messages'")
当我正常运行这个脚本时,一切都很好,也就是说对话框会出现,消息也会显示出来。但是当我把这个脚本放到定时任务(crontab)中去运行时,就什么都不显示了。有没有什么解决办法呢?
2 个回答
0
创建一个脚本叫做 info.sh
(记得给它执行权限哦):
#!/bin/bash
xhost +
/usr/bin/zenity --notification --text='You have unread messages'
然后在你的脚本里:
if message_list:
pretty_print(message_list)
os.system("./info.sh")
这是如果你想使用你提到的解决方案。
0
从 cron
运行交互式命令是没有靠谱的方法的。因为我们不能保证有用户在使用,也不能保证只有一个用户在使用,更不能保证这些用户愿意或者能够和你的软件进行互动。有些用户可能是伪用户,或者在使用昂贵的网络流量,或者只是闲着,反正情况各异。
通常的解决办法是采用服务器/客户端的架构,也就是说,从 cron
运行的程序会通过某种进程间通信的方式把结果提供出来,而想要查看结果的用户则可以在他们的 X11 会话(或者命令行等)中运行一个客户端程序。