原文链接:https://blog.csdn.net/qq_37936542/article/details/81086928

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

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


 
  1. touch start.sh

  2. chmod 755 start.sh

2:编写脚本文件


 
  1. #!/bin/sh

  2. # 自动监控tomcat并且在异常时执行重启操作

  3. # 定义java环境变量

  4. export JAVA_HOME=/usr/local/myApp/jdk1.8

  5. # 获取端口号为8080的tomcat进程ID(考虑到有多个tomcat服务器,用8080关键词)

  6. # grep -v grep 排除grep命令自带的进程id

  7. # awk '{print $2}' 只保留结果中第二列的值

  8. pid=$(ps -ef |grep 8080|grep -v grep|awk '{print $2}')

  9. # tomcat启动脚本

  10. start=/usr/local/myApp/tomcat8080/bin/startup.sh

  11. # tomcat缓存

  12. cache=/usr/local/myApp/tomcat8080/work

  13. # tomcat链接地址

  14. url=http://localhost:8080

  15. # 监控时的日志输出

  16. log=/tmp/my.log

  17. #linux垃圾回收站

  18. hole=/dev/null

  19. function doIt()

  20. {

  21. if [ $pid ]

  22. then

  23. echo "tomcat进程ID存在"

  24. code=$(curl -s -o $hole -m 10 --connect-timeout 10 $url -w %{http_code}"\n") #测试链接是否可以正常访问

  25. if [ $code -eq 200 ]

  26. then

  27. echo "测试链接正常"

  28. else

  29. echo "测试链接失败,重启tomcat"

  30. kill -9 $pid # 杀掉进程

  31. sleep 5

  32. rm -rf $cache # 清理tomcat缓存

  33. $start

  34. fi

  35. else

  36. echo "tomcat进程id不存在,重启中...."

  37. rm -rf $cache

  38. $start

  39. fi

  40. echo "------------------------------"

  41. }

  42. doIt>>$log #执行函数,并打印日志

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

crontab -e

添加内容:

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

4:启动定时任务


 
  1. service crond start #启动定时任务

  2. service crond status #查看状态

  3. service crond restart #重启定时任务

  4. service crond stop #停止定时任务

5:查看定时任务

crontab -l

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

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

参考文章:https://blog.csdn.net/zzq900503/article/details/50723191

关注「编程微刊」公众号 ,在微信后台回复「领取资源」,获取IT资源300G干货大全。

公众号回复“1”,拉你进程序员技术讨论群.

最新文章

  1. 蜥蜴(bzoj 1066)
  2. HAL驱动库学习--如何使用HAL库
  3. Linux系统man查询命令等级及意义
  4. javascript中重要概念-闭包-深入理解
  5. Android手机的 storage
  6. Windows中使用cmd实现自定义Service的安装与卸载
  7. 【Oracle连接字符串】【Oracle Net Manager 服务命名配置】【PL/SQL 登陆数据库】
  8. tcp断开连接,4次握手,为什么wireshark 只能抓到3个包?
  9. POJ 3984 迷宫问题 记录路径的广搜
  10. Matlab 将两个图像进行分离 已知其中一个图像
  11. 实验性质的JIT compiler(Ruby2.6)
  12. lr-web services协议
  13. C#调用存储过程执行缓慢,但在数据库中执行却很快的问题
  14. python bytes类型去除尾部字节
  15. windows phone开发-windows azure mobile service使用入门
  16. Nhibernate学习的第二天
  17. Web界面进行用户管理
  18. Spring Cloud (6)config 客户端配置 与GitHub通信
  19. git stash命令使用手册
  20. Python 保存数据的方法(4种方法)

热门文章

  1. hadoop集群中动态添加新的DataNode节点
  2. p2p項目夭折,有種蛋蛋的憂傷。。
  3. Codeforces Round #240 (Div. 2) 题解
  4. js获取当前时间年份,处理年月日
  5. MFC- OnIdle空闲处理
  6. 蓝的成长记——追逐DBA(10):飞刀防身,熟络而非专长:摆弄中间件Websphere
  7. js---16原型链
  8. 59.node的serve-favicon中间件的使用
  9. BZOJ 4582 贪心
  10. AIX查看HBA卡的WWN号