systemd 서비스를 사용하여 루트가 필요한 스크립트를 시작하는 방법은 무엇입니까?

systemd 서비스를 사용하여 루트가 필요한 스크립트를 시작하는 방법은 무엇입니까?

CentOS 시작 시 몇 가지 작업을 시작하려고 하는데 해결 방법을 모르는 몇 가지 문제가 발생했습니다.

my.service 파일은 다음과 같습니다.

[Unit]
Description="Boot Jenkins slave and SonarQube server"
After=network.target

[Service]
Type=simple
ExecStart=/var/boot.sh
User=root
Group=root

[Install]
WantedBy=default.target

systemctl daemon-reload, systemctl enable my.service및 이후에는 systemctl start my.service실제로 아무 일도 일어나지 않거나 작동하지 않는 것 같습니다.

출력은 다음과 systemctl status my.service같습니다.

$ systemctl status my.service 
● startup.service - "Boot Jenkins slave and SonarQube server"
   Loaded: loaded (/etc/systemd/system/my.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Wed 2017-04-26 19:49:31 IDT; 1min 41s ago
  Process: 988 ExecStart=/var/boot.sh (code=exited, status=0/SUCCESS)
 Main PID: 988 (code=exited, status=0/SUCCESS)

Apr 26 19:49:00 build-1 systemd[1]: Started "Boot Jenkins slave and SonarQube server".
Apr 26 19:49:00 build-1 systemd[1]: Starting "Boot Jenkins slave and SonarQube server"...
Apr 26 19:49:00 build-1 boot.sh[988]: Starting SonarQube...
Apr 26 19:49:01 build-1 boot.sh[988]: Started SonarQube.

아마도 모든 것이 작동했어야 했지만 작동하지 않았습니다...
그러나 boot.sh를 수동으로 실행하면 작동합니다.

su ...
./boot.sh

boot.sh는 다음과 같습니다.

#!/bin/bash

nohup java -jar /var/jenkins/slave.jar -jnlpUrl https://***.jnlp -secret **** &
/var/sonarqube-6.3/bin/linux-x86-64/sonar.sh start

SonarQube에는 루트가 필요합니다.
내가 도대체 ​​뭘 잘못하고있는 겁니까?

업데이트:다음의 로그 cat /var/log/messages | grep SonarQube:

Apr 26 20:58:53 build-1 systemd: Started "Boot Jenkis slave and SonarQube server".
Apr 26 20:58:53 build-1 systemd: Starting "Boot Jenkis slave and SonarQube server"...
Apr 26 20:58:53 build-1 boot.sh: Starting SonarQube...
Apr 26 20:58:53 build-1 boot.sh: Started SonarQube.

답변1

SonarQube의 경우 대신 다음을 따르게 되었습니다.https://devopscube.com/setup-and-configure-sonarqube-on-linux/, SonarQube를 서비스로 추가하는 방법을 지시합니다. 이는 systemd 접근 방식보다 이상하게도 매우 간단했습니다.

파일의 첫 번째 명령에 대해서는 여전히 미해결 문제입니다.

관련 정보