本文大纲:
0.背景故事-程序自动崩溃下无奈找办法自动检测重启;
1.如何利用shell脚本判断进程是否在运行,若没有运行则立即运行;
2.利用nohup后台运行判断脚本;
3.如何查看并杀死后台进程;
0.背景大纲
最近,在国外买了个服务器,因为是OPENVZ架构,所以找了篇帖子搭建了SSR+BBR的通道,以下是帖子地址:
OpenVZ架构VPS安装BBR的五种方法(UML/LKL/LKL_Rinetd) | 可乐博客
但是,两天后,我的SSR莫名连接不上了,手动重装了系统,重新配置了SSR,但是两天后,事情又发生了。于是,我怀疑是我的VPS内存空间的问题,我的空间本来就小,128M内存,能跑BBR已经不错了。于是,我开始想办法让SSR崩溃后重新连接,下面是我找到的一个办法,shell脚本判断进程。
1.shell判断进程脚本怎么写
#!/bin/sh
date >> ssrcron.txt
echo "the shell is running" >> ssrcron.txt
while :
do
stillRunning=$(ps -ef |grep SCREEN |grep -v "grep")
if [ -z "$stillRunning" ]
then
date >> ssrcron.txt
echo "the screen was closed!!!!!!!!!!!!!!!!!" >> ssrcron.txt
sh ./run.sh start
date >> ssrcron.txt
echo "the screen was started!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!" >> ssrcron.txt
fi
sleep 10
done
以上是代码
运行脚本:sh ssrcron.sh
2.利用nohup命令后台运行脚本
当你使用sh方式运行脚本的时候,如果关闭终端,那么进程也会随之中断。这时候,就需要让进程在后台保持运行,我的办法是利用nohup命令:
命令:nohup sh ssrcron.sh
这个命令会自动在本文件夹下生产nohup.out,你的sh ssrcron.sh的命令的输出会打印在里面。
3.如何查看并杀死后台进程
当你想关闭nohup进程的时候,可以使用ps -ef,来找到进程,如图:
杀进程命令:kill -9 [pid],如我要杀死途中进程,我的命令是:kill -9 11986,回车。
完