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


18

我需要从Firefox运行Java小程序。问题是,我需要从cron运行此Firefox。如果我从命令行运行并且工作正常,但是将命令放在cron中会失败:

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

1
如果您需要的不仅仅是打开它的功能,可以使用Selenium的java库。
Övünç倚天

您还可以将Selenium与python结合使用,这对于脚本来说更容易。
ESala 2015年

Answers:


25

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

如果仅运行一台X服务器,则只需指定显示即可:

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

您可能需要付出更多的努力才能确定显示器位于什么显示器之下,而不是假设它是显示器,:0但这在大多数情况下都可能起作用。

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


我找到了这个答案,但仍然无法启动Firefox。经过几次搜索后,我发现我需要以有效用户身份运行,而不是从root用户身份运行。* * * * *“ DISPLAY =:0.0 / usr / bin / firefox -new-window x.com/iqms/packetloss/iqmspacket2.html
fadabi Nawi 2014年

1
@fadabiNawi一种更简单的管理方法是将cron行安装到正确用户的crontab中。以您想要的用户身份登录,以及crontab -e
Oli

7

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

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

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

q


这很有帮助,非常感谢!只需注意:Firefox的完整路径是强制性的,我没有意识到这一点,并且它不起作用
aexl
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.