缘由(废话)
自己最近在服务器上面搭建了一个jupyter lab,但有好几次跑东西把服务器挤爆了,什么数据库等等全部下线,连ssh也无法连接,只能重启。但你知道重启这操作也够骚的!就尝试弄一个守护进程脚本,去看网上有关shell的知识,但感觉啥也没学到,有点懵逼。只能找本pdf系统的看了一下,发现自己有好多知识都欠缺。但想想自己平时没用到,自己也就没怎么注意。谁叫自己喜欢边做边学呢!
CODE
自己这次卡在了如何通过进程名称查杀所有重复进程以及计数来判断!
- 自己酌情按实际需求去更改,最怕碰到那种直接拿去就开始运行的傻逼!也不怕有人写了一个rm / -rf,让你直接崩溃!
#!/bin/sh
PRO_NAME=bot # 进程名称
# 查杀所有进程方法:如查杀jmeter
# ps -ef|grep jmeter |grep -v grep|awk '{print $2}'|xargs kill -9
# ps -ef|grep jmeter |grep -v grep|cut -c 9-15|xargs kill -9
cd /home/lab/Telegram
while true ; do
# T=$(date + %Y-%m-%d %H:%M:%S)
T=$(date)
#用ps获取$PRO_NAME进程数量
NUM=`ps aux | grep $PRO_NAME | grep -v grep |wc -l`
# echo "$T : $NUM"
#少于1,重启进程
if [ "${NUM}" -lt "1" ];then
echo "$T : ${PRO_NAME} hasn't started !"
python3 bot.py >> bot.log 2>&1 &
#大于1,杀掉所有进程,重启
elif [ "${NUM}" -gt "1" ];then
echo "$T : more than 1 ${PRO_NAME},killall ${PRO_NAME}"
ps -ef|grep $PRO_NAME |grep -v grep|cut -c 9-15|xargs kill -9
fi
sleep 5s
done
exit 0