Linux服务器编写Shell脚本定时监控Java应用状态以及掉线后的自动重启

本文介绍了如何在Linux服务器上编写Shell脚本定期监控Java应用状态,当应用挂掉时自动重启,并详细说明了JDK配置的重要性以及在crontab中设置定时任务的注意事项。
摘要由CSDN通过智能技术生成

转自:Linux服务器编写Shell脚本定时监控Java应用状态以及掉线后的自动重启

1. 编写Shell脚本

#! /bin/sh
export JAVA_HOME=/root/jdk1.8.0_361
export CLASSPATH=.:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
# 进程名称
proc_name=webssh-0.0.1-SNAPSHOT.jar
#启动命令
boot_cmd="nohup java -jar /root/webssh-0.0.1-SNAPSHOT.jar &"
# 日志文件
log_file=/root/monitor_webssh.log 

num=`ps -ef | grep $proc_name | grep -v grep | wc -l` #获取被监控进程数量
# echo "查询到的进程数量为$num">> $log_file_name
if [ "$num" ==  "0" ];         # 判断进程是否存在
 then
  echo  "进程挂掉了,开始进行重启,重启开始时间为`date`" >> $log_file
  `$boot_cmd` # 重启进程的命令
  process_id=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'` # 获取新进程号
  echo "进程已重新启动,重启完成时间为`date`,新的进程号为$process_id" >> $log_file  # 将新进程号和重启时间记录
 else
  process_id=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'` # 获取当前进程号
  echo "进程正在运行中,当前时间为`date`,当前进程号为$process_id" >> $log_file
fi

注意点1: 该脚本存放路径为:/root/monitor_webssh.sh,根据自己的实际情况自定义;

注意点2: 使用 chmod -755(或者-777) monitor_webssh.sh 命令为脚本文件添加所有人、所属组、其他人的可执行权限;

注意点2: 服务器需要配置好JDK环境;

2. 编辑定时器内容,指定Shell脚本的执行频率 

crontab -e #执行该命令,会打开定时器的编辑页面
*/1 * * * * /root/monitor_webssh.sh #每分钟执行一次脚本
*/1 * * * * sleep 30; /root/monitor_webssh.sh #每分钟执行一次脚本,执行前休眠30秒

3. 踩坑

最大的一个坑就是使用crontab定时执行Shell脚本中的java -jar启动命令时,需要在Shell脚本文件的顶部执行JDK系统配置的导出操作,也就是如下的部分:

export JAVA_HOME=/root/jdk1.8.0_361
export CLASSPATH=.:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin

没有如上的配置,就无法执行启动命令.这一点比较迷惑,因为在Linux服务器上直接执行java -jar启动命令是可以正常启动的,而且Shell脚本的执行权限全都打开了.

4. 测试

查看日志文件:

手动停止应用程序

再次查看日志文件:

使用命令查看进程信息:

分类: Linux

  • 18
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值