例:jar包名叫admin.jar,所在路径:/root/java/project
1.进入到jar包位置
cd /root/java/project
2.创建脚本文件autoRestart.sh
touch autoRestart.sh
3.将.sh文件变为可执行文件
chmod -R 777 autoRestart.sh
4.使用vim autoRestart.sh 进入脚本文件,注意:shell脚本中必须要有#!/bin/bash,否则shell脚本无法执行,下面是脚本内容
source /etc/profile
sleep 1
pid=$(ps -ef | grep admin.jar| grep -v 'grep' | awk '{print $2}')
echo $(date +%F%n%T) "kill admin $pid begin"
kill -9 $pid
echo $(date +%F%n%T) "kill admin ok"
sleep 2
echo $(date +%F%n%T) "restart admin begin"
nohup java -jar /root/java/project/admin.jar --spring.profiles.active=prod>/dev/null &
processID=$(ps -ef | grep admin.jar| grep -v 'grep' | awk '{print $2}')
echo $(date +%F%n%T) "restart success admin $processID"
脚本编写完成后,可使用 sh autoRestart.sh 或 ./autoRestart.sh 来测试一下脚本文件是否可以执行成功。如果报错:bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory
解决:执行命令:sed -i “s/\r//” autoRestart.sh
目的:将脚本文件的文件编码dos格式变为Linux相关的unix格式
编辑定时任务文件
crontab -e
6.添加每两小时执行一次(crontab定时任务中文件需使用绝对路径)
0 */2 * * * /root/java/project/autoRestart.sh >/root/java/project/logs/restart.log 2>&1 &
7.按下ESC退出编辑后,再按:wq 保存编辑,退出页面
8.重新加载crond服务
systemctl reload crond.service
到这里就完成了,项目每隔两小时重启一次。