如何从 cron 启动 GUI 应用程序?

如何从 cron 启动 GUI 应用程序?

我需要从 Firefox 运行 Java 小程序。问题是,我需要从 cron 运行此 Firefox。如果我从命令行运行,它工作正常,但当将命令放入 cron 时,它失败了:

*/1 * * * * firefox http://domain.com/iqms/packetloss/iqmspacket2.html

答案1

Cron 在对显示管理器一无所知的环境中运行($DISPLAY未设置)。您测试的终端窗口已为其设置了此设置。如果您在“真实”终端或通过 SSH 尝试,您会看到它中断。

如果你只运行了一个 X 服务器,那么只需指定显示就可以了:

* * * * *    DISPLAY=:0 firefox ...

您可能需要花费更多精力去弄清楚它位于哪个显示器下方,而不是假设它位于哪个显示器下方,:0但这可能在大多数情况下都是可行的。

如果你只是需要经常重新加载一些东西,看看标签自动重新加载或类似的 Firefox 插件。

答案2

我找到了这个答案,我正在寻找 oli 的补充:

经过几次搜索后,我发现我需要以有效用户身份运行,而不是以 root 用户身份运行。

* * * * * su fadabi -c "DISPLAY=:0.0 /usr/bin/firefox -new-window x.com/iqms/packetloss/iqmspacket2.html"; 

答案3

对我来说DISPLAY=:0没用。当我echo $DISPLAY在终端中检查时,它返回了1。所以DISPLAY=:1对我来说有用。(在 Ubuntu 20.04 上)

相关内容