web-dev-qa-db-ja.com

systemdサービスユニットのRestart&RestartSecを使用するか、systemdタイマーユニットを使用する方が良いですか?

社内の自動化スクリプトが定期的に実行されています。 1つは5分ごと、もう1つは1分ごとです。実際にオンザドットで実行する必要はありません。例えば12:00、12:05など、または12:03、12:08などに実行してもかまいません。一定の間隔が必要です。

現在、指定した間隔でこれらのスクリプトを実行しているcrontabがあります。ただし、同じマシンにカスタムの社内systemdサービスユニットファイルもあります。スクリプトをsystemdサービスユニットとタイマーファイルに移動するのが良いのか、あるいは、RestartおよびRestartSecディレクティブでsystemdサービスユニットファイルを使用するのが良いのか知りたいと思っていました。

何かを言い換える必要があるか、不明な点があるかをお知らせください。

具体的には、 systemd.service units の定義はRestart=alwaysおよびRestartSec=300は、「前回の実行の終了コードを無視して、常に5分ごとに実行する」と同義です。ただし、同じことを行うように構成できる systemd.timer unit もありますが、正常終了のみなどの特定の終了コードを使用する可能性があります。

私は両方の長所と短所を探しています。

ありがとう!

5
Carl Bennett

プロセスマネージャーを使用して作業を行うことをお勧めします。幸いなことに、これまでにない最高のプロセスマネージャーsystemdがいます。私の目には、両方のソリューションがあなたのケースで機能しているとしても、それは意味論についてです。

  • 話しているcronのようなスケジュールにはタイマーユニットを使用します。
  • 再起動ステートメントを使用して、予期せず終了するタスクの再起動ポリシーを指定します。つまり、失敗した場合に備えて、タイマーユニットの再起動ポリシーを定義することもできます。 1より大きいRestartSecを定義しないと、ユニットを再起動するとすぐにホールドオフタイムアウトに達するため、ユニットを再起動するとすぐに障害状態になります。
11
xh3b4sd