linux实现Tomcat的定时重启

还是吃了能力的亏,因为很少写shell脚本,导致一个很简单的问题困扰。

1、shell脚本

如果不会写的,百度下来的脚本,单独执行没有任何问题,但是一旦通过定时任务去执行的话,则会出现问题。没有什么特别难的逻辑,其中语法不懂,那需要自己去研究下。

#!/bin/bash
#. /etc/profile一定要有,因为JAVA_HOME的变量配置在里面,如果不想写这串代码
#那需要自己去申明,此处就不做说明
. /etc/profile
tomcatPath="/test/tomcat7-2020.9.7"
binPath="$tomcatPath/bin"
echo "[info][$(date +'%F %H:%M:%S')]执行Tomcat的重启以及启动:$tomcatPath"
pid=`ps aux | grep tomcat7-2020.9.7 | grep -v grep | awk '{print $2}'`  
echo $pid=="tomcat dir"  
if [ -n "$pid" ]  
then  
{  
   echo ========开始kill tomcat进程==============  
   echo $pid  
   kill -9 $pid  
   echo ========kill tomcat进程结束==============    
   sleep 2  
   echo ===========Tomcat重启==============  
   $binPath"/startup.sh"
}  
else  
echo ===========Tomcat未启动,自行启动==============  
$binPath"/startup.sh"
fi 

2、定时任务

因为公司的服务器为linux为centos 7,所有进行定时任务只需要crontab -e进行添加任务

#对应格式为 * * * * * command,简单说下,依次顺序下来为:分,时,天,月,星期,执行命令
*/1 * * * * /test/test.sh

写好之后wq保存退出,控制台会输出 crontab:installing new crontab,则表明添加成功,通过crontab -l能够查看自己添加的任务,且要三分钟后执行,所以要自行考虑对应时间设置

[root@wisesoft-9-130 bin]# crontab -e
crontab: installing new crontab
[root@wisesoft-9-130 bin]# crontab -l
*/1 * * * * /test/test.sh >> /test/test.txt

至此已经完成定时任务的基本设置,只需要看查看/test/test.txt是否有执行代码输出。

3、修改

通过上述的操作进行设置之后,如果直接执行/test/test.sh能够对Tomcat进行重启,但是通过定时任务则会失败,

原因就出现在下面这串代码
pid=`ps aux | grep tomcat7-2020.9.7 | grep -v grep | awk '{print $2}'`  
它会莫名多出来几个进程ID,百思不得其解,最后找到问题,由于脚本的名称为test.sh,多的那两个进程ID就是这个脚本导致的。。。改成如下就好了:
pid=`ps aux | grep tomcat7-2020.9.7 | grep java | grep -v grep | awk '{print $2}'`

此时,完整的定时任务就成功了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值