假设我想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 单元的行为就像常规单元一样。一旦它们不再在任何地方被引用,它们就会按照描述被垃圾收集这里。