외부 미디어가 마운트되었는지 확인하기 위해 시작 시 확인하는 시스템 서비스가 있습니다.
[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
. 그것이 무엇을하는지 모릅니다.