如何在没有单元/计时器文件的情况下在命令行上创建临时用户级 systemd 计时器?

如何在没有单元/计时器文件的情况下在命令行上创建临时用户级 systemd 计时器?

假设我想notify-send "invoked" "$(date)"使用 systemd 计时器每 5 秒运行一次该命令。

我知道如何创建相应的单元文件和计时器文件,然后enable是用户的计时器,但我想要一个纯粹的基于 CLI 的解决方案。

我想简单地在命令行中执行上述操作,而不需要创建 2 个文件。就像是:systemd-blah enable my_command --every 5s

答案1

您正在寻找systemd-run,特别是与计时器相关的选项之一:--on-active=, --on-boot=, --on-startup=, --on-unit-active=, --on-unit-inactive=--on-calendar=

使用单调定时器:

systemd-run --user --on-startup=0s --on-unit-inactive=5s --timer-property=AccuracySec=100ms sh -c 'notify-send "invoked" "$(date)"'

使用日历(挂钟)定时器:

systemd-run --user --on-calendar='*:*:0/5' --timer-property=AccuracySec=100ms sh -c 'notify-send "invoked" "$(date)"'

请注意,默认计时器精度为 1 分钟,这对于短至 5 秒的计时器间隔来说太粗略了。

其他对您有用的参数systemd-run可能需要使用包括--unit/-u(用于命名单位)和--description(用于提供由 systemd、日志等显示的描述,而不是触发的命令)。

瞬态 systemd 单元的行为就像常规单元一样。一旦它们不再在任何地方被引用,它们就会按照描述被垃圾收集这里

相关内容