2 votes

Exécuter le timer exactement toutes les secondes avec systemd

Comment exécuter un service exactement toutes les secondes ? Chevauchement autorisé.

Voici mon unité de temporisation pour systemd :

[Unit]
Description=Send jobs every second

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

[Install]
WantedBy=multi-user.target

Mais app.jobs-send.service Le service ne s'exécute pas chaque seconde :

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.

Il y a un écart d'environ 17:57:58 - 17:57:48 = 10 secondes.

Comment exécuter une tâche chaque seconde ?

1voto

Mark Stosberg Points 3050

Comme le montre le document man systemd.time la précision de OnUnitActiveSec= est soumis à la AccuracySec= qui est également documenté ici. Régler sur AccuracySec=1us pour une meilleure résolution.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X