Linux进程管理脚本
原创
©著作权归作者所有:来自51CTO博客作者wx635f8a025188b的原创作品,请联系作者获取转载授权,否则将追究法律责任
Linux进程管理脚本
- 主要命令
- crontab里面具体内容
简述
最近一直在Linux上搞事情,碰到给小问题。因为项目需要,可能需要维护比较多的进程,每个进程的有无,都回影响整个项目。进程单个管理起来比较麻烦,就写了给脚本用来管理。
Linux定时器
脚本最开始是我什么时候想起来就执行一次的,检测一下哪些进程没开或者崩溃了,哪些进程的情况是怎样怎样的。后来我发现,这样也不是个事儿啊,机器能做的事情,干嘛非要自己做,就用Linux的定时器,定时的去执行这个脚本。
主要命令
编辑Linux定时器命令:
查看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
效果图
写给读者的话
依照这种方式,可以检测进程的情况,如果崩溃或者没开,或者怎样怎样都可以自行做处理。这里的代码只粘贴了部分核心内容,已经够普通的需求了。其余不便透露,希望读者们理解。