• linux定时重启tomcat服务的脚本学习


    要求:在linux中定时重启一个tomcat服务

     一:shell脚本即Shell Script [1],Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。

      以上来源于百度百科

      其实,说白了脚本就是融合了shell语法的命令集合体,我们可以通过执行一个.sh脚本文件,来达到执行多个命令的目的

    二:以下是一个重启的实例(不了解shell基本语法的可以先了解一下

      a. 在你需要重启的项目的同级目录,新建一个.sh文件:[root@mufeng ~]# touch restartTomcat.sh

                      或者使用vi命令: [root@mufeng ~]# vi restartTomcat.sh

      我的项目是在root下,当然你可以在任何地方建此文件,不过这样看起来更加明了,结构清楚。

      下边是其中具体内容:

    #!/bin/bash  
    #author: mufeng
    #date: 2018-08-07
    #Filename: restartTomcat.sh
    #Description: 重启tomcat服务
    
    #声明环境变量,可重复使用 
    export LANG=zh_CN.UTF-8
    export JAVA_HOME=/usr/local/java/jdk1.8.0_161
    export JRE_HOME=${JAVA_HOME}/jre
    export TOMCAT_HOME=/root/myWebsite
    
    #输出开始时间
    echo "[$(date +'%F %T')] >>> Tomcat begin to restart."

    #关闭tomcat服务 ${TOMCAT_HOME}/bin/shutdown.sh # Kill all remaining processes 杀掉所有残留进程,不杀掉会占用系统资源 pidList=$(ps aux | grep ${TOMCAT_HOME} | grep -v grep | awk '{print $2}') if [ "${pidList}" != "" ] then echo "残留的进程号:${pidList}"; for pid in $pidList; do kill -9 $pid echo "[$(date +'%F %T')] >>> Kill the process [$pid] successfully." done else echo "无 残留的进程号"; fi
    #启动tomcat服务 ${TOMCAT_HOME}
    /bin/startup.sh
    #获取重新启动后的tomcat服务的进程号 pidList2
    =$(ps aux | grep ${TOMCAT_HOME} | grep -v grep | awk '{print $2}') if [ "${pidList2}" != "" ] then echo "启动后的进程号:${pidList2}"; echo "[$(date +'%F %T')] >>> Tomcat restart complete." echo -e "本次tomcat成功重启 " else echo "本次tomcat服务启动出错,请查看/logs/catalina.out日志文件" fi

      注意,1. 声明的环境变量中,JAVA_HOME后边对应的是你自己的jdk路径

         2. 声明的环境变量中,TOMCAT_HOME后边对应的是你自己的项目路径  

         3. 每次在执行完shutdown.sh命令后,需杀死残留进程,然后再启动服务,这点非常重要。因为残留进程会侵占越来越多的系统资源,甚至重启后都无法正常访问项目

         4. 不要全部复制上边的内容,执行时第一行可能会报错:-bash: ./restartTomcat.sh: /bin/bash  : bad interpreter: No such file or directory

      b. 保存内容(:wq 保存退出),为此文件赋予执行权限:

              [root@mufeng ~]# chmod +x restartTomcat.sh

      c. 测试执行:[root@mufeng ~]# ./restartTomcat.sh

        执行结果如下图:

        

      d. 查看tomcat服务是否启动成功:[root@mufeng ~]# ps -ef|grep tomcat

        

    三:配置linux定时任务crond

      以上脚本,可以手动执行,来重启服务,但如果想让其定期自动执行,则还需要配置定时任务crond

      cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

      打开定时任务的系统配置文件:[root@mufeng ~]# vi /etc/crontab

    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    
    # For details see man 4 crontabs
    
    # Example of job definition:
    # .---------------- minute (0 - 59)
    # |  .------------- hour (0 - 23)
    # |  |  .---------- day of month (1 - 31)
    # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
    # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
    # |  |  |  |  |
    # *  *  *  *  * user-name  command to be executed
    
    # */1 *  *  *  wed root /root/restartTomcat.sh >> /root/restartLog.txt

      最下边一行,是我添加的自己的定时任务(需要执行时,去掉前边的注释“#”)

      */1  *  *  *  wed  代表 每个星期三,每隔一分钟执行一次

      root         代表 root用户

      /root/restartTomcat.sh  代表 要执行的脚本路径

      >>        代表 执行信息的输出位置

      /root/restartLog.txt  代表 执行信息存放的文件名

      保存退出后,系统自动读取加载,隔一分钟,会看见root目录下多了个存放执行信息的文件restartLog.txt

      查看里边的内容如下:

      

      友情提醒:测试完毕,记得注释掉加入的定时配置,不然,你的restartLog.txt文件会越来越大

      “*”代表取值范围内的所有数字, 
      “/”代表”每”,如每2分钟:*/2 
      “-”代表从某个数字到某个数字, 
      “,”分开几个离散的数字

      具体的定时配置,可参考这篇文章:https://blog.csdn.net/liaobangxiang/article/details/72026925

                      https://yq.aliyun.com/ziliao/80818

    至此,linux中tomcat服务定时重启的功能完成;

  • 相关阅读:
    第二篇:服务消费者Feign
    第一篇:服务的注册与发现Eureka(Finchley版本)
    记一次包扫描的犯错
    0.简单工厂-simplefactory(非23之一)
    设计模式基础
    设计模式--六大设计原则
    Java中的包
    Java内部类
    Java多线程
    Java同步
  • 原文地址:https://www.cnblogs.com/mufengforward/p/9401452.html
Copyright © 2020-2023  润新知