首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  Ubuntu

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

  •  
  •   Livid · 159 天前 · 4169 次点击
    这是一个创建于 159 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有一些用了好多年的 init.d 脚本,最近觉得似乎应该更新一下了。
    48 回复  |  直到 2018-11-26 16:28:56 +08:00
        1
    hei1000   159 天前
    不是 systemd ?我们这边 16.04 是这样的
        2
    Mithrandir   159 天前   ♥ 2
    肯定是 systemd service 啊
        3
    mason961125   159 天前   ♥ 1
    systemd
        4
    shallyy   159 天前
    好奇站长同时使用几种系统?
        5
    TimLang   159 天前
    正在搞 tengine 的 init.d 脚本就刷到这篇帖子。。
        6
    ffeii   159 天前 via iPhone
    systemd
        7
    Livid   V2EX Moderator   159 天前   ♥ 2
    @shallyy 我家里有超过 10 台电脑,基本上主流的系统都覆盖了。

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

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

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


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

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

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

    docker 是另外的需求。。
        29
    zqguo   159 天前
    docker 也可以的
        30
    iwtbauh   159 天前 via Android
    必须是 LSB service 啊

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

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

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

    init.d 的脚本我一直不知道如何以非 root 用户来开机启动,所以我一直用 crontab 的 @reboot 来做的 @flowfire
        43
    ddzzhen   158 天前
    systemd 好用,如果服务容易出问题,可以使用 supervisor
        44
    realpg   158 天前
    systemd service 是暂时的唯一选择吧
    如果不善于书写 systemd service,也可以考虑 supervisord
        45
    realpg   158 天前
    @livid
    PS 习惯性手残多加了个 d
        46
    iceheart   153 天前 via Android
    能用就行,这种轮子重新造有啥意义?我是看不出。
        47
    waterlaw   146 天前
    今天试了下公司服务器, 用 systemd service 关不掉服务, 后面才发现服务器使用 systemctl 管理服务。服务器 Ubuntu 18.04
        48
    waterlaw   146 天前
    写错了前面用 serevice postgresql stop 停不掉服务, 啊,Systemd == systemctl
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2363 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 19ms · UTC 12:31 · PVG 20:31 · LAX 05:31 · JFK 08:31
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1