项目上线之后,tomcat服务器有时候会莫名其妙的挂掉,利用shell写一个看门狗程序,监测tomcat异常关闭后,重启服务器。

 

1:新建脚本文件,赋予权限


  1. touch start.sh
  2. chmod 755 start.sh

2:编写脚本文件


  1. #!/bin/sh
  2.  
  3. # 自动监控tomcat并且在异常时执行重启操作
  4.  
  5.  
  6. # 定义java环境变量
  7. export JAVA_HOME=/usr/local/myApp/jdk1.8
  8.  
  9.  
  10. # 获取端口号为8080的tomcat进程ID(考虑到有多个tomcat服务器,用8080关键词)
  11. # grep -v grep 排除grep命令自带的进程id
  12. # awk '{print $2}' 只保留结果中第二列的值
  13. pid=$(ps -ef |grep 8080|grep -v grep|awk '{print $2}')
  14.  
  15.  
  16. # tomcat启动脚本
  17. start=/usr/local/myApp/tomcat8080/bin/startup.sh
  18.  
  19.  
  20. # tomcat缓存
  21. cache=/usr/local/myApp/tomcat8080/work
  22.  
  23.  
  24. # tomcat链接地址
  25. url=http://localhost:8080
  26.  
  27.  
  28. # 监控时的日志输出
  29. log=/tmp/my.log
  30.  
  31.  
  32. #linux垃圾回收站
  33. hole=/dev/null
  34.  
  35.  
  36. function doIt()
  37. {
  38. if [ $pid ]
  39. then
  40. echo "tomcat进程ID存在"
  41. code=$(curl -s -o $hole -m 10 --connect-timeout 10 $url -w %{http_code}"\n") #测试链接是否可以正常访问
  42. if [ $code -eq 200 ]
  43. then
  44. echo "测试链接正常"
  45. else
  46. echo "测试链接失败,重启tomcat"
  47. kill -9 $pid # 杀掉进程
  48. sleep 5
  49. rm -rf $cache # 清理tomcat缓存
  50. $start
  51. fi
  52. else
  53. echo "tomcat进程id不存在,重启中...."
  54. rm -rf $cache
  55. $start
  56. fi
  57. echo "------------------------------"
  58. }
  59.  
  60. doIt>>$log #执行函数,并打印日志

 

3:设置定时执行start.sh文件

crontab -e


添加内容:

*/30 * * * * /tmp/mySh/start.sh   #每30分钟执行一次


 

4:启动定时任务


  1. service crond start #启动定时任务
  2.  
  3. service crond status #查看状态
  4.  
  5. service crond restart #重启定时任务
  6.  
  7. service crond stop #停止定时任务

 

5:查看定时任务

crontab -l


 

 

注意:某些自己用yum install xxx安装的系统命令,在shell脚本文件执行时可能会失效,这时候使用

which xxx 查看命令的安装目录,然后在shell脚本文件中使用绝对路径就ok了

 

 

linux监测tomcat服务_重启