Une doublure qui réécrit de manière aléatoire l'heure de démarrage de cron

C'est une petite histoire.

Connaissances préalables

Dans bash, vous pouvez obtenir aléatoirement des nombres de 0 à 32767 en utilisant la variable d'environnement $ RANDOM.

Par exemple, pour afficher les nombres de 0 à 3 de manière aléatoire, combinez les symboles d'opérateur restants «%» comme suit.

Afficher aléatoirement les nombres de 0 à 3


echo $((RANDOM % 4))

C'est le nombre de 5 à 59.

Afficher aléatoirement les nombres de 5 à 59


echo $((5 + RANDOM % 55))

L'explication de ce domaine était beaucoup plus facile à comprendre dans [Faites-le au hasard avec un script shell], veuillez donc vous y référer.

Pour réécrire le champ de temps de cron

Le sujet principal. Supposons que le cron suivant soit défini sur la dernière ligne.

00 2 * * * /home/mindwood/foo.sh > /dev/null 2>&1

Il est configuré pour démarrer à 2h00 du matin, mais je voudrais définir cela pour qu'il commence de 0h05 à 3h59 et lui donner une plage. En plus de ça, je veux éviter juste toutes les heures (1h, 2h ...).

Voici la seule doublure à réécrire.

H=$((RANDOM%4));M=$((5+RANDOM%55));sed -i -e '$s/^[0-9]\+ [0-9]\+/'$M' '$H'/' /var/spool/cron/crontabs/root

Par exemple, il est mis à jour comme suit.

43 1 * * * /home/mindwood/foo.sh > /dev/null 2>&1

Si vous n'aimez pas cette fois, vous pouvez recommencer.

Le «$» de «sed» représente la dernière ligne. Pour plus d'informations sur sed, veuillez vous référer à [Comment écrire dans ce cas avec sed?].

Recommended Posts

Une doublure qui réécrit de manière aléatoire l'heure de démarrage de cron
Une doublure qui affiche magnifiquement cron pour tous les utilisateurs
Grep pour que grep n'apparaisse pas au moment de grep
Une fonction qui mesure le temps de traitement d'une méthode en python
Traiter le résultat de% time,% timeit
Une note sur les fonctions de la bibliothèque Linux standard qui gère le temps
Ceci et celui de la notation d'inclusion.
Python3 + pyperclip qui réécrit le texte copié
Arrêter le démarrage automatique d'Apache Nginx
J'ai fait un outil pour estimer le temps d'exécution de cron (+ débuts de PyPI)
Avantages et inconvénients de Django que pensent les personnes ayant un an d'expérience
Avec LINEBot, j'ai fait une application qui m'informe de "l'heure du bus"