Описание тега bhavanga
Я работаю на перенос, какая-то система в сервисы типа за "реальное" служб systemd на RHEL 7/8. У меня все работает для RedHat 7, ПЛЭС 12 и SLES 15 просто отлично. Но когда я пытаюсь сделать сервис, работающий на RHEL 8, я обнаружил, что система теперь требует моего приложения PID-файл в /запустить
папку...или, по крайней мере, он хочет это есть. (Наши приложения обычно писали файла в директории для установки приложения.)
Я смог добиться этого путем изменения приложения автозагрузки скриптов и написание к /запуск
каталог. Так Что Успехов! Но теперь есть одна проблема, что я не могу показаться, чтобы получить над. Мне нужно запустить сервис работает в контексте конкретного пользователя (мой логин), а не root. Все мои исследования сказал, что мне просто нужно указать пользователя=
в .сервисный
файл для того, чтобы достичь этого. Но всякий раз, когда я добавить одну строку в файл, моем запустить службу не удается. Кажется, это не в том месте, где PID-файл записывается в /запустить
директорию. PID-файл не может быть записан, процесс завершается.
Мой служебный файл:
Описание={удалено}
После=удаленную ФС.цель
После=сеть-онлайн.цель
Хочет=удаленную ФС.цель
Хочет=сеть-онлайн.цель
[Услуги]
Тип=разветвления
Перезагрузка=нет
Пользователь=myid
TimeoutSec=5мин
IgnoreSIGPIPE=нет
KillMode=нет
GuessMainPID=нет
RemainAfterExit=нет
SuccessExitStatus=5 6 255
Идентификатора=/работа/adidmn.пид
ExecStart=<fullPathToScript> начать
ExecStop=<fullPathToScript> прекратить
[Установите]
WantedBy=Multi-потребителя.цель
Мой скрипт запуска определяет, как демон должен быть запущен на различных платформах, устанавливает переменные окружения и, в свою очередь, вызывает скрипт, который начинает реальный процесс. Вызванный демон скрипт запускаемым непосредственно при вызове с правами судо. Мой идентификатор в списка sudoers, но, конечно, раз хозяина запущенного процесса является корень.
Без "пользователей=
" недвижимость в .служебный файл, у меня нет проблемы с запуском службы. Я вообще всегда выполнять команды systemctl как sudo под своим имя пользователя. Моей конечной целью является, чтобы увидеть фактический процесс работает как под мое имя пользователя, а не root. Я думал, что добавление пользователя=<myid>
на .обслуживание
файл будет достичь этого, но это одна линия делает сервис запустить не получится.
Пользователь существует (мой собственный идентификатор пользователя), а также В списка sudoers. /запустить root и когда файл PID там написано с помощью sudo, владелец пид файл корень. Я попытался с помощью Су <идентификатор_пользователя>
для команды, на мой запустить скрипт, но это привело к демону, не начнется вообще.
В принципе, у меня есть различное поведение между компанией SUSE и RedHat. Мой демон (лет) придумали пид файл в каталоге установки программы. Процесс запускается с помощью Су <идентификатор_пользователя> -с
командой, которая запускает процесс в контексте пользователя "а". Пид файл находится в пути установки приложения и принадлежащий пользователю "а". ОС SUSE Linux-это не проблема вообще. Однако, в RedHat, пока процесс выполняется, systemd не жалуется с:
Новый главный ПИД 26979 не относится к службе, и пид файл не принадлежит корень. Отказ.
Почему разница? Что я пытаюсь достичь "терпимо?" или это надо, что теперь корень владеет всеми процессами systemd в сервис?