J'ai un étrange problème avec $ RANDOM dans cron. Je souhaite exécuter une commande un nombre aléatoire de minutes après le déclenchement du cronjob.
Cet exemple fonctionne directement dans le terminal et retarde la commande jusqu'à 30 secondes (remplacez la commande par ce que vous voulez, c'est en fait un écho à / dev / ttyUSB0):
sleep `expr $RANDOM \% 30` ; command
Si la même ligne est placée dans crontab, la commande se déclenche toujours immédiatement sans délai:
* * * * * sleep `expr $RANDOM \% 30` ; command
Si j'utilise une expression sans $ RANDOM, cela fonctionne très bien - cela fait un délai de 15 secondes:
* * * * * sleep `expr 10 + 5` ; command
En d'autres termes, il semble que $ RANDOM ne fonctionne pas dans un cron.
Mais ce n'est pas simplement parce que $ RANDOM lui-même est évalué à zéro, car cela devrait donner un délai de 10:
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
J'ai également essayé avec && instread de; mais cela n'aide pas. En fait, alors la commande ne se déclenche pas du tout!
Je pourrais bien sûr placer le retard dans un script qui est ensuite appelé depuis crontab, mais cela n'explique pas mon problème et ne me fait pas apprendre :-)
C'est Debian Lenny si cela fait une différence.
/bin/sh
n'était pas un shell réel, simplement un lien symbolique vers le shell préféré du sysadmin (généralement bash ou dash) sur Debian.