我需要从 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 上)