我有一个 python 脚本,我在其中使用 Zenity 来显示一些通知。代码片段如下:
if message_list:
pretty_print(message_list)
os.system("/usr/bin/zenity --notification --text='You have unread messages'")
当我正常运行此脚本时,一切正常,即出现对话框并显示消息。但是当我在 crontab 中安排这个脚本时,什么都没有出现。有什么解决办法吗?
没有理智的方法可以从cron
. 不能保证有一个用户,不能保证只有一个用户,不能保证正在使用的用户想要甚至能够与您的软件交互;他们中的一些人可能是伪用户或远程访问昂贵的计量互联网或只是闲置或其他。
通常的解决方案是服务器/客户端架构,其中运行的任何内容都cron
通过某种 IPC 机制提供其结果,并且想要结果的用户从其 X11 会话(或 shell,或者你有什么)中运行客户端。
创建一个脚本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")
那就是如果您想使用您提到的解决方案。