У меня странная проблема с $ RANDOM в cron. Я хочу выполнить команду случайное количество минут после того, как cronjob срабатывает.
Этот пример работает непосредственно в терминале и задерживает команду до 30 секунд (замените команду на то, что вы хотите, на самом деле это эхо для / dev / ttyUSB0):
sleep `expr $RANDOM \% 30` ; command
Если в crontab находится одна и та же строка, команда всегда запускается немедленно без задержки:
* * * * * sleep `expr $RANDOM \% 30` ; command
Если я использую выражение без $ RANDOM, оно работает нормально - задержка составляет 15 секунд:
* * * * * sleep `expr 10 + 5` ; command
Другими словами, похоже, что $ RANDOM не работает в cron.
Но это не просто потому, что само значение $ RANDOM равно нулю, потому что тогда это должно дать задержку в 10:
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
Я также пробовал с && instread of; но это не помогает На самом деле тогда команда вообще не стреляет!
Конечно, я мог бы поместить задержку в скрипт, который затем вызывается из crontab, но это не объясняет мою проблему и не заставляет меня учиться :-)
Это Debian Lenny, если это что-то меняет.
/bin/sh
это не настоящая оболочка, а просто символическая ссылка на предпочитаемую оболочку системного администратора (обычно bash или dash) в Debian.