如何监控一个进程让他出错停止后自动重启?

RT.

比如我要运行一个服务nohup python3 telegram.py > log/telegram.txt 2>&1 & 但是这个脚本有时会出错崩溃停止运行,如何让他崩溃之后可以立即自动重启?

搜到一个类似的解决脚本:

#!/bin/sh

while true

do

ps -ef | grep "填入你自己的程序名" | grep -v "grep"

if [ "$?" -eq 1 ]

then

./run.sh #启动应用,修改成自己的启动应用脚本或命令

echo "process has been restarted!"

else

echo "process already started!"

fi

sleep 10

done

除了这个有没有崩溃后可以立即重启的其他的方法?

不用了。。脚本的异常处理改好了,应该不会崩溃了。。。

可以排除挂死的情况下 ,我一般这么干的:

while true ; do some_cmd ; sleep 5;  done;
1 个赞

用 Supervisor 就可以解决。

    yum install epel-release && yum install python-pip

    pip install supervisor

    echo_supervisord.conf > /etc/supervisord.conf

    nano /etc/supervisord.conf 

转到最后一行,输入:

    [program:自定义]
    command=python3 绝对路径/telegram.py
    user=root
    autorestart=yes

保存退出后输入 supervisorctl reload 重新载入即可完成守护。

2 个赞

赞一下推荐的supervisor这个工具,试了一下parrot下也可以
apt-get install supervisor
安装后即是系统服务,配置好之后设置自启动:
sudo systemctl enable supervisor.service

ps. 很多情况下确实很有需要,安装后直接就先拿来守护一个易断ssh反向连接进程了 :stuck_out_tongue_winking_eye:

1 个赞

服务器资源由ZeptoVM赞助

Partners Wiki Discord