У мене є дивна проблема з $ RANDOM в кроні. Я хотів би виконати команду випадковою кількістю хвилин після пожежі, яка спрацьовує.
Цей приклад працює безпосередньо в терміналі і затримує команду на 30 секунд (замініть команду на все, що завгодно, це насправді відлуння до / dev / ttyUSB0):
sleep `expr $RANDOM \% 30` ; command
Якщо той самий рядок розміщений у crontab, команда завжди запускається негайно без затримки:
* * * * * sleep `expr $RANDOM \% 30` ; command
Якщо я використовую вираз без $ RANDOM, він працює добре - це робить затримку на 15 секунд:
* * * * * sleep `expr 10 + 5` ; command
Іншими словами, здається, що $ RANDOM не працює в кроні.
Але це не просто тому, що $ RANDOM сам оцінює нуль, тому що тоді це повинно дати затримку 10:
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
Я також намагався з && замінити; але це не допомагає. Насправді тоді команда зовсім не стріляє!
Я, звичайно, міг би помістити затримку в сценарій, який потім викликається з crontab, але це не пояснює мою проблему і не змушує мене вчитися :-)
Це Дебіан Ленні, якщо це має значення.
/bin/sh
не була фактичною оболонкою, а лише символьне посилання на бажану оболонку sysadmin (як правило, bash або dash) на Debian.