linux shell脚本 自动重启挂掉的jar包

linux shell脚本 自动重启挂掉的jar包

monitor.sh

#!/bin/bash
# “#!” 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行

# 变量
jarName=test.jar

jarUrl=/data/solitasu

webUrl=https://www.baidu.com/

# grep -v grep: 在文档中过滤掉包含有grep字符的行
# awk '{print $2}': 按空格截取第二个
pid=`ps -ef|grep $jarName |grep -v grep| awk '{print $2}'`
# wc -l: jar包进程的数量
num=`ps -ef|grep $jarName |grep -v grep| awk '{print $2}'| wc -l`

MonitorFunction(){
    # 输出文本
    echo "[info]进入监控脚本"`date +'%Y-%m-%d %H:%M:%S'`
    # -eq: 等于
    if [[ $num -eq 0 ]]; then
        echo "[error]进程不存在,重启"`date +'%Y-%m-%d %H:%M:%S'`
		# >> /dev/null : jar包生成日志不打印到此脚本日志中
        java -jar $jarUrl/$jarName >> /dev/null &
    else
        # 获取页面访问状态
        # -m 10: 最多查询10s  --connect-timeout 1010秒连接超时  -o /dev/null: 屏蔽原有输出信息  -s: silent  -w %{http_code}: 控制额外输出
        code=`curl -s -o /dev/null -m 10 --connect-timeout 10 $webUrl -w %{http_code}`
        # -ne: 不等于
        if [[ $code -ne 200 ]]; then
            echo "[error]页面访问失败,code=$code,重启"`date +'%Y-%m-%d %H:%M:%S'`
            kill -9 $pid
            java -jar $jarUrl/$jarName >> /dev/null & 
        else
            echo "[info]页面访问成功,code=$code,time="`date +'%Y-%m-%d %H:%M:%S'`
        fi
    fi
}
MonitorFunction

将monitor.sh脚本设为可执行

chmod a+x monitor.sh

定时执行脚本

# 查看和设置定时任务
crontab -e
# 每一分钟执行一次并将日志打印在固定目录中,若文件不存在会自动创建
# */1 * * * * bash /data/solitasu/monitor.sh >> /data/solitasu/log.log
  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值