Je dois pouvoir exécuter un script 20 fois par jour à des heures complètement aléatoires. Je veux également qu'il ne s'exécute qu'entre 9 h et 23 h.
Je suis familier avec la création de tâches cron sous linux.
Je dois pouvoir exécuter un script 20 fois par jour à des heures complètement aléatoires. Je veux également qu'il ne s'exécute qu'entre 9 h et 23 h.
Je suis familier avec la création de tâches cron sous linux.
Ma première idée serait de créer une tâche cron qui lancerait 20 tâches programmées de manière aléatoire. Le site at
(http://unixhelp.ed.ac.uk/CGI/man-cgi?at) est utilisé pour exécuter des commandes à un moment précis.
J'ai tout essayé et ça n'a toujours pas marché pour moi. Votre post m'a expliqué pourquoi, merci !
Je me rends compte que c'est un vieux fil de discussion, mais je veux ajouter une chose liée aux valeurs aléatoires que j'utilise souvent. Au lieu d'utiliser la variable $RANDOM avec une plage fixe et limitée, je crée souvent des valeurs aléatoires de plage arbitraire dans le shell avec
dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -N4 -t u4 -A none
pour que vous puissiez faire, par exemple,
FULLRANDOM=$(dd if=/dev/urandom bs=4 count=1 2>/dev/null | od -N4 -t u4 -A none)
et de surmonter certaines des restrictions qui ont été discutées dans ce fil.
Bienvenue à SO. Eh bien, vieux fil ou pas, cela m'a envoyé sur ~$info dd
et je peux comprendre ce qu'il se passe sur le côté gauche de |
mais je ne peux pas voir le côté droit. Donc, pour moi et les autres personnes intéressées overcoming some restrictions
dans la génération de valeurs aléatoires, pourquoi ne pas prendre le temps d'expliquer l'ERS et d'argumenter en faveur de l'utilisation de votre approche. La profondeur de l'explication rend les gens à l'aise avec le processus que vous suggérez et ses avantages Merci.
Ah ok. od aka "octal dump" prend un fichier ou stdin et vide les données binaires dans une forme lisible par l'homme. Nous voulons que notre nombre soit affiché comme un décimal non signé (-t u4), et nous ne voulons pas l'index d'adresse (-A none). Le -N4 est redondant puisque nous ne prenons que 4 octets, mais ne fait pas de mal non plus. J'espère que cela explique tout...
at -f [file] [timespec]
o
echo [command] | at [timespec]
o
at [timespec]
... et des spécifications interactives comme script
de l'enregistrement.
En cours, le texte prévoit stdin ou dans le fichier spécifié par -f [file]
.
Voici le [timespec]
grammaire . Cela peut être quelque chose comme :
0100
, 2359
, 1620
now + 10 minutes
2071-05-31 - 5 hours 12 minutes UTC
Si vous spécifiez explicitement le fuseau horaire, certaines versions du timespec pourrait seulement permettre UTC
pour l'argument facultatif du fuseau horaire.
cat script.sh | at now + $(($RANDOM % 10)) hours $(($RANDOM % 60)) minutes
at -f script.sh now + $(($RANDOM % 10)) hours $(($RANDOM % 60)) minutes
Vous pouvez tester l'analyse syntaxique de bash en plaçant en pré-pending echo
et d'échapper à la |
(tuyau).
echo cat script.sh \| at now + $(($RANDOM % 10)) hours $(($RANDOM % 60)) minutes
echo at -f script.sh now + $(($RANDOM % 10)) hours $(($RANDOM % 60)) minutes
Pour voir les travaux programmés, utilisez atq
et le contenu du travail (vars d'environnement, setup, et commande/script) avec at -c [jobid]
.
Le système fait partie de cron, et l'invite interactive capture en fait l'ensemble de l'état actuel de votre shell, de sorte que vous pouvez exécuter des commandes sans spécifier de chemin absolu.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
La question n'est pas très bien posée. En fin de compte, vous voulez distribuer 20 points sur l'axe du temps entre 9 heures et 11 heures. Mais existe-t-il des contraintes sur la différence de temps minimale ? Ne rien faire entre 9h et 10h30 est-il acceptable ? La seule façon d'y parvenir de manière acceptable semble être l'idée de Klaus : sélectionnez vos 20 heures à 09:00, ce qui vous permet de respecter toutes les contraintes que vous pourriez avoir, puis programmez les choses avec "à".