Linux进程管理脚本

版权声明:本文为博主原创文章,未经博主允许不得转载。作者:沙师弟专栏 https://blog.csdn.net/u014597198/article/details/82993395

简述

最近一直在Linux上搞事情,碰到给小问题。因为项目需要,可能需要维护比较多的进程,每个进程的有无,都回影响整个项目。进程单个管理起来比较麻烦,就写了给脚本用来管理。

Linux定时器

脚本最开始是我什么时候想起来就执行一次的,检测一下哪些进程没开或者崩溃了,哪些进程的情况是怎样怎样的。后来我发现,这样也不是个事儿啊,机器能做的事情,干嘛非要自己做,就用Linux的定时器,定时的去执行这个脚本。

主要命令

编辑Linux定时器命令:

crontab -e

查看Linux定时器的日志:

tail -f /var/log/cron.log

crontab里面具体内容

*/3 * * * * sh  /home/kf_ai_00/text_classify/Manager.sh > /home/kf_ai_00/text_classify/Manager.log 2>&1

这里的意思是,每三分钟这个定时器执行一遍这个Manager.sh脚本,然后把日志以重写的方式输出到Manager.log这个文件中。

进程管理脚本

如下脚本检测进程是否正常开启,如果进程关闭,则开启。

核心源码

#!/bin/bash

#等待时间
sec=1

function sayProcess()
{
 echo "current: $1"
 ps_out=`ps -ef | grep $1 | grep -v 'grep' | grep -v $0`
 result=$(echo $ps_out | grep "$1")

 echo "$1 time: `date +%Y-%m-%d_%T`"
 if [[ "$result" != "" ]];then
    echo "$1 is Running"
    return 0
 else
    echo "$1 not Running"
    echo "$1 will be created"
    return 1
 fi
}

function splitLine()
{
 echo "-----------------------------------------------"
}

function waitTime()
{
 sleep $sec
 splitLine
}

splitLine
splitLine

#...

#检测实体识别
sayProcess "Ner_Model_Server"
key=`echo $?`
if [[ $key == 1 ]];then
  nohup /usr/local/bin/python3 /home/kf_ai_00/Ner_Model_Server.py > Ner_Model_Server.log 2>&1 &
fi
waitTime

#检测SmartBinLog
sayProcess "SmartBinLog"
key=`echo $?`
if [[ $key == 1 ]];then
  nohup /home/kf_ai_00/SmartBinLog > SmartBinLog.log 2>&1 &
fi

#...
splitLine

效果图

此执行情况也做了处理

写给读者的话

依照这种方式,可以检测进程的情况,如果崩溃或者没开,或者怎样怎样都可以自行做处理。这里的代码只粘贴了部分核心内容,已经够普通的需求了。其余不便透露,希望读者们理解。

猜你喜欢

转载自blog.csdn.net/u014597198/article/details/82993395
今日推荐