![다른 systemd 서비스가 실패할 때 oneshot systemd 서비스를 시작하는 방법](https://linux55.com/image/192499/%EB%8B%A4%EB%A5%B8%20systemd%20%EC%84%9C%EB%B9%84%EC%8A%A4%EA%B0%80%20%EC%8B%A4%ED%8C%A8%ED%95%A0%20%EB%95%8C%20oneshot%20systemd%20%EC%84%9C%EB%B9%84%EC%8A%A4%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
systemd 서비스가 실패할 때 기본 애플리케이션(C++)을 시작하고 싶습니다. 유사한 내용을 설명하는 온라인 기사가 많이 있습니다. 즉, 실패 시 쉘 스크립트를 시작하는 것입니다. 같은 서비스를 이용하는 사람도 있고, 다른 서비스를 이용하는 사람도 있습니다. 다른 서비스에서 기본 애플리케이션을 실행하려고 합니다.
애플리케이션서버.서비스
[Unit]
Description=app server
OnFailure=appServerCrashAlerter.service
[Service]
Type=simple
ExecStart=/home/john/Documents/app
Restart=always
RestartSec=3
KillMode=process
[Install]
WantedBy=graphical.target
appServerCrashAlerter.service
[Unit]
Description=app server crash alerter
[Service]
Type=oneshot
ExecStart=/home/john/Documents/alerter
User=nobody
Group=systemd-journal
첫 번째 서비스가 실패하면 경고 서비스가 시작되지 않습니다. 두 번째 서비스를 활성화할 수 없지만 서비스를 시작하면 애플리케이션이 올바르게 시작됩니다. 저는 Ubuntu 20.04와 systemd 245(245.4-4ubuntu3.4)를 사용하고 있습니다.