GNU/Linux >> Tutoriels Linux >  >> Linux

Comment dire à Cron d'exécuter une commande tous les deux jours (pair/impair) ?

Lors de la configuration de cron pour exécuter une commande tous les deux jours en utilisant le champ "Jour du mois", comme ceci :

1 22 */2 * * COMMAND

il s'exécute chaque fois que le jour du mois est impair :1,3,5,7,9 et ainsi de suite.

Comment puis-je configurer cron pour qu'il s'exécute les jours du mois qui ressemblent à 2, 6, 8, 10, etc. (sans le spécifier littéralement, ce qui est problématique car chaque mois a un nombre différent de jours dans le mois) ?

Réponse acceptée :

La syntaxe que vous avez essayée est en fait ambiguë. Selon le nombre de jours dans le mois, certains mois, il fonctionnera les jours impairs et d'autres les jours pairs. C'est parce que la façon dont il est calculé prend le nombre total de possibilités et les divise. Vous pouvez remplacer ce comportement étrange en spécifiant manuellement la plage de jours et en utilisant un nombre de jours pair ou impair. Étant donné que les scripts de jour pair ne s'exécuteraient jamais le 31e jour des mois plus longs, vous ne perdez rien en utilisant 30 jours comme base pour les jours pairs, et en spécifiant spécifiquement de le diviser comme s'il y avait 31 jours, vous pouvez forcer impair -jour d'exécution.

La syntaxe ressemblerait à ceci :

# Will only run on odd days:
0 0 1-31/2 * * command

# Will only run on even days:
0 0 2-30/2 * * command

Votre préoccupation concernant les mois qui n'ont pas le même nombre de jours n'est pas importante ici car aucun mois n'a PLUS de jours que cela, et pour le mauvais février, la plage de dates ne correspondra jamais au dernier jour ou aux deux derniers, mais cela ne fera aucun mal l'avoir répertorié.

Le seul "piège" de cette approche est que si vous êtes sur un cycle de jours impairs, les mois suivants avec 31 jours, votre commande s'exécutera également le premier du mois. De même, si vous forcez un cycle pair, chaque année bissextile entraînera un cycle de trois jours fin février. Vous ne pouvez pas vraiment contourner le fait qu'un schéma régulier de "tous les deux jours" ne tombera pas toujours les jours pairs ou impairs de chaque mois et, quelle que soit la façon dont vous forcez cela, vous aurez soit une course supplémentaire, soit vous manquerez une course entre mois avec des décomptes de jours incompatibles.

En relation :Linux – Raccourci pour minimiser toutes les fenêtres ?
Linux
  1. Comment exécuter une commande stockée dans une variable ?

  2. Comment exécuter Cron toutes les 5 minutes, secondes, heures, jours, mois

  3. Comment exécuter une tâche cron certains jours de la semaine

  4. Comment mettre en place une tâche cron pour lancer un exécutable toutes les heures ?

  5. Comment exécuter le travail cron toutes les heures et 10 minutes

Comment exécuter des commandes Linux en arrière-plan

Comment exécuter des tâches Cron toutes les 5, 10 ou 15 minutes

Comment exécuter une commande Linux toutes les X secondes pour toujours

Comment planifier une tâche dans Cron pour qu'elle s'exécute toutes les heures dans Ubuntu 20.04

Comment puis-je exécuter une tâche cron toutes les 30 minutes ?

Comment exécuter une tâche cron à une heure précise chaque jour ?