Shell脚本监控.jar服务运行并实现自启和日志记录
**前言:**第一次写shell脚本,需求是监控线上的.jar服务是否运行正常,因为最近随着数据访问量的增加发现服务器有时候会挂掉,当然已经排查了原因,但是为了能够保证服务能够一直正常的运行,所以需要一个shell脚本来监控服务是否正常。废话不多说,直接上shell脚本代码:
#!/bin/sh
jar_name="auth-0.0.1-SNAPSHOT.jar"
while true
do
ps -ef | grep ${jar_name} | grep -v "grep"
if [ $? -eq 0 ]
then
echo "auth-0.0.1-SNAPSHOT.jar already started!"
else
echo "auth-0.0.1-SNAPSHOT.jar has been restarted!"
if [ ! -d "./log/netAuthServicLog/$(date +%Y%m%d)" ]
then
mkdir -p ./log/netAuthServiceLog/$(date +%Y%m%d)
fi
log_name="./log/netAuthServiceLog/$(date +%Y%m%d)/log_$(date +%Y%m%d%H%M%S).txt"
echo $log_name
nohup java -Djava.security.egd=file:/dev/./urandom -jar auth-0.0.1-SNAPSHOT.jar &
fi
sleep 10
done
下面通过这个shell脚本来分析一下它里面的语句的执行流程:
- "jar_name":代表你的jar的名称
- “$? -eq 0”:代表上一条语句执行的结果,0是成功,其它则表示失败
- if [ ! -d “./log/netAuthServicLog/$(date +%Y%m%d)” ]:这语句判断当前这个目录是否存在,不存在则创建这个目录
- mkdir -p ./log/netAuthServiceLog/$(date +%Y%m%d): p 可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不存在的目录,即一次可以建立多个目录。格式代表按照当前日期的年月日来创建目录。
- nohup java:启动你的jar服务
- 启动这个shell脚本
(1)chmod u+x 名称 --给予可执行权限
(2)nohup ./名称 --后台运行shell脚本
本篇到此结束,欢迎评论、点赞、留言~~