Zenity在crontab的Python脚本中无法工作

0 投票
2 回答
521 浏览
提问于 2025-04-17 21:40

我有一个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 会话(或者命令行等)中运行一个客户端程序。

撰写回答