使用systemd服务单元的Restart&RestartSec还是使用systemd定时器单元更好?

我有一些定期运行的内部自动化脚本。 一个是每五分钟一个,另一个是每分钟。 他们并不需要在点上跑; 例如我不在乎他们是在12:00,12:05等还是在12:03,12:08等运行,我只需要一个稳定的时间间隔。

目前,我有crontab以指定的时间间隔运行这些脚本。 但是,在同一台机器上,我也有自定义的内部systemd服务单元文件。 我很好奇将脚本移动到systemd服务单元和定时器文件,还是使用带有Restart和RestartSec指令的systemd服务单元文件更好。

让我知道如果我需要重新措辞或如果我不清楚。

具体来说, systemd.service单元的定义将Restart=alwaysRestartSec=300翻译为“每隔五分钟总是运行一次而忽略上一次运行的退出代码”的同义词。 但是,也有systemd.timer单位可以configuration做相同的,但可能与特定的退出代码,如只成功退出。

我正在寻找两者的优点和缺点。

谢谢!

我build议使用stream程pipe理器来完成你的工作。 幸运的是,你有最好的过程经理, systemd 。 在我看来,它是关于语义的,即使两种解决scheme都适合您的情况。

  • 使用计时器单位为您正在谈论类计划。
  • 使用重新启动语句来指定一个意外结束的任务的重新启动策略。 这意味着您甚至可以为您的定时器单元定义重启策略,以防失败。 请记住,重启单元会快速进入失败状态,因为如果您没有定义大于1的RestartSec ,则会很快达到释抑超时。