如何使用 Systemd 为 Shadowsocks 添加开机启动服务
本文以 Shadowsocks 为例,如何使用 Systemd 为 Shadowsocks 添加开机启动,
安装 Shadowsocks
首先是下载 Shadowsocks
1 | apt-get install shadowsocks |
安好shadowsocks后,使用
1 | ssserver -k mypass |
这样就启动了一个 Shadowsocks 前台程序,即程序会占用终端的输出。当然可以使用ssserver -k mypass -d start
自带的daemon后台程序托管Shadowsocks,但是本文的目的是使用Systemd来管理Shadowsocks并实现开机自动启动。
使用 Systemd 托管 Shadowsocks
想要成为Systemd 一个服务,可以通过在其指定目录下添加 systemd单元配置文件,即在/usr/lib/system.d/system
和 /etc/system.d/system
目录添加ss.service
文件即可,ss
则是这个服务的服务名
添加服务单元配置文件,首先需要一个systemd配置文件的模板,这里以ssh.service为例,复制一份ssh.service的模板再修改我们所需要的
1 | systemctl cat ssh.service > /usr/lib/system.d/system/ss.service |
修改完毕的ss.service…
1 | # /lib/systemd/system/ss.service |
然后重新加载一下配置
1 | systemd daemon-reload |
查看已经加载的服务
1 | systemctl status ss.service |
可以看到目前是inactive的,即还没有启动,现在启动这个服务1
systemctl start ss.service
现在还没有设置开机启动,可以看到状态是disabled
设置开机启动
使其开机自动启动1
systemctl enable ss.service
现在用systemctl status ss.service
查看状态可以看到ss服务正在运行,并且最下方是它的日志
维护Shadowsocks - 访问 Shadowsocks 日志
如果遇到一些奇怪的情况,客户端使用这个ss服务器并没有效果,这时候需要借助Shadowsocks 日志来确定问题的所在。
除了用systemctl status ss.service 查看其部分日志,还可以使用更方便的查看日志的命令组jouralctl
查看ss这个服务的日志:1
jouralctl -u ss
如果忘记这个服务名了,查看所有日志试试看1
jouralctl -xe
如果只记得服务名中含有s这个单词,使用s查找服务名
列出服务状态1
systemctl list-unit | grep s 或 systemctl | grep s
列出服务开机是否启动1
systemctl list-unit-file --type=service | grep s
PS.
/usr/lib/systemd/system/
:软件包安装的单元
– 注解: Ubuntu 还有/lib/systemd/system/
/etc/systemd/system/
:系统管理员安装的单元,开机启动的单元目录
开机时间小助手1
2systemd-analyze blame #查看各个服务的开机启动时间
systemd-analyze plot > boot.svg #导出开机时间图