shell监控进程状态,自启动

Posted Books&Coffee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell监控进程状态,自启动相关的知识,希望对你有一定的参考价值。

shell 监控脚本,通过会while true 实现,没有使用crontab

#!/bin/bash
source /etc/profile

appname=aurora-gateway-provider-1.3.1_build2.jar    #【jps 显示的 进程名称】
app_path=/opt/workspace/aurora-gateway/ #【app_script 的上层目录,和启动方式配合,如 aurora-gateway的启动方式是 sh sbin/app.sh start】
app_script=app.sh #【启动脚本】

        # 如下内容不需要修改
        function monitor() {
                monitorOutputLog=/data/aurora-gateway/logs/monitor/$(date ‘+%Y%m%d‘).log
                if [ ! -f "$monitorOutputLog" ];then
                                touch "$monitorOutputLog"
                        fi

                pid=$(jps |awk -v var=$appname ‘{if($2 ~ var)print$1}‘) #awk -v 表示将shell中的变量appname引入 awk表达式;{if($2 ~ var)print$1}判断是不是相似,相似打印pid
                if (kill -0 $pid 2>/dev/null);then # kill -0 $pid:检查pid进程是否存在,echo $? 存在则返回0;不存在返回1; 2>/dev/null:表示不输出错误信息
                echo "$(date ‘+%Y-%m-%d %H:%M:%S‘)      $appname is running" >> $monitorOutputLog
                sleep 15 #sleep 15秒
                else
                        cd $app_path && sh sbin/$app_script start
                        pid=$(jps |awk -v var=$appname ‘{if($2 ~ var)print$1}‘)
                        if (kill -0 $pid 2>/dev/null);then
                        echo "$(date ‘+%Y-%m-%d %H:%M:%S‘)      $appname 启动成功" >> $monitorOutputLog
                        sleep 15
                        else
                        echo "$(date ‘+%Y-%m-%d %H:%M:%S‘)      $appname 启动失败" >> $monitorOutputLog
                        sleep 15
                        fi
                fi
        }

while true
do
monitor
done


# 使用步骤:
# [root] mkdir -p /data/aurora-gateway/logs/monitor/
# [root] chown deploy:deploy /data/aurora-gateway/logs/monitor/
# 拷贝aurora_gateway_monitor.sh 到 /opt/workspace/aurora-gateway/ 目录下
# [root] chown deploy:deploy /opt/workspace/aurora-gateway/aurora_gateway_monitor.sh
# chmod +x /opt/workspace/aurora-gateway/aurora_gateway_monitor.sh
# [root] su - deploy
# cd /opt/workspace/aurora-gateway/
# ./aurora_gateway_monitor.sh&
# 检查日志是否正常输出

  

以上是关于shell监控进程状态,自启动的主要内容,如果未能解决你的问题,请参考以下文章

linux--进程管理和监控

VC做一个监控进程,该进程需要定时获取被监控的进程的状态,如果被监控的进程关闭了,就重新启动之

shell基础语法以及监控进程不存在重新启动

shell:监控进程运行状态并自动重启进程

shell脚本监控进程是否存在,不存在则启动实例

用shell脚本监控进程是否存在 不存在则启动的实例