使用 systemd 每秒精确运行计时器

Ant*_*dev 5 systemd devops

如何精确地每秒运行一些服务?允许重叠。

这是我的 systemd 计时器单元:

[Unit]
Description=Send jobs every second

[Timer]
OnBootSec=1min
OnUnitActiveSec=1s
Unit=app.jobs-send.service

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

app.jobs-send.service服务不会每秒执行一次:

May 07 17:57:38 app.deployer.org systemd[1]: Started Send jobs to queue.
May 07 17:57:48 app.deployer.org systemd[1]: Starting Send jobs to queue...
May 07 17:57:48 app.deployer.org systemd[1]: Started Send jobs to queue.
May 07 17:57:58 app.deployer.org systemd[1]: Starting Send jobs to queue...
May 07 17:57:58 app.deployer.org systemd[1]: Started Send jobs to queue.
May 07 17:58:08 app.deployer.org systemd[1]: Starting Send jobs to queue...
May 07 17:58:08 app.deployer.org systemd[1]: Started Send jobs to queue.
Run Code Online (Sandbox Code Playgroud)

17:57:58 - 17:57:48 = 10 秒之间存在差距。

如何每秒执行一次任务?

Mar*_*erg 8

正如man systemd.time中记录的那样, 的准确性OnUnitActiveSec=取决于AccuracySec=设置,也记录在那里。设置AccuracySec=1us为最佳分辨率。