【发布时间】:2013-12-16 16:07:35
【问题描述】:
我有一个使用以下命令的 python-2.7.4 守护程序脚本:
from os import popen
cmd = 'notify-send --icon=ICON_FILE --urgency=critical -t 10000 \'SCRIPT_NAME\' \'Here is my message\''
popen('su USER -c -p \"'+cmd+'\"')
此命令在 python 命令 shell 中作为 ROOT 可以正常工作。但是,它在作为守护程序运行时不起作用。守护程序运行良好(在轮询时记录数据),但没有提供所需的用户反馈。
守护进程使用 Upstart 和 /etc/init/SCRIPT.conf 文件在 Mint (Ubuntu) 上运行。 /var/log/upstart/SCRIPT.log 文件在重启后有一个条目:
/usr/lib/python2.7/dist-packages/gtk-2.0/gtk/_init_.py:57: GtkWarning: 无法打开显示警告.warn( str(e), _gtk.Warning)
我发现使用以下命令登录的用户:
popen('users')
从我发现的其他情况来看,将消息发送到其他用户显示器存在安全问题,并且由于守护程序从 ROOT 运行,它返回上述 GtkWarning。如何让我的 python 守护进程通过 osd 和 notify-send 提供用户反馈?
【问题讨论】:
标签: linux ubuntu python-2.7 gtk upstart