Loading

systemd-让ss晚点启动

不知从什么时候开始,发现开机后ss总没有成功启动,每次开机后总要restart一下ss-libev的service才能上谷歌。
今天解决一下:

  1. 查看一下unit cat /usr/lib/systemd/system/***-libev@.service
    [Unit]
    Description=***-Libev Client Service
    After=network-online.target
    
    [Service]
    Type=simple
    User=nobody
    CapabilityBoundingSet=CAP_NET_BIND_SERVICE
    ExecStart=/usr/bin/ss-local -c /etc/***/%i.json
    
    [Install]
    WantedBy=multi-user.target
    
  2. 打印以下启动顺序 systemd-analyze plot > aaa.svg


    可以发现ss的服务紧跟着 network-online.target 就启动了,无线网卡的启动在它之后(并不知道这个顺序是否重要)。
  3. 修改一下unit
    保险起见,把它改到 multi-user.target 之后,并把Type改成了idle.
    Before/After需要和Required配合使用,如下:
  4. systemctl daemon-reload
  5. 事实证明只把Type改成idle是没有任何卵用的,启动顺序不会变化
  6. 用After之后是有用的:

    但是查看ss的service状态还是退出过一次,需要手动重启。
    总结:虽然让ss晚点启动了,但是问题还未解决。。

http://www.jinbuguo.com/systemd/systemd-analyze.html
https://www.mauras.ch/systemd-run-it-last.html
https://unix.stackexchange.com/questions/379363/how-can-i-start-systemd-service-units-in-orde

posted @ 2019-06-20 20:48  dylanchu  阅读(39)  评论(0)    收藏  举报