我正在写一个 systemd 计时器。 WantedBy 应该使用什么值?

我正在写一个 systemd 计时器。 WantedBy 应该使用什么值?

在各种示例中,我看到了所有建议的不同选择:

  • WantedBy=timers.target
  • WantedBy=多用户.target
  • WantedBy=basic.target
  • WantedBy=default.target
  • WantedBy=mytimer.target(自定义用户定义名称)

然而,在我找到的例子中,没有提供进一步的解释。

以下页面也没有对 WantedBy 提供任何解释:

我想了解一种简单的方法,当需要编写 systemd 计时器而不是 cron 作业时,我可以使用它。

*设置 cron 作业仅需 1 行。 Systemd 计时器涉及写入两个文件并运行一两个 systemctl 命令。但根据我的经验,这一事实并不一定是 systemd 计时器比 cron 更难的原因——它有多种选择,而且(似乎)缺乏清晰的文档和简单的示例来充分解释。

答案1

对于简单的用例,请使用WantedBy=timers.target.看man systemd.special:

timers.target

设置所有计时器单元的特殊目标单元(请参阅 systemd.定时器(5)有关详细信息),该选项应在启动后处于活动状态。

建议应用程序安装的计时器单元通过Wants=该单元的依赖项拉入。最好通过WantedBy=timers.target定时器单元的“ [Install]”部分进行配置。

默认情况下,计时器具有 的依赖性Before=timers.target。而且,如果你检查man bootup,您会看到它作为依赖项basic.target引入。timers.target所以我认为WantedBy=basic.target在大多数情况下似乎都可以正常工作(对于default.target,通常是multi-user.targetgraphical.target,两者都在 后面basic.target)。但:

timers.target被异步拉入basic.target。这允许定时器单元依赖于仅在启动后才可用的服务。

因此,依赖于其他服务单元的更复杂的计时器会timers.target比依赖于任何其他服务单元更好。

相关内容