V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
nodejsexpress
V2EX  ›  Linux

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

  •  
  •   nodejsexpress · 360 天前 · 2723 次点击
    这是一个创建于 360 天前的主题,其中的信息可能已经有所发展或是发生改变。

    以前自己用的比较多的是

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

    一般现在用什么比较多?

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

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

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

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

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

    如果最后发现需求没错,在容器内,supervisorD (作为 PID1 )确实比 systemd 轻很多
    比那种“把 整个操作系统 迁移到容器里”的做法好多了
    ragnaroks
        23
    ragnaroks  
       358 天前
    @julyclyde 很多镜像是 AIO 的,比如常见的 qbittorrent + ariang + aria2c + nginx 这一套的下载套件打包成一个镜像
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2529 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:24 · PVG 08:24 · LAX 16:24 · JFK 19:24
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.