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

fad*_*awi 25 firefox cron java

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

*/1 * * * * firefox http://domain.com/iqms/packetloss/iqmspacket2.html
Run Code Online (Sandbox Code Playgroud)

Oli*_*Oli 33

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

如果您只有一台 X 服务器在运行,那么仅指定显示可能会起作用:

* * * * *    DISPLAY=:0 firefox ...
Run Code Online (Sandbox Code Playgroud)

您可能会付出更多的努力来确定它所在的显示器,而不是假设它是,:0但这可能在大多数情况下都有效。

如果您只需要重新加载很多东西,请查看Tab Auto Reload或类似的 Firefox 插件。

  • @fadabiNawi 一种更简单的管理方法是将 cron 行安装到正确用户的 crontab 中。以您想要的身份登录,然后使用 `crontab -e` (2认同)

fad*_*awi 10

我找到了这个答案,我正在寻找除 oli 之外的答案:

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

* * * * * su fadabi -c "DISPLAY=:0.0 /usr/bin/firefox -new-window x.com/iqms/packetloss/iqmspacket2.html"; 
Run Code Online (Sandbox Code Playgroud)

tq


小智 7

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