>

systemd 를 통해 데비안 배포판에서 데몬/서비스로 앱을 실행하려고합니다. . 내 서비스 파일은 다음과 같습니다.

[Unit]
Description=MyApp Service
After=multi-user.target
[Service]
Type=simple
Restart=always
ExecStart=sudo /usr/bin/java -jar /home/pi/myapp.jar
[Install]
WantedBy=multi-user.target

나는 그것을 /lib/systemd/system/myapp.service 에 복사 . 그런 다음 실행합니다 :

sudo systemctl enable myapp

그런 다음 상태를 확인합니다 :

sudo systemctl status myapp

그리고이 오류들이 보입니다 :

● myapp.service - MyApp Service
   Loaded: error (Reason: Invalid argument)
   Active: inactive (dead)
Sep 29 09:56:24 raspberrypi systemd[1]: [/lib/systemd/system/myapp.service:8] Executable path is not absolute, ignoring: sudo /usr/bin/java -jar /home/pi/myapp.jar
Sep 29 09:56:24 raspberrypi systemd[1]: myapp.service: Service lacks both ExecStart= and ExecStop= setting. Refusing.

내가 which java 를 할 때  알겠습니다 :

pi@raspberrypi:/lib/systemd/system $ which java
/usr/bin/java

그래서 왜 systemd 를 이해하지 못합니다  실행 경로에 대해 불평하고 있습니다.어떻게 문제를 해결할 수 있습니까?

  • 답변 # 1

    와이즈 비즈  경로는 절대적이지 않습니다. 시스템 단위가 시스템 단위 인 경우 시스템 단위는 기본적으로 루트로 실행되므로 sudo는 필요하지 않습니다.

    편집 : JVM과 전체 Java 응용 프로그램을 루트로 실행하는 대신 권한이없는 사용자로 서비스를 실행하는 것이 좋습니다. 응용 프로그램이 특권이없는 사용자에게 정상적으로 부여되지 않은 일부 기능이 필요한 경우 sudo 를 사용하여 추가 할 수 있습니다.  환경. 예를 들어, AmbientCapabilities 에 다음 줄을 추가하여  섹션 :

    [Service]
    
    

    서비스는 사용자 AmbientCapabilities=CAP_SYS_RAWIO User=nobody 로 실행됩니다  그러나 nobody 가 부여됩니다  기능.

    CAP_SYS_RAWIO

  • 이전 cinnamon - 데비안 9에서 노틸러스 파일 관리자와 함께 사라진 데스크탑 아이콘
  • 다음 런타임에 설정 한 Xterm 구성을 어떻게 저장합니까?