Ho uno strano problema con $ RANDOM in cron. Vorrei eseguire un comando un numero casuale di minuti dopo l'attivazione del cronjob.
Questo esempio funziona direttamente nel terminale e ritarda il comando fino a 30 secondi (sostituisci il comando con quello che vuoi, in realtà è un'eco a / dev / ttyUSB0):
sleep `expr $RANDOM \% 30` ; command
Se la stessa linea viene inserita in crontab, il comando si attiva sempre immediatamente senza ritardo:
* * * * * sleep `expr $RANDOM \% 30` ; command
Se uso un'espressione senza $ RANDOM, funziona benissimo - questo fa un ritardo di 15 secondi:
* * * * * sleep `expr 10 + 5` ; command
In altre parole, sembra che $ RANDOM non funzioni in un cron.
Ma non è semplicemente perché $ RANDOM stesso viene valutato a zero, perché ciò dovrebbe dare un ritardo di 10:
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
Ho anche provato con && instread di; ma questo non aiuta. In effetti, quindi il comando non si attiva affatto!
Potrei ovviamente inserire il ritardo in uno script che viene quindi chiamato da crontab, ma ciò non spiega il mio problema e non mi fa imparare :-)
È Debian Lenny se questo fa la differenza.
/bin/sh
non era una vera shell, ma semplicemente un link simbolico alla shell preferita del sysadmin (tipicamente bash o dash) su Debian.