backup.serviceがbackup.timerによって毎時間呼び出されます。残念ながら、コンテナ内で実行されているバックアップスクリプトはを完了できますが、警告が発生してゼロ以外の終了コードが返されます。そのため、すべてが機能している可能性がありますが、コンテナはゼロ以外の終了コードで停止します。したがって、ユニットは艦隊でfailed状態になります。
その場合は、systemdのドキュメントでそれを言っているものは何も見つかりませんでしたが、タイマーがこのユニットを再び起動しないようです。
明確にするために、ゼロ以外の終了コードでコンテナを停止することは完全に問題ありません。しかし、タイマーが機能しなくなります。
これで、そのスクリプトを別のスクリプトにカプセル化して、次にals docker entrypointと呼びます。しかし、出力auf STDOUTおよびSTDERRが何らかの形で保持されることを確認する必要があります。
ユニットに障害が発生した後、Sudo systemctl reset-failedを実行することもできましたが、これは私には少しハッキーなようです...ユニットを再び使用します。ただし、サービスファイルのExecStopPost-Taskとしては機能しません)
ユニットを確認するより良い方法はありますか
コマンドの前に-
を付けると、systemdは失敗を無視し、ユニットを失敗状態にしません。したがって、代わりに
ExecStart=/path/to/your/command
試す
ExecStart=-/path/to/your/command
詳細は systemd のマニュアルページを参照してください。
someの戻り値を無視したいが、一部のothersをエラーとしてsystemdにカウントさせたい場合は、それらを指定できますSuccessExitStatus
、RestartPreventExitStatus
、およびRestartForceExitStatus
へのスペース区切りリストとしての.serviceファイルの[Service]
セクション。これらも信号名を取ります。