条件が失敗した場合は、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

プレリリーススクリプトで、外部メディアがループに遅延マウントされていることを確認してください。

おすすめ記事