成功するまで再試行する必要がある2つのrsyncコマンドを順番に実行するためのsystemdサービスファイルを作成しました。時々 rsync サーバーがダウンすることがあります。 Systemdは、Type = oneshotサービスがRestart = on-failureを許可しないことを伝えます。どのような種類のサービスを利用できますか?
[Unit]
Description=Sync
[Service]
Type=oneshot
Restart=on-failure
ExecStart=/usr/bin/rsync -atvzq --no-owner --no-group --delete rsync://(some address) /srv/www/
ExecStart=/usr/bin/rsync -atvzq --no-owner --no-group --delete rsync://(some address) /srv/www1/
ベストアンサー1
私はあなたがType=oneshot
これを使っていくつかのコマンドを持つことができると仮定しますExecStart=
。その他には、Type=oneshot
活性化成功後に実行されるサービスがないようで、使用していないので使用する理由がありません。RemainAfterExit=true
代わりに使用しType=simple
て使用してください。ExecStartPre=
[Service]
Type=simple
Restart=on-failure
ExecStartPre=/usr/bin/rsync -atvzq --no-owner --no-group --delete rsync://(some address) /srv/www/
ExecStart=/usr/bin/rsync -atvzq --no-owner --no-group --delete rsync://(some address) /srv/www1/
次のことが起こります。
ExecStartPre=
コマンドの前に実行されますExecStart=
。- 実行中、
ExecStartPre=
デバイスは「アクティブ」になります。 ExecStartPre=
失敗するとExecStart=
実行されず、デバイスは「失敗」と見なされ、再起動されます。- 実行中、
ExecStart=
デバイスは「アクティブ」になります。 - 完了すると、
ExecStart=
すべてが成功するとデバイスは「非アクティブ(死)」状態になり、コマンドが失敗すると「失敗」状態になります。
ExecStartPre=
失敗を無視してExecStart=
強制するには、ゼロ以外の終了コードを無視するようにExecStartPre=
コマンドの前に付けます。-