需求
使用linux离不开ss,每次都需要手动输入命令开启,很麻烦,所以需要创建开机就启动的服务。
前提
假设我们有一段需要开机启动的服务脚本/home/username/document/ss-local.sh
如下
1
| ss-local -c /home/username/document/ssconfig.json
|
创建服务(两种方式)
1. 创建成系统服务
然后在/etc/init.d/
新建ss-local
文件,注意这个文件的写法
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 38 39
| #!/bin/sh # # Provides: ss-local // 名字要和文件名一样 # Required-Start: $remote_fs # Required-Stop: $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: local shadowsocks service #
set -e
PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/bin
. /lib/lsb/init-functions
NAME=ss-local DEAMON=/home/username/document/ss-local.sh # 注意设置正确的脚本路径
start_sslocal() { start-stop-daemon --start --background --name $NAME --exec $DEAMON }
stop_sslocal() { start-stop-daemon --stop --name $NAME }
case "$1" in start|"") start_sslocal ;; restart|reload|force-reload) stop_sslocal ;; stop) exit 0 ;; *) esac
|
将文件的权限置为755
将服务文件设置为开机启动
1
| sudo update-rc.d ss-local defaults
|
启动服务
1
| sudo systemctl start ss-local
|
2. 创建成systemd服务
定位到/usr/lib/systemd/system
目录(如果没有就新建),新建ss-local.service。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| [Unit] #定义描述 Description=The ss-local service #指定了在systemd在执行完那些target之后再启动该服务 After=network.target remote-fs.target nss-lookup.target
[Service] #定义Service 的运行type,一般是forking,就是后台运行 Type=simple #以下定义systemctl start |stop |reload *.service 的每个执行方法,具体命令 ExecStart=/home/fan/Documents/ss/ss-local.sh #创建私有的内存临时空间 PrivateTmp=true
[Install] WantedBy=multi-user.target
|
然后就可以设置开机启动了
1 2 3 4
| # 开机启动 sudo systemctl enable ss-local.service # 启动服务 sudo systemctl start ss-local.service
|
完