4 votes

Arrêter la tâche Cron pour un intervalle de temps particulier

J'ai une tâche cron qui s'exécute toutes les cinq minutes toute la journée.

Je veux arrêter cette tâche cron qui s'exécute le dimanche entre 16h et 17h - elle devrait redémarrer après cette heure.

Comment puis-je scripter cela?

4voto

Linker3000 Points 26898

Collez ceci en haut de votre script de tâche cron (modifié selon vos besoins)...

if [[ $(date +%u) -eq 7 && $(date +%H) -eq 16 ]]; then
  echo "Je ne fonctionne pas à ce moment-là"
  exit 1
fi
echo "Quelque chose à faire à d'autres moments ici..."

La première instance de "date" renvoie le jour de la semaine (dimanche = 7), la deuxième renvoie l'heure (16 = 16h00 - 16h59). Si le script constate qu'il est actuellement jour 7 et heure 16, il s'arrêtera.

4voto

DaSteph Points 64

Que diriez-vous de :

*/5 * * * * job.sh > /dev/null

00 16 * * 0 touch /tmp/stopJob.lck
00 17 * * 0 rm -f /tmp/stopJob.lck

Dans job.sh, arrêtez-vous si le fichier existe :

if [ -f /tmp/stopJob.lck ] 
then 
  exit
fi

0voto

pavium Points 6334

Vous n'aurez peut-être pas besoin de beaucoup si votre tâche cron exécute un script et que vous pouvez le faire vérifier l'absence d'un processus configuré pour s'exécuter entre 16h et 17h le dimanche

Par exemple, j'utilise une tâche cron toutes les 15 minutes qui invoque rsync mais seulement si rsync n'est pas déjà en cours d'exécution.

Il utilise la commande pidof pour vérifier si un identifiant de processus particulier est en cours d'exécution:

PID=$(pidof rsync)

if [ -z $PID ]
then 
    rsync -avz ....
fi

Vous devrez travailler sur les détails de votre situation particulière. Je le présente maintenant comme une idée à prendre en considération.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X