Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
nodejsexpress
V2EX  ›  Linux

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

  •  
  •   nodejsexpress · Nov 23, 2023 · 4498 views
    This topic created in 1079 days ago, the information mentioned may be changed or developed.

    以前自己用的比较多的是

    • 自带的 systemctl
    • python 的 supervisor
    • node 的 pm2

    一般现在用什么比较多?

    23 replies  •  2023-11-25 10:14:22 +08:00
    zreateny
    zreateny
    Nov 23, 2023
    1
    supervisor 或者 watchdog
    nigerunndayo
    nigerunndayo
    Nov 23, 2023
    2
    有哪位前辈能根据使用经验说一下这几个的区别吗?
    cnleon
    cnleon
    Nov 23, 2023
    3
    systemd 吧,操作系统自带的
    Maboroshii
    Maboroshii
    Nov 23, 2023
    4
    systemd 吧,系统自带的还是稳点。
    IvanLi127
    IvanLi127
    Nov 23, 2023 via Android
    5
    systemd 感觉挺 ok 的
    话说现在不都上容器化了嘛😏
    OceanBreeze
    OceanBreeze
    Nov 23, 2023
    6
    @Maboroshii
    @IvanLi127

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

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

    supervisor 则在容器大行其道的现在回光返照了一把,因为常用的容器实现都不支持单 container 多顶级 process 。
    n1cogrv
    n1cogrv
    Nov 23, 2023
    20
    @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
    julyclyde
    julyclyde
    Nov 24, 2023
    21
    你如果用 supervisorD 和 pm2 ,那他俩自身的安全又由谁来保障呢

    追根溯源,必须托管给 PID1 才可以
    julyclyde
    julyclyde
    Nov 24, 2023
    22
    @ragnaroks 我觉得在容器内启动多个的首先需要检讨自己的需求是不是错了
    然后再说用啥技术实现

    如果最后发现需求没错,在容器内,supervisorD (作为 PID1 )确实比 systemd 轻很多
    比那种“把 整个操作系统 迁移到容器里”的做法好多了
    ragnaroks
    ragnaroks
    Nov 25, 2023
    23
    @julyclyde 很多镜像是 AIO 的,比如常见的 qbittorrent + ariang + aria2c + nginx 这一套的下载套件打包成一个镜像
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   917 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 20:01 · PVG 04:01 · LAX 12:01 · JFK 15:01
    ♥ Do have faith in what you're doing.