Ошибки при попытке запустить программу при загрузке

Я хочу, чтобы 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
-1
11.07.2017, 12:54
1 ответ

Я пытался установить теневые сокеты -на свой компьютер. Проблема, с которой я столкнулся, заключается в том, как позволить службе теневого сокета -запускаться автоматически при запуске моего ПК. Команда запуска службы — 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 работает без сбоев.

0
28.01.2020, 05:12

Теги

Похожие вопросы