编写Shell脚本监控服务(jar)运行状态

当编写Shell脚本来监控服务的运行状态时,可以使用如下的脚本代码:

#!/bin/bash

# 获取进程ID
PID=$(ps -ef | grep Watcher-1.0-SNAPSHOT.jar | grep -v grep | awk '{print $2}')
APP_NAME=Watcher-1.0-SNAPSHOT.jar

# 判断进程是否存在
if [[ -z $PID ]]; then
  echo "Watcher-1.0-SNAPSHOT.jar is not running."
  # 如果进程不存在,则启动服务
  nohup java -jar -Xms512m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError $APP_NAME &
  echo "Watcher-1.0-SNAPSHOT.jar Starting"
else
  echo "Watcher-1.0-SNAPSHOT.jar is running."
fi

这段脚本的功能是检测服务的运行状态,如果服务未在运行,则会启动服务。现在让我们来详细解释每个步骤:

  1. 获取进程ID:通过ps命令结合grep指令来查找运行中的服务进程,并使用awk指令获取进程ID。
  2. 设置服务名称:将服务的名称赋值给变量APP_NAME,以便后续使用。
  3. 判断进程是否存在:使用-z选项判断进程ID是否为空,即服务是否在运行中。如果进程ID为空,则说明服务未在运行。
  4. 启动服务:如果服务未在运行中,则使用nohup命令启动Java服务,并加上一些Java虚拟机的配置,如初始化堆大小和最大堆大小,并在内存不足时导出堆转储文件。
  5. 输出提示信息:无论服务是否启动,都会输出相应的提示信息。

加入crontab每十分钟检查一次:

*/10 * * * * /bin/bash /home/services/watcher/monitor.sh >> /home/services/watcher/nohup.out 2>&1

请注意,你可以根据实际需求对脚本进行修改。此脚本仅提供了一个示例,你可以根据自己的具体情况进行调整

  1. Watcher-1.0-SNAPSHOT.jar,不要直接复制,这是我自己本地的jar包,你需要把它全部替换成自己的jar包名。
  2. 启动命令根据自己想法或者公司要求进行修改或替换。
  3. crontab根据自己实际情况修改文件地址。

希望这篇博客能对你有所帮助!若有其他问题,欢迎继续咨询,祝您生活愉快。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值