启动监控进程 目前 Linux 下推荐哪个的?

2023-11-23 11:34:17 +08:00
 nodejsexpress

以前自己用的比较多的是

一般现在用什么比较多?

2845 次点击
所在节点    Linux
23 条回复
zreateny
2023-11-23 11:49:42 +08:00
supervisor 或者 watchdog
nigerunndayo
2023-11-23 12:52:15 +08:00
有哪位前辈能根据使用经验说一下这几个的区别吗?
cnleon
2023-11-23 13:06:05 +08:00
systemd 吧,操作系统自带的
Maboroshii
2023-11-23 13:36:19 +08:00
systemd 吧,系统自带的还是稳点。
IvanLi127
2023-11-23 13:39:53 +08:00
systemd 感觉挺 ok 的
话说现在不都上容器化了嘛😏
OceanBreeze
2023-11-23 14:31:53 +08:00
@Maboroshii
@IvanLi127

systemd 可以批量起多个进程吗?谢谢。
Maboroshii
2023-11-23 15:59:11 +08:00
@OceanBreeze 一个进程定义一个服务应该就可以
nevermoreluo
2023-11-23 16:18:50 +08:00
三个都用过,以下是个人感觉
易用性上 pm2 好,端口复用, 程序多开,日志分割统统都可以用 pm2 解决
稳妥上还是 systemd
supervisor ,咋说呢,好几年前用过,稳定也挺稳定的,配置完之后也没太多改动,但是状态查看/管理,确实比 PM2 差很多
sdsaaeee
2023-11-23 17:55:29 +08:00
docker
libook
2023-11-23 18:00:37 +08:00
已经用容器很多年了。

不用容器的话,pm2 对开发友好一些,部署的话 systemd 更通用。
libook
2023-11-23 18:03:19 +08:00
@OceanBreeze #6 可以了解以下 systemd 的 target 机制。systemd 功能挺强大的,可以调整启动顺序和依赖关系,比如服务 A 依赖服务 B ,可以通过配置来让 systemd 启动 B 成功后再启动 A 。
OceanBreeze
2023-11-23 18:53:30 +08:00
@libook 这个我是知道的。我的意思是,假如我有一组进程,要启动 100 个。systemd 可以写一个 service 文件来完成吗?
xiaoz
2023-11-23 19:34:58 +08:00
@OceanBreeze #12 ,你这种直接写 shell 得了
aloxaf
2023-11-23 19:45:46 +08:00
@OceanBreeze #12 可以,systemd 支持模板
oneisall8955
2023-11-23 20:24:08 +08:00
portainer stack 写 docker compose 文件,快的飞起
LoliconInside
2023-11-23 21:12:17 +08:00
如果不打算容器化就用 systemd
如果愿意容器化,Docker Compose
如果觉得 Compose 起容器不好管理,Kubernetes
yanqiyu
2023-11-23 21:31:23 +08:00
@OceanBreeze 写成模板 unit ,类似于 unitname@.service 然后启动的时候就 @ 0-99 就启动了 100 个
OceanBreeze
2023-11-23 21:33:15 +08:00
@aloxaf 感谢,学习到了
ragnaroks
2023-11-23 22:52:23 +08:00
用 systemd 的最多,虽然有很多人不喜欢,但是已经成为事实上的标准。

supervisor 则在容器大行其道的现在回光返照了一把,因为常用的容器实现都不支持单 container 多顶级 process 。
n1cogrv
2023-11-23 22:54:23 +08:00
@OceanBreeze #18 补充一下 @nodejsexpress
https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html#:~:text=Example%C2%A03.%C2%A0Top%20level%20drop%2Dins%20with%20template%20units

再加上 systemd 的 service 文件里面可以内嵌很多特殊变量,`%i`也仅仅是其中一个用来绑在`@`后面的 specifier ,还有很多变量可以在里面使用。

毕竟不选择 docker 那一套的话,自然你也会觉得 pm2 、supervisor 也不够稳妥。systemd 自带的那一堆 on-failure 、Requires 、PartOf 、Conflicts 考虑了很多种[强|弱|半]依赖情况以及一大堆 Condition 。只要肯吃透点文档,可用性会比 docker 那一套强一些。

具体可以看一下
https://www.freedesktop.org/software/systemd/man/latest/systemd.unit.html

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

https://tanronggui.xyz/t/994459

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

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

© 2021 V2EX