2013-12-21 120 views
1

我有一个cron作业cron作业无法启动

* * * * * /home/username/start.sh that runs every minutes 

start.sh内容:

touch /home/username/test.txt 
firefox 

cron作业改变了test.txt时间戳,但无法打开firefox。我曾尝试设置env变量,但它似乎不起作用。

回答

2

您需要指向firefox的绝对路径,您可以使用which firefox作为普通用户。价值可能是例如/usr/bin/firefox

此外,firefox是一个GUI程序,但cron作业在后台运行,并且不知道X,因此您无法以这种方式启动新的Firefox客户端。例如,考虑您是否通过网络和本地在同一台计算机上有两个桌面登录。从cron运行时,Firefox应该显示在哪里?如果没有更复杂的设置(例如rdesktop),它无法显示在两个地方。您可以一个给定的显示上运行它,如果你添加到环境中,像这样(未经):

export DISPLAY=:0.0 
/usr/bin/firefox 

但运行它的第一次,它已经运行后,Firefox会抗议,所以这只是如果您每分钟关闭一次窗口,都会开始工作。

你想完成什么?

如果你想check that a web server is running,你可以使用shell工具,如wgetcurl(其中一个很可能已经安装)以刺激它。如果你想做测试(如果你想开发出好的软件,那么你会这么做),看看框架如Seleniumnodeunit

+0

是啊,我试了这个。它没有工作。如果我手动运行start.sh,firefox会打开,但不会与cronjob一起使用 – renacimiento

+0

实际上,我写了一个脚本,它读取节点进程pid,并检查该pid是否正在运行,如果没有,它启动一个nohup节点进程,并将新的pid写入文件。我将运行此脚本,每隔5分钟用cronjob运行。现在,我无法使用cronjob运行此脚本.SO认为可能会尝试使用cron作业来测试cronjob并遇到这一个。 – renacimiento

+0

感谢您的回答:)我有一个命令ps -ef | grep $ pidd | grep -v grep在shell脚本内运行良好。 但是这个声明不运行 如果ps -ef | grep $ pidd | grep -v grep;然后 – renacimiento