@Li_Lynch

Почему скрипт не работает после запуска unit в systemd?

Есть небольшой скрипт, есть юнит. Юнит запускается и никаких ошибок не возникает, но результата работы скрипта не наблюдается. Думаю, проблема в том, что скрипт запускается только с правами суперпользователя, то есть, если набрать
sudo myscript

то всё отлично работает.

Если ручками набрать
sudo systemctl start myunit.service
то опять-таки всё хорошо работает. Что я делаю не так?
  • Вопрос задан
  • 1639 просмотров
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
есть три варианта:
  1. Юнит принадлежит и работает только от суперпользователя, но скрипт/программу сам юнит может запустить от указанного юзера если в секцию [Service] добавить строки:
    User=юзер
    Group=группа

    обычно юнит лежит в /etc/systemd/system/XXX.service

    $ sudo systemctl enable XXX.service
    $ sudo systemctl start XXX.service
    ...



  2. Юнит принадлежит суперпользователю но с ним может работать любой пользователь:
    юнит лежит в /etc/systemd/user/XXX.service.
    Работать с ним можно точно также как и с обычным юнитом, только необходимо указывать парамерт --user, например:
    $ systemctl --user enable XXX.service
    $ systemctl --user start XXX.service
    ...


  3. Юнит принадлежит и работает только от одного конкретного пользователя:
    Располагается в домашней папке пользователя ~/.config/systemd/user/XXX.service.
    Для работы также нужно указывать параметр --user.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы