目录
1、设置 crontab 定时任务
2、定时脚本 startJar.sh内容
3、查看jar包进程
4、如何杀死进程
背景:有个需求,Ubuntu服务器中,虽有Java环境,但是没有tomcat。
想要运行jar包,只能通过java -jar命令了。
但是我希望当Java服务停止,或者服务器重启时,我的java服务能够尝试自启动。
思路:通过Ubuntu自带的crontab,来定时运行我手动写的守护脚本不就好了吗?
说干就干,上代码。
1、设置 crontab 定时任务
## root用户下执行(本人使用的是root用户)
sudo crontab -e## 添加定时任务(每秒执行下/opt/ys 下面的 startJar.sh 脚本 )
*/1 * * * * sh /opt/ys/startJar.sh
## 查看确认下任务## 保存退出
查看定时任务:
crontab -l
2、定时脚本 startJar.sh内容
#!/bin/sh
chmod 777 /opt/ys/cron.log# jar包所在目录
proc_dir="/opt/ys"# jar包名字
proc_name="demo.jar"# 日志文件名
file_name="cron.log"
pid=0proc_num()
{num=`ps -ef | grep $proc_name | grep -v grep | wc -l`return $num
}proc_id()
{pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`
}proc_num
number=$?
echo $number
#echo ${pid}, `date` >> $proc_dir/$file_name # 将新进程号和重启时间记录
if [ $number -eq 0 ] # 判断进程是否存在
then cd /opt/ys; nohup /opt/jdk1.8.0_321/bin/java -jar demo.jar > /opt/ys/catalina.outproc_id # 获取新进程号echo "detected demo down, restart..." >> $proc_dir/$file_name echo ${pid}, `date` >> $proc_dir/$file_name # 将新进程号和重启时间记录
fi
注意:文件中的 /opt/jdk1.8.0_321/bin/java 要写成你自己的java目录!!!
3、查看jar包进程
# 例如本人的jar包名字是:sh_syn_service.jar
ps auxwww | grep sh_syn_service.jar
4、如何杀死进程
# kill -9 进程号
# 例如本人的进程号是8430
kill -9 8430