在CentOS 7上用Systemd建立shadowsocks自动启动服务

CentOS 7开始使用Systemd替代原有的init.d作为启动管理工具,原本以为很复杂,后来发现其实比init.d还要简单。

安装完shadowsocks-libenv之后:

vim /etc/systemd/system/ss-redir.service

写入以下内容:

[Unit]
Description=Shadowsocks Redir Client
After=network.target

[Service]
Type=forking
PIDFile=/run/shadowsocks/redir.pid
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /run/shadowsocks
ExecStartPre=/bin/chown nobody:nobody /run/shadowsocks
ExecStart=/usr/local/bin/ss-redir -f /var/run/shadowsocks/redir.pid -c /usr/local/etc/ss-redir.json
Restart=on-abort
User=nobody
Group=nobody
UMask=0027

[Install]
WantedBy=multi-user.target

然后运行

systemctl enable ss-redir.service

启用此服务的自动运行

开启服务:systemctl start ss-redir
查看状态 systemctl status ss-redir


评论

  1. 你好,我按照你的方法开机自启动,也可以连接上,但是如果中断,不能自动重启,请问是我哪里写错了吗?

    回复删除
    回复
    1. 中断的情况我还没有遇到过,ss-serverr本身进程是很稳定的,我只在路由器上遇到过ss-redir被拖垮了的情况,但是被拖垮了并不是意味着ss本身进程消失,只是无法处理更多转发了,我碰到的这样的情况比较多,而这种情况也很难写守护进程,如果进程本身异常退出了,可以考虑参照这个来写个守护脚本
      https://gist.github.com/charlestang/6055008
      只需要稍微修改一下名字就可以用

      删除
  2. ExecReload字段呢,这不是根本没配置重启命令吗

    回复删除

发表评论

此博客中的热门博文

远程记录OpenWRT日志

用OpenWRT打造自动翻墙路由器(详解篇)

Python中为什么要用is None来代替== None?