Linux

使用 systemd 服務單元的 Restart & RestartSec 更好還是使用 systemd 計時器單元更好?

  • October 11, 2014

我有幾個定期執行的內部自動化腳本。一個是每五分鐘一次,另一個是每分鐘一次。他們真的不需要在現場執行。例如,我不在乎它們是在 12:00、12:05 等還是在 12:03、12:08 等執行,我只需要一個穩定的間隔。

目前,我有 crontab 以指定的時間間隔執行這些腳本。但是,在同一台機器上,我也有自定義的內部 systemd 服務單元文件。我很好奇將我的腳本移動到 systemd 服務單元和計時器文件,或者只是使用帶有 Restart 和 RestartSec 指令的 systemd 服務單元文件會更好。

讓我知道我是否需要重新措辭或者我不清楚。

具體來說,systemd.service 單元的定義翻譯“總是每五分鐘執行一次,而忽略前一次執行的退出程式碼”。但是,也有systemd.timer 單元可以配置為執行相同的操作,但可能具有特定的退出程式碼,例如僅成功退出。Restart=always``RestartSec=300

我正在尋找兩者的優點和缺點。

謝謝!

我建議使用流程管理器來完成您的工作。幸運的是,您擁有有史以來最好的流程管理器,systemd. 在我看來,這與語義有關,即使兩種解決方案都適用於您的情況。

  • 將計時器單元用於您正在談論的類似 cron 的計劃。
  • 使用重新啟動語句來指定意外結束的任務的重新啟動策略。這意味著您甚至可以為您的計時器單元定義重新啟動策略,以防它們失敗。請記住,重新啟動單元會很快進入失敗狀態,因為如果您沒有定義RestartSec大於 1,它們會很快達到延遲超時。

引用自:https://serverfault.com/questions/610795