基于linux的定时任务实现tomcat服务的定时重启

基于linux的定时任务实现tomcat服务的定时重启

这两天项目有个需求说希望可以定时重启tomcat,然后临时研究了一下,在这里记录一下吧

分析

首先,我觉得要实现定时自动启停tomcat要分四步:

  1. 找到tomcat的pid
  2. 停止现在正在跑的tomcat实例
  3. 启动tomcat实例
  4. 用定时任务定期跑上面的逻辑

实现

自动启停脚本

自动启停脚本test.sh,具体内容如下:

#!/bin/sh
. /etc/profile
# 根据jps-v命令和关键字查询到具体的应用,通过awk命令只显示第一列
pid=`jps -v | grep /home/apache-tomcat-8.5.56-dev9001 | awk '{print $1}'`
#输出一下找到的pid
echo "/home/apache-tomcat-8.5.56-dev9001 pid is $pid"
echo "tomcat kill"
#直接kill -9干掉,这里其实有优化的空间。一方面可以判断一下pid是否存在,另一方可以用kill慢慢关
kill -9 $pid
#这里有个坑,如果没有下面这个sleep 1,再启动时,会报端口冲突。感觉kill命令不像是在当前线程执行的
sleep 1
echo "tomcat kill success!"
echo "begin delete logs"
#这里就是为了清一下日志,真正需要保存的日志都通过log4j重定向到别的地方去了
rm -rf /home/apache-tomcat-8.5.56-dev9001/logs
mkdir /home/apache-tomcat-8.5.56-dev9001/logs
echo "log delete success!"
echo "begin start..."
# 执行启动脚本
sh /home/apache-tomcat-8.5.56-dev9001/bin/startup.sh

定时任务

当我们有了自动启停的脚本之后,只需要使用linux的定时任务定时执行脚本就可以了。执行下面的命令添加定时任务

vi /etc/crontab

执行之后可以到这样页面,不得不说,linux上注释写的不错啊…
在这里插入图片描述
然后,因为我需要每天6点自动重启tomcat服务,那我就这么写就可以了,同时将日志重定向一下,方便日后排查

0  6  *  *  * root sh /root/test.sh>>/root/test-sh.log

写完之后是这样的:
在这里插入图片描述
最后,实用下面的命令重启一下定时任务:

service crond restart 

在这里插入图片描述

总结

  1. 通过这个问题了解了linux上如何对变量进行赋值以及awk命令的简单实用
  2. 上面的脚本还是有优化空间的
  3. 了解了linux上定时任务如何配置
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值