Contos7下tomcat定时重启实现
遇到一个需求,每天tomcat需要定时重启下,人工操作多累啊,还有可能会遗忘,所以来搞一波,走起~
1.创建脚本
可以在本地编辑好上传,也可以在服务器创建文件,我的文件名是“tomcat_restart.sh”具体内容如下:
#!/bin/sh
project_name=tomcat2
tomcat_path=/usr/local/tomcat/tomcat2/bin
pid=`ps -ef|grep $project_name |grep -v grep|awk '{print $2}'`
echo $tomcat_path
echo $pid
if [ -n "$pid" ];
then
{
echo "==========tomcat is start============"
$tomcat_path/shutdown.sh
sleep 5
$tomcat_path/shutdown.sh
sleep 15
pid=`ps -ef|grep $project_name|grep -v grep|awk '{print $2}'`
if [ -n "$pid" ];
then
{
echo "======to kill the tomcat pid $pid========"
kill -9 $pid
sleep 3
}
fi
echo "==========start tomcat============"
$tomcat_path/startup.sh
}
fi
备注:
project_name 就是我们通过 ps -ef|grep project_name 能得到单一的一个我们需要杀掉的因为tomcat而启动的java的jdk进程。
tomcat_path就是服务器上tomcat的bin目录的具体路径。
2.脚本调试
脚本写好了之后,我们先调试是否可执行,我是放在tomcat 的bin目录下,所以先来走一波拿到进程号
好的,可以获取到,那我们直接跑脚本。
sh bin/tomcat_restart.sh
查看tomcat的日志发现正在重启了,中间也没有异常,这就OK了。
3.定时任务
如果想让脚本定时执行,我们只需要利用crontab
命令参数,此处列举常用部分,具体参见https://www.cnblogs.com/intval/p/5763929.html
-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
编辑任务内容
crontab -e
由于我的需求是每日凌晨执行这两个脚本,此处的含义是每日2-01执行tomcat1的重启脚本、每日2-30执行tomcat2的重启脚本,基本的语法格式就是这样了,如果有复杂的需求请自行查阅资料。
:wq保存后,我们可以输入crontab -l查看任务是否被放置到了 crontab
OK,已经添加成功。
启动定时服务:
service crond stop
service crond start
service crond status查看状态
OK,到这里需求就解决了
技术改变生活^∨^