TyrantLucifer / ssr-command-client

:airplane:The commend client of ssr based Python3
Apache License 2.0
979 stars 240 forks source link

可创建为一个后台服务进程吗? #41

Closed stevenhobs closed 3 years ago

stevenhobs commented 3 years ago

我想设置为系统开机自动启动。 配置的service内容为

[Unit]
Description=shadowsocks-client
After=privoxy.service
[Service]
Type=forking
ExecStart=/usr/local/bin/shadowsocksr-cli -s '31'
ExecReload=/usr/local/bin/shadowsocksr-cli -u
ExecStop=/usr/local/bin/shadowsocksr-cli -S
[Install]
WantedBy=multi-user.target

daemon-reload之后尝试systemctl start ssr.service 失败了:

● ssr.service - shadowsocks-client
     Loaded: loaded (/lib/systemd/system/ssr.service; disabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Sun 2021-06-20 18:50:54 CST; 43s ago
    Process: 29203 ExecStart=/usr/local/bin/shadowsocksr-cli -s 31 (code=exited, status=1/FAILURE)

6月 20 18:50:54 knight systemd[1]: Starting shadowsocks-client...
6月 20 18:50:54 knight shadowsocksr-cli[29203]: 2021-06-20 18:50:54,935 - logger.py[line:74] - [judge] - ERROR: Shadowsocksr id error
6月 20 18:50:54 knight systemd[1]: ssr.service: Control process exited, code=exited, status=1/FAILURE
6月 20 18:50:54 knight systemd[1]: ssr.service: Failed with result 'exit-code'.
6月 20 18:50:54 knight systemd[1]: Failed to start shadowsocks-client.

我该怎么做?

TyrantLucifer commented 3 years ago

把31的单引号去掉,确认你的节点id是否存在

stevenhobs commented 3 years ago

引号一开始没加的,节点也是存在的

stevenhobs commented 3 years ago

问题解决了 ExecStart 执行进程 参数用 环境变量传递就可以了, 而且必须要加 User参数 现在的配置文件,

[Unit]
Description=shadowsocks-client
After=privoxy.service

[Service]
Type=forking
Environment="SSR_ID=31"
ExecStart=/usr/local/bin/shadowsocksr-cli -s $SSR_ID
ExecReload=/usr/local/bin/shadowsocksr-cli -u
ExecStop=/usr/local/bin/shadowsocksr-cli -S
User=steven
[Install]
WantedBy=multi-user.target
stevenhobs commented 3 years ago

设置自启动没问题,真不戳,其他的linux用户也能正常使用了