本帖最后由 suchocolate 于 2021-2-2 12:11 编辑
进程自己重启自己不太可能,都得靠另外一个进程重启,linux下就是init或systemd。
- 如果是低版本低于centos 6或ubuntu 1604,再写一个脚本,用于监控结果,重启/usr/main.py的进程。
- 如果是高于上述版本,把脚本做成服务,交给systemd监控:
1)写配置:vi /etc/systemd/system/app.service[Unit]
Description=APP Daemon
After=network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/bin/python3 /usr/main.py # a.把main.py改成如果取不到结果就退出,systemd会自动帮你再起启动
#ExecStop=/bin/kill -9 $(/bin/cat /run/main.pid) # 可选的,人为的定义systemctl stop app时使用的命令。想用需要再改一下main.py,输出main.py的pid到这个文件,方便kill时用。用os模块的os.getpid()就行。不写也没关系,systemd能帮你停。
#ExecReload=/bin/kill -9 $(/bin/cat /run/main.pid) && /usr/binpython3 /usr/main.py # 同上可选
Restart=always
RestartSec=10s # 故障后,准备重启前等待的秒数
User=root
[Install]
WantedBy=multi-user.target
2)配置开机启动:systemctl status app.service
systemctl enable app.service
3)即刻生效:systemctl daemon-reload
systemctl start app.service
|