J'ai une configuration cron pour exécuter un script bash tous les jours à 22h. J'ai une autre configuration cron à exécuter mensuellement le 1er du mois. Les deux crons lancent un script bash, et la seule différence dans le script bash est l'argument qu'ils passent dans le programme java sous-jacent (émulant le lancement en ligne de commande du programme java).
Le problème est que je dois désactiver le cron quotidien en quelque sorte le 1er du mois afin que les deux n'essaient pas de s'exécuter le même jour. Est-ce possible de le faire automatiquement?
Je suppose que je peux créer un autre script bash pour éditer le cron avant le 1er puis à nouveau après pour remettre les choses en place, mais cela semble ... impur.
shell-script
cron
SnakeDoc
la source
la source
Réponses:
Dans la même veine que la solution proposée par @StephaneChazelas dans les commentaires, vous pouvez spécifier la plage de jours dans le 3e champ comme plage pour le cron que vous souhaitez exécuter tous les jours en plus du 1er du mois.
Les deux entrées suivantes accompliraient ce que vous recherchez:
la source
La façon la plus simple de gérer cela est d'avoir une seule entrée cron. Modifiez le script bash pour vérifier la date - si c'est le 1er du mois, appelez le programme java avec les paramètres mensuels, sinon appelez le programme avec les paramètres quotidiens.
Changer le script rend le processus plus simple car le script en tant que document décrit mieux ce qui se passe sans nécessiter d'informations supplémentaires dans une table cron.
Les mods de script pourraient ressembler à ceci:
la source
Je pense qu'en utilisant la comparaison entière si plus correcte
la date '+% d' renvoie 01 et non 1, donc l'utilisation de la comparaison de chaînes == sera fausse
au lieu
la source