Linux进程管理脚本

  • ​​简述​​
  • ​​Linux定时器​​
  • ​​主要命令​​
  • ​​crontab里面具体内容​​
  • ​​进程管理脚本​​
  • ​​核心源码​​
  • ​​效果图​​
  • ​​写给读者的话​​

简述

最近一直在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

效果图

Linux进程管理脚本_脚本

写给读者的话

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