Mam dziwny problem z $ RANDOM w cronie. Chcę wykonać polecenie losowo po kilku minutach od uruchomienia cronjob.
Ten przykład działa bezpośrednio w terminalu i opóźnia polecenie do 30 sekund (zamień polecenie na cokolwiek chcesz, w rzeczywistości jest to echo do / dev / ttyUSB0):
sleep `expr $RANDOM \% 30` ; command
Jeśli ta sama linia zostanie umieszczona w crontab, polecenie zawsze uruchamia się natychmiast bez opóźnienia:
* * * * * sleep `expr $RANDOM \% 30` ; command
Jeśli użyję wyrażenia bez $ RANDOM, działa dobrze - powoduje to opóźnienie 15 sekund:
* * * * * sleep `expr 10 + 5` ; command
Innymi słowy, wygląda na to, że $ RANDOM nie działa w cronie.
Ale to nie tylko dlatego, że $ RANDOM sam ocenia na zero, ponieważ wtedy powinno to dać opóźnienie 10:
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
Próbowałem też z && instread of; ale to nie pomaga. W rzeczywistości to polecenie wcale nie strzela!
Mógłbym oczywiście umieścić opóźnienie w skrypcie, który jest następnie wywoływany z crontab, ale to nie wyjaśnia mojego problemu i nie każe mi się uczyć :-)
To Debian Lenny, jeśli to robi jakąkolwiek różnicę.
/bin/sh
nie była to rzeczywista powłoka, a jedynie dowiązanie symboliczne do preferowanej powłoki sysadmin (zwykle bash lub dash) na Debianie.