minuterie systemd toutes les 15 minutes

33

J'essaie de faire une minuterie systemd qui s'exécute toutes les 15 minutes. En ce moment j'ai:

  • timer-fifteen.timer:

    [Unit]
    Description=15min timer
    
    [Timer]
    OnBootSec=0min
    OnCalendar=*:*:0,15,30,45
    Unit=timer-fifteen.target
    
    [Install]
    WantedBy=basic.target  
    
  • timer-fifteen.target:

    [Unit]
    Description=15min Timer Target
    StopWhenUnneeded=yes
    

Cela se répète sans arrêt. A-t-il besoin d'être à la *:0,15,30,45:*place? Comment puis-je faire ce travail?

Lily Hahn
la source
2
Votre syntaxe ne signifie-t-elle pas toutes les 15 secondes ?
Pavel Šimerda

Réponses:

43

Votre syntaxe se traduit toutes les 15 secondes . Si vous voulez toutes les 15 minutes , le moyen le plus lisible de l’OMI est:

OnCalendar=*:0/15

Une réponse très similaire à celle que vous utilisez dans votre question est la suivante:

OnCalendar=*:0,15,30,45

Plus d'information:

Pavel Šimerda
la source
3
OnCalendar=0/8:00:00est correct de dire "courir toutes les 8 heures"?
shackra
4
Oui. Mais vous le savez probablement déjà maintenant. :)
Pavel Šimerda
Je ne l'ai pas fait, mais j'ai quand même utilisé ça lol. Merci pour votre confirmation!
shackra
OnCalendar=*:0/15devrait traduire OnCalendar=*:0,15,30,45exactement (étant donné que je l’ai lu correctement dans la documentation). Toutes les 8 heures seraient réalisées avec OnUnitActiveSec=8hours.
Debilski
3
Lorsque vous spécifiez un intervalle, la sortie de systemd-analyzepeut s'avérer utile, par exemple, essayez systemd-analyze calendar *:0/15.
Sébastian
12

Selon le systemd.time , le réglage

OnCalendar=*:0/15

se traduit exactement par

OnCalendar=*:0,15,30,45

c'est à dire. il active l’unité exactement à l’heure complète, ainsi qu’à trois heures et demie et à une heure et quart.

Selon votre service, cela peut ne pas être ce que vous voulez, ni ce dont vous avez besoin dans tous les cas.

Une minuterie qui s'exécute toutes les 15 minutes - par exemple à 1:02, 1:17, 1:32, 1:47, 2:02,… - toujours en fonction de l'heure de la dernière exécution - peut être réalisée avec systemd. réglage de la minuterie

OnUnitActiveSec=15min

Maintenant, vous voudrez également que l’unité démarre quelque temps après le démarrage (à moins que vous ne souhaitiez l’activer manuellement ou qu’elle ait une dépendance qui le fasse), vous devriez donc peut-être spécifier

OnBootSec=10min
OnUnitActiveSec=15min

faire démarrer l’appareil 10 minutes après le démarrage, puis toutes les 15 minutes après cette première fois.

De plus, il existe un paramètre OnUnitInactiveSecqui commence à compter le temps après l' arrêt du service (ou, plus généralement, l'unité est désactivée).

Debilski
la source
1
Attention: OnUnitActiveSec semble être assez cassé .
Anders Kaseorg le