以前自己用的比较多的是
一般现在用什么比较多?
1 zreateny 2023-11-23 11:49:42 +08:00 supervisor 或者 watchdog |
2 nigerunndayo 2023-11-23 12:52:15 +08:00 有哪位前辈能根据使用经验说一下这几个的区别吗? |
![]() | 3 cnleon 2023-11-23 13:06:05 +08:00 systemd 吧,操作系统自带的 |
![]() | 4 Maboroshii 2023-11-23 13:36:19 +08:00 systemd 吧,系统自带的还是稳点。 |
![]() | 5 IvanLi127 2023-11-23 13:39:53 +08:00 via Android systemd 感觉挺 ok 的 话说现在不都上容器化了嘛 |
![]() | 6 OceanBreeze 2023-11-23 14:31:53 +08:00 |
![]() | 7 Maboroshii 2023-11-23 15:59:11 +08:00 via Android @OceanBreeze 一个进程定义一个服务应该就可以 |
8 nevermoreluo 2023-11-23 16:18:50 +08:00 三个都用过,以下是个人感觉 易用性上 pm2 好,端口复用, 程序多开,日志分割统统都可以用 pm2 解决 稳妥上还是 systemd supervisor ,咋说呢,好几年前用过,稳定也挺稳定的,配置完之后也没太多改动,但是状态查看/管理,确实比 PM2 差很多 |
9 sdsaaeee 2023-11-23 17:55:29 +08:00 docker |
![]() | 10 libook 2023-11-23 18:00:37 +08:00 已经用容器很多年了。 不用容器的话,pm2 对开发友好一些,部署的话 systemd 更通用。 |
![]() | 11 libook 2023-11-23 18:03:19 +08:00 @OceanBreeze #6 可以了解以下 systemd 的 target 机制。systemd 功能挺强大的,可以调整启动顺序和依赖关系,比如服务 A 依赖服务 B ,可以通过配置来让 systemd 启动 B 成功后再启动 A 。 |
![]() | 12 OceanBreeze 2023-11-23 18:53:30 +08:00 via iPhone @libook 这个我是知道的。我的意思是,假如我有一组进程,要启动 100 个。systemd 可以写一个 service 文件来完成吗? |
![]() | 13 xiaoz 2023-11-23 19:34:58 +08:00 via Android @OceanBreeze #12 ,你这种直接写 shell 得了 |
14 aloxaf 2023-11-23 19:45:46 +08:00 ![]() @OceanBreeze #12 可以,systemd 支持模板 |
![]() | 15 itechify PRO portainer stack 写 docker compose 文件,快的飞起 |
![]() | 16 LoliconInside 2023-11-23 21:12:17 +08:00 如果不打算容器化就用 systemd 如果愿意容器化,Docker Compose 如果觉得 Compose 起容器不好管理,Kubernetes |
17 yanqiyu 2023-11-23 21:31:23 +08:00 ![]() @OceanBreeze 写成模板 unit ,类似于 [email protected] 然后启动的时候就 @ 0-99 就启动了 100 个 |
![]() | 18 OceanBreeze 2023-11-23 21:33:15 +08:00 via iPhone @aloxaf 感谢,学习到了 |
![]() | 19 ragnaroks 2023-11-23 22:52:23 +08:00 用 systemd 的最多,虽然有很多人不喜欢,但是已经成为事实上的标准。 supervisor 则在容器大行其道的现在回光返照了一把,因为常用的容器实现都不支持单 container 多顶级 process 。 |
20 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 |
21 julyclyde 2023-11-24 18:37:19 +08:00 你如果用 supervisorD 和 pm2 ,那他俩自身的安全又由谁来保障呢 追根溯源,必须托管给 PID1 才可以 |