最近在写服务端,使用到微服务,打包形式为jar; 询问到上家公司运维,他并没有执行脚本,我觉得这是个问题,就打算自己写一个。
1 .我的远程服务器是linux系统
2. shell编写脚本 (本地编写一定要注意格式问题,linux系统下是 unix,否则会报错哦)
编码问题 可以看这篇文章: https://blog.csdn.net/jimbooks/article/details/98037922
进入正题:
1. 启动
首先我通过循环的方式 遍历 jar包所在的目录
for i in "$APP_HOME"/*.jar; do
done
然后获取到 jar 的唯一 pid
pids=$(ps -ef | grep $i | grep -v grep | awk '{print $2}')
判断 不为空 提示已启动 else 执行 jar
if [ -n "$pids" ]; then
echo "================================"
echo "warn: $i already started! (pid=$pids)"
echo "================================"
else
echo "Starting $i ..."
nohup java -jar "$i" &
if [ $? == 0 ];then
echo "$i 服务启动成功"
else
echo "$i 服务启动失败"
fi
fi
2. 关闭进程
还是先遍历jar 所在目录
for i in "$APP_HOME"/*.jar; do
done
获取 pid
processId=$(ps -ef | grep $i | grep -v grep | awk '{print $2}')
判断 如果为空 提示没有服务在运行 else kill
if [ ! $processId ]; then
echo "$APP_HOME 目录下没有服务在运行"
else
echo "$i 服务在运行 pid = $processId"
kill -9 $processId
if [ $? == 0 ];then
echo "kill服务成功"
else
echo "kill服务失败"
fi
fi