我有一个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")
那就是您要使用提到的解决方案。