RemainAfterExit=true
является способом. В этом случае Systemd запускает службу, и Systemd считает ее запущенной и работающей. Однако это не покрывает случай, когда нужно выполнить systemctl restart generate_env_file.service
. В этом случае systemd повторно запустит вашу службу. Чтобы решить эту проблему, вы можете создать файл-маркер в файловой системе запуска в ExecStartPost=
и добавить директиву ConditionFileExists=
для проверки существования файла.
Вы можете попробовать следующую конфигурацию блока:
[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
Group=nobody
Когда в сообщении об ошибке говорится, что возникла проблема с настройкой группы, от которой работает служба, что и делает этот код состояния, на самом деле ваша первая мысль должна быть: «Настроил ли я действительную группу для этой службы?»
Кстати, не запускайте сервисы как nobody
. Это плохая идея, которую мир научился не делать в 1990-х годах. nobody
имеет специфическое использование, связанное с NFS, что означает, что он является (очевидным )владельцем (возможно многих )вещей в файловой системе. Он не подходит для запуска процессов-демонов, учетные записи пользователей которых обычно должны владеть лишь ограниченным количеством вещей в файловой системе, которые непосредственно связаны с их работой.
Запускайте службу под специальной учетной записью пользователя, относящейся к службе.
Group=nobody
Группа должна совпадать с вашим пользователем. Если вы не создали пользователя для SonarQube, сначала создайте его.
Нажмите здесь, чтобы следовать пошаговым инструкциям для получения дополнительной информации
Вам потребуется настроить SonarQube для запуска от имени пользователя сонара. Вы можете сделать это с помощью следующей команды:
sudo nano /opt/sonarqube/bin/linux-x86-64/sonar.sh
Внесите следующие изменения:
RUN_AS_USER=sonar
сохраните и закройте файл, а затем используйте этого пользователя в своем сервисном свойстве