zoukankan      html  css  js  c++  java
  • linux监测tomcat服务

    原文链接: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.  
    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}" ") #测试链接是否可以正常访问

    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了

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

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

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

  • 相关阅读:
    lnmp thinkphp在linux上支持pathinfo
    position
    whereis命令
    Css transition
    CSS3 2D 转换
    asp.net缓存(转)
    Quartz.net开源作业调度框架使用详解(转)
    .Net开源工作流Roadflow的使用与集成(转)
    反射中 GetCustomAttributes
    ASP.NTE 5 Target framework dnx451 and dnxcore50(转)原文:http://www.cnblogs.com/xishuai/p/aspnet5-target-framework-dnx451-and-dnxcore50.html
  • 原文地址:https://www.cnblogs.com/wangting888/p/9701397.html
Copyright © 2011-2022 走看看