systemd - My custom service exits with status code 216/GROUP

RemainAfterExit=true является способом. В этом случае Systemd запускает службу, и Systemd считает ее запущенной и работающей. Однако это не покрывает случай, когда нужно выполнить systemctl restart generate_env_file.service. В этом случае systemd повторно запустит вашу службу. Чтобы решить эту проблему, вы можете создать файл-маркер в файловой системе запуска в ExecStartPost= и добавить директиву ConditionFileExists= для проверки существования файла.

2
29.06.2017, 22:52
3 ответа

Вы можете попробовать следующую конфигурацию блока:

 [Unit]
 Description=Server for SpeedBot
 After=network.target

 [Service]
  ExecStart=/bin/sh -c "exec /usr/bin/node /var/www/SpeedBot/server.js"
  Restart=always
  User=nobody
  Group=nobody
  Environment=PATH=/usr/bin:/usr/local/bin
  Environment=NODE_ENV=production
  WorkingDirectory=/var/www/SpeedBot

 [Install]
 WantedBy=multi-user.target
0
27.01.2020, 22:03

Group=nobody

Когда в сообщении об ошибке говорится, что возникла проблема с настройкой группы, от которой работает служба, что и делает этот код состояния, на самом деле ваша первая мысль должна быть: «Настроил ли я действительную группу для этой службы?»

Кстати, не запускайте сервисы как nobody. Это плохая идея, которую мир научился не делать в 1990-х годах. nobodyимеет специфическое использование, связанное с NFS, что означает, что он является (очевидным )владельцем (возможно многих )вещей в файловой системе. Он не подходит для запуска процессов-демонов, учетные записи пользователей которых обычно должны владеть лишь ограниченным количеством вещей в файловой системе, которые непосредственно связаны с их работой.

Запускайте службу под специальной учетной записью пользователя, относящейся к службе.

Дополнительная литература

9
27.01.2020, 22:03

Group=nobodyГруппа должна совпадать с вашим пользователем. Если вы не создали пользователя для SonarQube, сначала создайте его.

Нажмите здесь, чтобы следовать пошаговым инструкциям для получения дополнительной информации

Вам потребуется настроить SonarQube для запуска от имени пользователя сонара. Вы можете сделать это с помощью следующей команды:

sudo nano /opt/sonarqube/bin/linux-x86-64/sonar.sh

Внесите следующие изменения:

RUN_AS_USER=sonar

сохраните и закройте файл, а затем используйте этого пользователя в своем сервисном свойстве

0
13.04.2020, 18:14

Теги

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