Search code examples
crontomcat7restart

Script file restart Tomcat runs manually success, but fails on Crontab


I'm newbie to shell scripting. I have a Tomcat server build on : /APP/apache-tomcat-7.0.42

I want my tomcat automatic restart one time per day, so I write a file test.sh (/APP/apache-tomcat-7.0.42/test.sh) with content :

/APP/apache-tomcat-7.0.42/bin/shutdown.sh && echo "Tomcat was already shutdown"
kill -9 $(lsof -t -i:8080 -sTCP:LISTEN)
/APP/apache-tomcat-7.0.42/bin/startup.sh

And I install on crontab: 0 9 * * * /APP/apache-tomcat-7.0.42/test.sh

But not working, although I try run manually, and success.

I checked crontab : /etc/init.d/crond status, it is running.

I dont understand, help me!


Solution

  • Oh, I resloved!

    If you can do it manually, from a log in session, but not automatically from startup or from cron, I'm 99% sure it's because environment variables like JAVA_HOME and CATALINA_HOME are not being set for the startup and cron environments.

    You need get info in this session:

    > echo $JAVA_HOME

    > JAVA_HOME="/usr/java/jdk1.6.0_41"

    > echo $CATALINA_HOME

    > CATALINA_HOME="/APP/apache-tomcat-7.0.42"

    Then, Result file crontab:

    export PATH="/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/tomcat/bin"

    export JAVA_HOME="/usr/java/jdk1.6.0_41"

    export CATALINA_HOME="/APP/apache-tomcat-7.0.42"

    /APP/apache-tomcat-7.0.42/bin/shutdown.sh

    kill -9 $(lsof -t -i:8080 -sTCP:LISTEN)

    /APP/apache-tomcat-7.0.42/bin/startup.sh