>

前言

这篇文章介绍如何设置 Shadowsocks server 开机启动

如果自己在服务器上手动搭建了 shadowsocks server,如果没有开机脚本的话,每次重启都需要手动启动 ss-server,非常不方便。因此,编写一个开机自启动脚本就显得非常必要。

(1) 创建脚本 /etc/init.d/shadowsocks

1
sudo vim /etc/init.d/shadowsocks

进入文件后添加以下内容,方法与前面创建 ss-conf.json 这个文件一样,使用 insert 键、shif+:、wq回车保存等等

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/bin/sh
#
# shadowsocks start/restart/stop shadowsocks
#
# Provides: shadowsocks
# Required-Start: $all
# Default-Start: 2 3 4 5
# Default-Stop:
#
# chkconfig: 2345 85 15
# description: start shadowsocks/ssserver at boot time

start(){
ssserver -c /etc/shadowsocks.json -d start
}
stop(){
ssserver -c /etc/shadowsocks.json -d stop
}
restart(){
ssserver -c /etc/shadowsocks.json -d restart
}

case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|restart|stop}"
exit 1
;;
esac

注:
前面的几行,看起来像注释,特别是 chkconfig 那一行,不可删除,否则无法设置开机启动,会提示错误:service shadowsocks does not support chkconfig
chkconfig: 2345 85 15 中,2345 代表在设置在那个 level 中是 on 的。如果一个都不想 on,那就写一个横线”-“,比如:chkconfig: - 85 15。后面两个数字代表 S 和 K 的默认排序号。

脚本编写好之后,我们需要给它添加可执行权限,如下:

1
$ sudo chmod +x /etc/init.d/shadowsocks

这样就可以在 shell 中直接运行下面的命令开启程序了(重启和停止同理):

1
$ sudo service shadowsocks start

或者

1
$ sudo /etc/init.d/shadowsocks start

注意:
上述命令是以 root 权限运行的,如果不想以 root 权限运行可以用 sudo -u {user} {command}。
如果不给脚本文件加上其他用户的可执行权限,不带参数运行 service shadowsocks 会提示 unrecognized service。

设置开机启动

1
$ sudo chkconfig shadowsocks on

这样程序就会自动启动了。

另外,我们也可以试试直接把启动命令写到 /etc/rc.local 文件,也可以开机启动的。

或者
创建软链到系统启动级别下

1
2
$ ln -sf /etc/init.d/ssserverd /etc/rc3.d/S20ssserverd
$ ln -sf /etc/init.d/ssserverd /etc/rc3.d/K20ssserverd

以下使用 Systemd 来实现 shadowsocks 开机自启。

1
sudo vim /etc/systemd/system/shadowsocks.service

在里面填写如下内容:

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Shadowsocks Client Service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/usr/bin/sslocal -c /home/xx/Software/ShadowsocksConfig/shadowsocks.json

[Install]
WantedBy=multi-user.target

注:把上述的 /home/xx/Software/ShadowsocksConfig/shadowsocks.json 修改为你自己的 shadowsocks.json 路径,如:/etc/shadowsocks.json

执行下列命令来使配置生效

1
systemctl enable /etc/systemd/system/shadowsocks.service

全文完!

如果你对我的文章感兴趣,欢迎留言或者关注我的专栏。

微信公众号:“知辉”

搜索“deliverit”或

扫描二维码