Я хочу, чтобы sslocal
запускался автоматически с момента загрузки ПК. Затем я добавляю строку команды в / etc / profile
следующим образом / usr / local / bin / sslocal -c /etc/config.json -d start
. Но когда я перезагружаюсь, возникает ошибка: В доступе отказано: /var/run/shadowsocks.pid
.
Я знаю, что добавленному мной сценарию нужны привилегии root. Поскольку sslocal
запишет новый файл с именем shadowsocks.pid
в каталог / var / run /
, и когда я выполню сценарий пользователем root в терминал напрямую, все идет хорошо. Похоже, что после добавления в / etc / profile
привилегий недостаточно.
Итак, как я могу позволить скрипту запускаться автоматически после загрузки? Кто-то предложил мне отредактировать /etc/rc.local
, но это не работает. Моя система - Ubuntu 16.04, и вот содержимое /etc/rc.local
(с правами доступа к файлам 755
).
#!/bin/dash -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
sudo /usr/local/bin/sslocal -c /etc/shadowsocks.json -d start
exit 0
Я пытался установить теневые сокеты -на свой компьютер. Проблема, с которой я столкнулся, заключается в том, как позволить службе теневого сокета -запускаться автоматически при запуске моего ПК. Команда запуска службы — sudo /usr/local/bin/sslocal -c /etc/shadowsocks.json -d start
(, поскольку команда запишет новый файл в каталог /var/run/
, что приведет к ее привилегии sudo
).
Самый простой способ заставить скрипт запускаться автоматически при старте ПК — записать его в /etc/profile
. Итак, как и содержание описания проблемы, я добавил всю командную строку вместе с sudo
над строкой exit 0
.
После перезагрузки компьютера введите следующую команду в терминал sudo systemctl status rc-local.service
. Если ваша команда sslocal работает, вы получите этот вывод:
>rc-local.service - /etc/rc.local Compatibility Loaded: loaded (/etc/systemd/system/rc-local.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2015-11-27 03:19:25 CST; 2min 39s ago Process: 881 ExecStart=/etc/rc.local start (code=exited, status=0/SUCCESS) CGroup: /system.slice/rc-local.service ├─ 887 watch -n 60 su matrix -c ibam └─1112 /usr/bin/python /usr/local/bin/sslocal -c /etc/shadowsocks....
Как видно из последней строки, команда sslocal создала на моей машине процесс с pid 1112. Это означает, что клиент shadow -socks работает без сбоев.