最近tomcat也是跑一段就挂了,那么我们的处理方式就是写一个tomcat的shell脚本,
目的有两个:一是判断进程id是否存在,存在继续运行,不存在就重新启动。
那么这个计划任务如何写呢、
#!/bin/bash source /etc/profile export home=/home/UCMSServer/tomcat/bin export name=`ps aux |grep -v grep | grep "/home/UCMSServer/tomcat/conf/logging.properties" |awk \'{print $2}\'` if [ $name -ge 0 ] then echo "server runing..." else sh $home/startup.sh fi 到点并输出日志 Jun 5 15:50:01 localhost CROND[8081]: (root) CMD (sh /home/cms.sh)
这样的shell脚本出现的问题:手动可以完成重启tomcat,但是自己运行并不能执行计划任务。
归结:
1、crontab与环境变量的关系 手动能执行但是任务计划不执行,很明显就是crontab并不能识别脚本里面的变量。 2、脚本 脚本中涉及的文件路径最好写全局路径 3、脚本是java应用 脚本执行要用到的java或者其他环境变量时,通过source命令引入环境变量; 如; #!/bin/bash source /etc/profile export home=/home/UCMSServer/tomcat/bin export name=`ps aux |grep -v grep | grep "/home/UCMSServer/tomcat/conf/logging.properties" |awk \'{print $2}\'` 4、手动可以但是任务计划不行 当手动执行脚本ok。但是crontab执行单不成功可以在crontab中直接引入环境变量 如; * 8 * * * . /etc/profile;/bin/sh /home/start.sh