V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Livid
271.62D
574.17D
V2EX  ›  Ubuntu

在 Ubuntu 18.04 里,为一个服务写启动脚本的最好的方式是?

  •  
  •   Livid ·
    PRO
    · Nov 13, 2018 · 8587 views
    This topic created in 2732 days ago, the information mentioned may be changed or developed.
    有一些用了好多年的 init.d 脚本,最近觉得似乎应该更新一下了。
    48 replies    2018-11-26 16:28:56 +08:00
    hei1000
        1
    hei1000  
       Nov 13, 2018
    不是 systemd ?我们这边 16.04 是这样的
    Mithrandir
        2
    Mithrandir  
       Nov 13, 2018   ❤️ 2
    肯定是 systemd service 啊
    mason961125
        3
    mason961125  
       Nov 13, 2018   ❤️ 1
    systemd
    shallyy
        4
    shallyy  
       Nov 13, 2018
    好奇站长同时使用几种系统?
    TimLang
        5
    TimLang  
       Nov 13, 2018
    正在搞 tengine 的 init.d 脚本就刷到这篇帖子。。
    ffeii
        6
    ffeii  
       Nov 13, 2018 via iPhone
    systemd
    Livid
        7
    Livid  
    MOD
    OP
    PRO
       Nov 13, 2018   ❤️ 2
    @shallyy 我家里有超过 10 台电脑,基本上主流的系统都覆盖了。

    V2EX 的开发环境我在各种系统上都搭建过,Windows / Ubuntu / macOS ……
    reticentfat
        8
    reticentfat  
       Nov 13, 2018
    膜拜大佬,我还以为是生产环境,原来是家里
    lfzyx
        9
    lfzyx  
       Nov 13, 2018
    systemd
    chinvo
        10
    chinvo  
       Nov 13, 2018 via iPhone
    systemd,自带 watchman、资源限制等小玩意儿
    julyclyde
        11
    julyclyde  
       Nov 13, 2018
    @TimLang tengine 的你直接抄 nginx 的不就得了?
    xuboying
        12
    xuboying  
       Nov 13, 2018
    看到 18,我还以为 16 的 systemd 过时了,已经要讨论 docker 概念了, 结果看到 sysV...

    个人觉得 systemd 挺好的,写个 unit 配置就能用了。init.d 里要熟悉 shell 脚本。(变相的降低了用户的入门水平)
    另外,sysV 其实只能启动单一服务,多服务管理还是非常难写的。这点 systemd 解决了

    PS 同求"最好"的方式
    Cbdy
        13
    Cbdy  
       Nov 13, 2018
    这种场景正好用 pm2
    https://pm2.io/doc/en/runtime/guide/process-management/#manage-any-application-type
    脚本前台启动,作为 pm2 的一个 app 启动
    pm2 的 daemon 进程用 systemd 管理( pm2 startup 一下即可)
    est
        14
    est  
       Nov 13, 2018   ❤️ 1
    systemd


    那些说 docker pm2 的。。你们想没想过 dockerd 和 node 是怎么启动的。。。。。

    为啥要舍弃原生的去用二手的?况且原生自带的功能也不弱。
    liuxu
        15
    liuxu  
       Nov 13, 2018
    果断 systemd,不过一些小程序我还是 rc.local
    tmly200
        16
    tmly200  
       Nov 13, 2018
    service?
    flowfire
        17
    flowfire  
       Nov 13, 2018
    我怎么记得可以在 crontab 里写启动脚本。。。
    boris1993
        18
    boris1993  
       Nov 13, 2018 via Android
    感觉 systemd 就足够用了
    Hardrain
        19
    Hardrain  
       Nov 13, 2018
    systemd unit
    luozic
        20
    luozic  
       Nov 13, 2018
    Supervisord 进程守护
    ech0x
        21
    ech0x  
       Nov 13, 2018
    systemd 吧......
    ray1888
        22
    ray1888  
       Nov 13, 2018
    systemd 吧, 比写 system v 一堆不知道什么的东西简单多多了
    Tink
        23
    Tink  
    PRO
       Nov 13, 2018
    supervisord 够用
    zhouyut001
        24
    zhouyut001  
       Nov 13, 2018
    十几台电脑,第一印象是开网吧的
    liangzi
        25
    liangzi  
       Nov 13, 2018
    个人用户 觉得 systemd 现在是主流了吧 可以控制的方面多 当然需要掌握的知识也随之增多
    平时自己都是 crontab+anacrontab 启动各种备份(个人需求没有多少)
    有必要的话就 systemd 启动一个脚本(PS:openSUSE 自带个 after-local.service 静态的 默认添加个 after-local 就开机自动启动了)
    xuboying
        26
    xuboying  
       Nov 13, 2018
    @est #14 每一次技术变更都会有抵触到没办法只能接受,sysV 到 systemd 就是一次,到 docker 也是这样,普通用户也只能被动接受。也许过几年就是满大街 docker 了。我刚刚学会 systemd 部署就有外地同事强推 docker,公司层面也支持他们,用 systemd 的只能再学一遍。
    est
        27
    est  
       Nov 13, 2018
    @xuboying docker 就是个渣。container 内部 pid1 问题拖了许久也才解决。
    shyling
        28
    shyling  
       Nov 13, 2018
    想稳定跑的用 systemd,毕竟要写配置文件,systemctl daemon-reload 也略麻烦点。

    跑跑测试测试的用 pm2,比较无脑

    docker 是另外的需求。。
    zqguo
        29
    zqguo  
       Nov 13, 2018
    docker 也可以的
    iwtbauh
        30
    iwtbauh  
       Nov 13, 2018 via Android
    必须是 LSB service 啊

    http://refspecs.linuxfoundation.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/tocsysinit.html

    建议不要被 systemd 这种东西套牢
    xuboying
        31
    xuboying  
       Nov 13, 2018
    @est #27 个人对 docker 还在一知半解状态,这个帖子也不讨论 docker 了,只是感觉 google 的野心很大,基于 docker 技术做了微服务框架,取代了过去的 go/erlang 模式。(变相降低各大互联网公司进场门槛),可以以后在 docker 的相关帖子里再聊。
    hujianxin
        32
    hujianxin  
       Nov 13, 2018   ❤️ 1
    我倒是建议 supervisor,已经经受历史考研了,而且还跨平台
    MeteorCat
        33
    MeteorCat  
       Nov 13, 2018 via Android
    systemctl unit +1
    TimePPT
        34
    TimePPT  
    PRO
       Nov 13, 2018
    @hujianxin supervisor +1,用顺手了懒得换了。
    1daydayde
        35
    1daydayde  
       Nov 13, 2018
    systemd 最优选
    MonoLogueChi
        36
    MonoLogueChi  
       Nov 13, 2018 via Android
    supervisor
    qgy18
        37
    qgy18  
       Nov 13, 2018
    flowfire
        38
    flowfire  
       Nov 13, 2018 via iPhone
    @qgy18 #37 是的
    est
        39
    est  
       Nov 14, 2018
    @xuboying google 野心大跟 docker 什么关系。。。。你懂得多你说说呗。
    julyclyde
        40
    julyclyde  
       Nov 14, 2018
    除了 init/systemd 以外,其它都不能保证它自己持续运行,从而也就没办法保证它自己能够实施“保护好下属服务”的职责

    唯有 PID=1 的进程受内核的特殊关照
    py2ex
        41
    py2ex  
       Nov 14, 2018
    systemd 是官方推荐
    TimLang
        42
    TimLang  
       Nov 14, 2018
    systemd 太过复杂,对非专业运维来说有比较大的学习成本。

    init.d 的脚本我一直不知道如何以非 root 用户来开机启动,所以我一直用 crontab 的 @reboot 来做的 @flowfire
    ddzzhen
        43
    ddzzhen  
       Nov 14, 2018
    systemd 好用,如果服务容易出问题,可以使用 supervisor
    realpg
        44
    realpg  
    PRO
       Nov 14, 2018
    systemd service 是暂时的唯一选择吧
    如果不善于书写 systemd service,也可以考虑 supervisord
    realpg
        45
    realpg  
    PRO
       Nov 14, 2018
    @livid
    PS 习惯性手残多加了个 d
    iceheart
        46
    iceheart  
       Nov 19, 2018 via Android
    能用就行,这种轮子重新造有啥意义?我是看不出。
    waterlaw
        47
    waterlaw  
       Nov 26, 2018
    今天试了下公司服务器, 用 systemd service 关不掉服务, 后面才发现服务器使用 systemctl 管理服务。服务器 Ubuntu 18.04
    waterlaw
        48
    waterlaw  
       Nov 26, 2018
    写错了前面用 serevice postgresql stop 停不掉服务, 啊,Systemd == systemctl
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2931 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 116ms · UTC 15:27 · PVG 23:27 · LAX 08:27 · JFK 11:27
    ♥ Do have faith in what you're doing.