为什么我用 systemd 创建的服务全部都会自动关闭? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
whx20202
V2EX    程序员

为什么我用 systemd 创建的服务全部都会自动关闭?

  •  
  •   whx20202 2017-03-06 16:09:48 +08:00 4067 次点击
    这是一个创建于 3173 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我的操作系统是 Ubuntu 16.04.02LTS 是从 14.04 升上去的 比如 squid : /usr/local/squid/sbin/squid -s 是后台启动 /usr/local/squid/sbin/squid -k shutdown 是关闭

    我新增了一个文件:/lib/systemd/system/squid.service

    [Unit] Description=squid , a HTTP(S) proxy server Documentation=https://blog.ruiruige1991.xyz After=network.target [Service] Type=simple ExecStart=/usr/local/squid/sbin/squid -s ExecStop=/usr/local/squid/sbin/squid -k shutdown ExecReload=/usr/local/squid/sbin/squid -k reconfigure 

    然后每次执行systemctl start squid.service,发现都起不来

    执行journald -xe 发现有以下日志:

    Mar 06 16:04:41 NyaVM-VPS-updwugzl systemd[1]: Started squid , a HTTP(S) proxy server. -- Subject: Unit squid.service has finished start-up -- Defined-By: systemd -- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel -- -- Unit squid.service has finished starting up. -- -- The start-up result is done. Mar 06 16:04:41 NyaVM-VPS-updwugzl squid[21867]: Squid Parent: will start 1 kids Mar 06 16:04:41 NyaVM-VPS-updwugzl squid[21867]: Squid Parent: (squid-1) process 21870 started Mar 06 16:04:41 NyaVM-VPS-updwugzl squid[21868]: squid: No running copy 

    个人感觉:

    • 很多时候起一个服务是起不来的
    • 不管我是否起来了,感觉它会在服务启动的一瞬间就去执行 stop 的相关任务

    有没有人有这方面的经验?

    10 条回复    2017-03-07 13:00:58 +08:00
    jasontse
        1
    jasontse  
       2017-03-06 16:11:25 +08:00 via iPad
    Type 改成 forking
    whx20202
        2
    whx20202  
    OP
       2017-03-06 16:12:50 +08:00
    @jasontse 能不能解释一下为什么呢?
    我之前也尝试搜过,有人说 simple 就可以了还说 forking 只是兼容老版本的程序,这个 forking 到底是什么意思啊
    whx20202
        3
    whx20202  
    OP
       2017-03-06 16:14:40 +08:00
    @jasontse 成功了!
    能稍微说一下吗? 或者说个关键技术我去谷歌
    jasontse
        4
    jasontse  
       2017-03-06 16:15:19 +08:00 via iPad   3
    @whx20202 在前台会阻塞的程序可以用 simple ,后台服务用 forking 。如果你想了解什么是 fork 请搜索 Linux Daemon 。
    SpicyCat
        6
    SpicyCat  
       2017-03-06 16:50:05 +08:00
    如果有耐心,看看 systemd 系列的 manpage, 讲得很详细。
    julyclyde
        7
    julyclyde  
       2017-03-06 21:10:36 +08:00
    @whx20202 你需要关注的是“为什么 forking 是兼容老版本”而不是“ forking 是兼容老版本”
    ryd994
        8
    ryd994  
       2017-03-07 09:18:12 +08:00 via Android
    因为 squid 默认 fork 到后台执行
    simple 只检查前台进程,前台退了就意味结束了
    我记得加-N 可以不 fork
    forking 会尝试检测 fork 出来的后台
    此外还可以通过 pidfile 显式指定
    对于执行一遍就一直有效的,比如 RC local 脚本, one-shot
    loveminds
        9
    loveminds  
       2017-03-07 12:59:44 +08:00
    因为这类东西的原理是由前台进程派生出守护进程后就退出,而 simple 只能检测你运行进程的状态
    loveminds
        10
    loveminds  
       2017-03-07 13:00:58 +08:00
    “感觉它会在服务启动的一瞬间就去执行 stop 的相关任务”正是这种方式的显著特点,派生出守护进程后,控制台进程退出
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1298 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 17:17 PVG 01:17 LAX 09:17 JFK 12:17
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86