비정상 종료 후 다른 매개변수로 애플리케이션을 시작하는 시스템 단위 서비스 작성

비정상 종료 후 다른 매개변수로 애플리케이션을 시작하는 시스템 단위 서비스 작성

매개변수 없이 애플리케이션을 시작하고 충돌 시 매개변수를 사용하여 다시 시작하려면 systemd 단위 서비스가 필요합니다.

나는 몇 가지 앱을 작성했는데 작동했습니다. 하지만 알 수 없기 때문에 충돌 시 자세한 정보 표시 모드로 다시 시작하여 로그 파일에 더 많은 정보가 있도록 하려고 합니다.

저는 Raspbian/Linux 9(strech) 및 Systemd 232-25+deb9u2를 사용하는 Raspberry Pi에서 실행하고 있습니다.

[Unit]
Description=Example Application
PartOf=app.service
After=app.service

[Service]
ExecStart=/home/pi/exampleApp
ExecRestart=/home/pi/exampleApp -V
Restart=always

[Install]
WantedBy=app.service

서비스를 시작하고 애플리케이션을 다시 시작했습니다. 다른 서비스에 대한 종속성으로 시작하는 것도 가능합니다. 하지만 애플리케이션이 다시 시작될 때 매개변수로 시작하는 솔루션을 찾을 수 없습니다.

충돌/불순한 종료 후 매개 변수를 사용하여 응용 프로그램을 시작하는 방법에 대한 아이디어가 있습니까?

답변1

간단한 해결책이 있는지 확실하지 않습니다(따라서 기본적으로 자세한 정보 표시 모드에서 애플리케이션을 시작하는 것을 고려해 볼 가치가 있을 수 있습니다).

당신이 원하는 것의 적어도 일부를 달성하는 제안은 다음과 같습니다. ExecStart=애플리케이션이 정상적으로 실행되면 아래 표시된 서비스 단위는 애플리케이션을 일반 모드( )로 시작합니다. 어떤 이유로 애플리케이션이 시작되지 않으면 ExecStopPost=두 번째 시도( )에서 서비스가 자세한 정보 표시 모드로 실행됩니다.

[Unit]
Description=verbose-start-on-failure Service
After=app.service

[Service]
RemainAfterExit=yes
ExecStart=/home/pi/exampleApp
ExecStopPost=/home/pi/exampleApp -V

[Install]
WantedBy=app.service

그러나 애플리케이션이 성공적으로 시작되었지만 나중에 어떤 이유로 충돌이 발생하는 경우 이 서비스 단위는 애플리케이션을 자동으로 다시 시작하지 않습니다(종속성을 추가해도 PartOf=효과가 없습니다).

관련 정보