如何从 crontab 或 rc.local 启动 python GUI 应用程序?

如何从 crontab 或 rc.local 启动 python GUI 应用程序?

它需要以 root 身份运行才能正常工作。我尝试过:

DISPLAY=:0 /usr/bin/gtk-launch myapp
DISPLAY=:0 /usr/bin/python /my/application/gui.py

第二行基本上就是 myapp.desktop 里面的内容。这两行在终端 (ctr+alt+t) 和模拟控制台 (ctrl+alt+F1) 中都有效,但在 rc.local 和 crontab 中无效。后者可能吗?如果不可能,那为什么?

更新:我相信将一个类似于 crontab 的脚本放入 /etc/xdg/autostart/mycrontab.desktop 是一种解决方法。但是,我很好奇如何使用 crontab 和 rc.local 来实现这一点。

答案1

该解决方案的灵感来自于通过 crontab 启动 Rhythmbox。 这

XAUTHORITY=/home/name/.Xauthority DISPLAY=:0 /usr/bin/gtk-launch myapp

或这个

XAUTHORITY=/home/name/.Xauthority DISPLAY=:0 gtk-launch myapp

/usr/share/applications/myapp.desktop可以。然后你还需要包含以下命令的文件:

sudo -b /usr/bin/python /my/application/gui.py

我用来sudo -b隐藏弹出的终端窗口。

原因是“终端中的 root”和“rc.local 和 crontab 中的 root”具有不同的环境变量。有趣的是,如果我还设置了DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-wpHtRgNiWP从用户那里获取的,那么它不起作用。

相关内容