美文网首页java高级开发
Centos自动拉起脚本

Centos自动拉起脚本

作者: 老鼠AI大米_Java全栈 | 来源:发表于2021-03-03 12:11 被阅读0次

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

    新建脚本文件,赋予权限

    touch start.sh  
    chmod 755 start.sh
    

    编写脚本文件

    #!/bin/sh
    
    # 自动监控jar并且在异常时执行重启操作
    
    # 定义java环境变量
    export JAVA_HOME=/usr/local/myApp/jdk1.8
    
    # 获取端口号为8711的jar进程ID
    # grep -v grep 排除grep命令自带的进程id
    # awk '{print $2}' 只保留结果中第二列的值
    pid=$(ps -ef |grep 8711|grep -v grep|awk '{print $2}')
    
    # 启动脚本
    start=/usr/local/myApp/xxx/bin/start.sh
    
    # 服务链接地址
    url=http://192.168.6.179:8711/api/swagger-ui.html
    
    # 监控时的日志输出
    log=/tmp/my.log
    
    #linux垃圾回收站
    hole=/dev/null
    
    function doIt()
    {
      if [ $pid ]
        then
           echo "jar进程ID存在"
           code=$(curl -s -o $hole -m 10 --connect-timeout 10 $url -w %{http_code}"\n") #测试链接是否可以正常访问
           if [ $code -eq 200 ]
             then
               echo "测试链接正常"
           else
              echo "测试链接失败,重启jar"
              kill -9 $pid  # 杀掉进程
              sleep 5
              $start
         fi
      else
        echo "jar进程id不存在,重启中...."
        $start
      fi
      echo "------------------------------"
    }
     
    doIt>>$log #执行函数,并打印日志
    

    设置定时执行start.sh文件

    crontab -e

    命令行输入crontab -e会自动打开一个空文件, 输入定时处理的任务:

    #需要定时重启docker容器
    #查看容器id: docker ps|grep netty
    #yw-netty
    0 2 * * * docker restart 234234234
    #saas-yw-netty
    0 2 * * * docker restart 4645645656
    

    保存后,在/var/spool/cron/下面查看创建的定时任务。

    添加内容:

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

    启动定时任务

    service crond start   #启动定时任务
     
    service crond status  #查看状态
     
    service crond restart #重启定时任务
     
    service crond stop    #停止定时任务
    

    查看定时任务执行情况

    crontab -l

    相关文章

      网友评论

        本文标题:Centos自动拉起脚本

        本文链接:https://www.haomeiwen.com/subject/dsdqqltx.html