通过cronjob启动Tomcat

为了确保Tomcat一直在运行,我写了下面的shell脚本

#!/bin/bash status="$(curl -s http://www.domain.com/check)" if [ "$status" != "OK" ] then /opt/apache-tomcat-8.0.15/bin/startup.sh /usr/sbin/sendmail [email protected] < email.txt fi 

并通过添加到crontab

*/1 * * * * /opt/scripts/check.sh

现在,如果我手动closures服务器,那么我每分钟都会收到一封电子邮件,但由于某种原因,脚本不会启动Tomcat。 但是,如果我手动执行check.sh ,我收到一封电子邮件,Tomcat又开始运行。

关于为什么将脚本添加到crontab的任何想法都不启动Tomcat?

最可能的答案是环境variables,即一个交互式shell有很多(包括一个相当完整的$ PATH),而对于从cron运行的程序,它们通常是非常有限的(包括一个缩写path)。

@克莱格·米斯凯尔:谢谢你指点我正确的方向。 这就是我解决问题的方法:

首先,我将以下代码行添加到/etc/crontab

 SHELL=/bin/bash PATH=/opt/jdk1.8.0_25/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin MAILTO=root HOME=/root JAVA_HOME=/opt/jdk1.8.0_25 

其次,我更新了shell脚本:

 #!/bin/bash export JAVA_HOME=/opt/jdk1.8.0_25 export PATH=$PATH:/opt/jdk1.8.0_25/bin status="$(curl -s http://www.domain.com/check)" if [ "$status" != "OK" ] then /opt/apache-tomcat-8.0.15/bin/startup.sh /usr/sbin/sendmail [email protected] < email.txt fi 

crontab -e的条目我根本没有碰到。

再次感谢,我希望这有助于!