Linux 下,检测程序挂掉并自动重启的正确姿势是什么

2020-08-07 15:05:34 +08:00
 jingcheng407

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

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

4617 次点击
所在节点    Linux
28 条回复
Juicpt
2020-08-07 15:09:13 +08:00
linux 也有类似 windows 服务吧,可以直接拉起来自己
wlsnx
2020-08-07 15:11:02 +08:00
systemd
luolw1998
2020-08-07 15:11:24 +08:00
Jirajine
2020-08-07 15:13:34 +08:00
docker 自带的--restart 参数
zliea
2020-08-07 15:14:06 +08:00
如果可以热备,像数据库主从切换,应该都是定时执行一个 sql(show status),然后进行切换的。
zliea
2020-08-07 15:14:36 +08:00
关键词 keepalived
whenov
2020-08-07 15:14:50 +08:00
写个 systemd service,添加:
Restart=on-failure
jasonyang9
2020-08-07 15:18:40 +08:00
systemd 大法
cgyimustc
2020-08-07 15:19:31 +08:00
如果是用定时探测的思路,方法很多,比如 crontab ; 如果是需要快速并且实时,需要使用父子进程通信的信号,如果子进程异常退出,会给父进程发 signal, 具体可以参考各种 daemon(supervisor/systemd), 或者使用.pid 文件,如 nginx
lusi1990
2020-08-07 15:53:18 +08:00
我都用过的:

systemd ( Restart=on-failure )
supervisor ()
docker (--restart )

推荐 systemd, 如果服务器重启,docker 或者 supervisor 不是开机启动,程序就不会启动。supervisor 我记得有 web 页面监控
saytesnake
2020-08-07 15:56:37 +08:00
systemd 最佳。
nightwitch
2020-08-07 15:59:10 +08:00
systemd,supervisor,pm2,docker...太多了
都是很成熟的方案了。
如果你不是远古时代的 Linux 那就用 systemd 吧,绝大多数发行版的基础设施,不用额外安装
JJstyle
2020-08-07 16:03:42 +08:00
😄,systemd vs *nix 哲学 ,systemd 赢了
CEBBCAT
2020-08-07 16:03:57 +08:00
Oceanhime
2020-08-07 16:15:06 +08:00
系统级的用 systemd 写个 service 就行,方便好用。
现成的方案可以用 supervisor,有 python/go 两个版本,个人一直在用的方案,简单强大。
或者可以试试 docker —restart,但是毕竟需要额外启动一个 daemon,可能需要占用一点额外资源。
如果是第三方,记得先设置自启动
Chenamy2017
2020-08-07 16:40:43 +08:00
自写一个服务,检测程序是不是存在,不存在就拉起来。
julyclyde
2020-08-07 17:54:12 +08:00
唯一可靠的就是 SIGCHLD
即 init respawn 或者 systemd service 方案
pursuer
2020-08-07 19:16:29 +08:00
最正确的姿势当然是不要让程序挂掉
misaka19000
2020-08-07 19:30:17 +08:00
不用那么麻烦,我告诉楼主一个关键词楼主去搜就行了

Supervisor
CallMeReznov
2020-08-07 19:46:55 +08:00
这个不是 supervisor 干的吗?
或者 pm2?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/696468

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX