Сервис перезапуска из сценария удара

Я пытаюсь перезапустить сервис myservice от сервиса, который выполняется как демон.

Я создал названный файл myapprestart в /etc/sudoers.d/ это похоже на это

%myuser ALL=NOPASSWD: /bin/systemctl restart myservice
%myuser ALL=NOPASSWD: /bin/systemctl start myservice
%myuser ALL=NOPASSWD: /bin/systemctl stop myservice

myapprestart.service демон работает успешно как синхронизированная единица, которая звонит /home/myuser/restart.sh но всегда сбои со следующей строкой в journalctl

failed to stop myservice.service: Interactive authentication required.

файл сценария/home/myuser/restart.sh содержит строки как ниже

systemctl stop myservice
systemctl start myservice

Мне нужны некоторые указатели на том, что я не делаю правильно. Я посмотрел по крайней мере на четыре подобных вопроса, но по некоторым причинам этот случай, кажется, не работает. Я использую человечность 19.02.

0
задан 4 December 2019 в 20:49

1 ответ

Ваш сценарий restart.sh используйте systemctl команда, которая является частью systemd; потому что для этой команды нужны корневые права из-за его роли, необходимо использовать sudo команда, чтобы смочь использовать его (и Ваш пользователь должен быть отнесен в sudoers как авторизованный sudo пользователь). Ваша команда была бы похожа ниже:

sudo /home/myuser/restart.sh
  • /home/myuser/restart.sh просто полный путь для запуска сценария, который является тем же самым как выполнением sudo ./restart.sh внутри /home/myuser/ папка

Кроме того, поскольку OP упомянула это в комментарии, можно также звонить sudo с полным путем с /usr/bin/sudo (/usr/bin/sudo apt update совпадает с sudo apt update)

1
ответ дан 21 December 2019 в 23:43

Другие вопросы по тегам:

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