技术解析

Linux 下,检测程序挂掉并自动重启的正确姿势是什么
0
2021-06-16 18:15:31
idczone

目前是写一个额外的脚本去监控这个进程,没了就重启,体验一般.

请问有没有系统级的方案,或者现成业界主流方案,请大大们赐教


linux 也有类似 windows 服务吧,可以直接拉起来自己

systemd

我用的这个 https://github.com/Supervisor/supervisor

docker 自带的--restart 参数

如果可以热备,像数据库主从切换,应该都是定时执行一个 sql(show status),然后进行切换的。

关键词 keepalived

写个 systemd service,添加:
Restart=on-failure

systemd 大法

如果是用定时探测的思路,方法很多,比如 crontab ; 如果是需要快速并且实时,需要使用父子进程通信的信号,如果子进程异常退出,会给父进程发 signal, 具体可以参考各种 daemon(supervisor/systemd), 或者使用.pid 文件,如 nginx

我都用过的:
systemd ( Restart=on-failure )
supervisor ()
docker (--restart )
推荐 systemd, 如果服务器重启,docker 或者 supervisor 不是开机启动,程序就不会启动。supervisor 我记得有 web 页面监控

systemd 最佳。

systemd,supervisor,pm2,docker...太多了
都是很成熟的方案了。
如果你不是远古时代的 Linux 那就用 systemd 吧,绝大多数发行版的基础设施,不用额外安装

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服