Ich habe ein seltsames Problem mit $ RANDOM in cron. Ich möchte einen Befehl eine zufällige Anzahl von Minuten nach dem Auslösen des Cronjobs ausführen.
Dieses Beispiel funktioniert direkt im Terminal und verzögert den Befehl um bis zu 30 Sekunden (ersetzen Sie den Befehl durch einen beliebigen Befehl, es ist tatsächlich ein Echo an / dev / ttyUSB0):
sleep `expr $RANDOM \% 30` ; command
Wenn dieselbe Zeile in crontab platziert ist, wird der Befehl immer sofort und ohne Verzögerung ausgelöst:
* * * * * sleep `expr $RANDOM \% 30` ; command
Wenn ich einen Ausdruck ohne $ RANDOM verwende, funktioniert er einwandfrei - dies führt zu einer Verzögerung von 15 Sekunden:
* * * * * sleep `expr 10 + 5` ; command
Mit anderen Worten, es scheint, als ob $ RANDOM in einem Cron nicht funktioniert.
Dies liegt jedoch nicht einfach daran, dass $ RANDOM selbst zu Null ausgewertet wird, da dies dann eine Verzögerung von 10 ergeben sollte:
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
Ich habe es auch mit && instread of versucht; aber das hilft nicht. Tatsächlich wird der Befehl dann überhaupt nicht ausgelöst!
Ich könnte die Verzögerung natürlich in ein Skript einfügen, das dann von crontab aufgerufen wird, aber das erklärt mein Problem nicht und bringt mich nicht zum Lernen :-)
Es ist Debian Lenny, wenn das einen Unterschied macht.
/bin/sh
es sich nicht um eine tatsächliche Shell handelt, sondern lediglich um einen Symlink zur bevorzugten Shell des Systemadministrators (normalerweise Bash oder Dash) auf Debian.