当前位置:网络安全 > 学习linux下定时重启tomcat服务的脚本

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

  • 发布:2023-10-04 06:37

-->

需求:在linux中定期重启一个tomcat服务

1:Shell脚本是Shell脚本[1]。 Shell脚本类似于Windows/Dos下的批处理。它是一种程序文件,预先将各种命令放入文件中,以方便一次性执行。主要是方便管理员设置或管理。但它比Windows下的批处理功能更强大,比用其他编程程序编辑的程序更高效。它使用 Linux/Unix 下的命令。

  以上来自百度百科

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

2:下面是重启的例子(如果不懂shell的基本语法可以先了解一下)

  a。在需要重启的项目同目录下新建一个.sh文件: [root@mufeng ~]# touch www.sychzs.cn

                  或者使用vi命令:[root@mufeng ~]# vi www.sychzs.cn

  我的项目已root。当然你可以在任何地方创建这个文件,但这样它看起来更清晰,结构也更清晰。

  具体内容如下:

#!/bin/bash  
#作者:木风
#日期:--
#文件名:www.sychzs.cn
#描述:重启tomcat服务 #声明环境变量,可以重复使用
导出 LANG=zh_CN.UTF-
导出JAVA_HOME=/usr/local/java/jdk1..0_161
导出 JRE_HOME=${JAVA_HOME}/jre
导出 TOMCAT_HOME=/root/myWebsite

#输出开始时间
echo "[$(date +'%F %T')] >>> Tomcat 开始重新启动。" #关闭tomcat服务
${TOMCAT_HOME}/bin/www.sychzs.cn # 杀死所有剩余进程 杀死所有剩余进程。如果不杀掉,系统资源就会被占用
pidList=$(ps aux | grep ${TOMCAT_HOME} | grep -v grep | awk '{print $2}') if [ "${pidList}" != "" ]
然后
echo "剩余进程ID: ${pidList}";
对于 $pidList 中的 pid;做
杀死 - $pid
echo "[$(date +'%F %T')] >>> 成功杀死进程 [$pid]。"
完成
不然
echo "没有剩余进程号";


#启动tomcat服务
${TOMCAT_HOME}/bin/www.sychzs.cn

#获取重启的tomcat服务的进程号
pidList2=$(ps aux | grep ${TOMCAT_HOME} | grep -v grep | awk '{print $2}')
if [ "${pidList2}" != "" ]
然后
echo "启动后进程号:${pidList2}";
echo "[$(date +'%F %T')] >>> Tomcat 重启完成。"
echo -e "Tomcat 这次重启成功\n\n"
不然
echo "本次启动tomcat服务出错,请检查/logs/catalina.out日志文件"

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

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

     3。每次执行www.sychzs.cn命令后,杀死剩余进程然后启动服务非常重要。因为残留进程会占用越来越多的系统资源,即使重启后也无法正常访问项目

     4。以上内容请勿复制。执行过程中第一行可能会报错: -bash: ./www.sychzs.cn: /bin/bash  : badterpreter: No such file or directory

  b。保存内容(:wq保存并退出),并赋予该文件执行权限:

          [root@mufeng ~]# chmod +x www.sychzs.cn

  c。测试执行:[root@mufeng ~]# ./www.sychzs.cn

    执行结果如下:

    

  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=根 # 详细信息请参见 man crontabs # 工作定义示例:
# .---------------- 分钟 ( - )
#| .------------- 小时 ( - )
#| | .---------- 月份中的哪一天 ( - )
#| | | .----- 月份 ( - ) 或一月、二月、三月、四月 ...
#| | | | .---- 星期几 ( - )(星期日= 或 )或星期日、星期一、星期二、星期三、星期四、星期五、星期六
#| | | | |
# * * * * * 用户名 要执行的命令 # */ * * * 与 root /root/www.sychzs.cn >> /root/restartLog.txt

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

  */1 * * * wed 代表每周三,每分钟执行一次

  root      代表 root 用户

  /root/www.sychzs.cn代表要执行的脚本路径

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

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

  保存退出后,系统自动读取并加载。一分钟后,你会在根目录下看到多一个文件restartLog.txt,用于存储执行信息

   查看里面的内容如下:

  

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

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

  具体时序配置可以参考这篇文章:https://www.sychzs.cn/liaobangxiang/article/details/72026925

                  https://www.sychzs.cn/ziliao/80818

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

-->

相关文章