C'est une petite histoire.
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.
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