조건이 실패하면 systemd를 다시 시도하세요.

조건이 실패하면 systemd를 다시 시도하세요.

외부 미디어가 마운트되었는지 확인하기 위해 시작 시 확인하는 시스템 서비스가 있습니다.

[Unit]
Description=My App
ConditionPathIsMountPoint=/mnt/sdcard

[Service]
WorkingDirectory=/opt/myapp
ExecStartPre=+/opt/myapp/bin/pre.sh
ExecStart=/opt/myapp/bin/myapp
ExecStop=/bin/kill -INT ${MAINPID}
ExecReload=/bin/kill -INT ${MAINPID} && /opt/myapp/bin/myapp
Restart=always
RestartSec=5
User=user
Group=user

[Install]
WantedBy=multi-user.target mnt-sdcard.mount

myapp설치 까지 시작을 기다리고 싶습니다 /mnt/sdcard. 그러나 서비스가 그렇게 잘 작동하지 않았습니다. 설치 미디어가 지연되면 systemd에서 예외가 발생 start condition failed하고 재시도하지 않습니다.

# systemctl status myapp
● myapp.service - My App
   Loaded: loaded (/etc/systemd/system/myapp.service; enabled; vendor preset: enabled)
   Active: inactive (dead)
Condition: start condition failed at Wed 2021-01-27 14:22:31 JST; 2h 35min ago
            ConditionPathIsMountPoint=/mnt/sdcard was not met

시작 조건이 실패할 때 시작을 다시 시도하는 방법은 무엇입니까?

답변1

사전 출시 스크립트에서 외부 미디어가 루프에 지연 마운트되어 있는지 확인하세요.

답변2

부팅 시 SD 카드를 마운트해야 하는 경우 조건 대신 다음을 추가할 수 있습니다.

Requires=mnt-sdcard.mount

mnt-sdcard.mount에서 제거되었습니다 WantedBy. 그것이 무엇을하는지 모릅니다.

관련 정보