Eu tenho um problema estranho com $ RANDOM no cron. Desejo executar um comando um número aleatório de minutos após o cronjob disparar.
Este exemplo funciona diretamente no terminal e atrasa o comando em até 30 segundos (substitua o comando pelo que você quiser, na verdade é um eco para / dev / ttyUSB0):
sleep `expr $RANDOM \% 30` ; command
Se a mesma linha for colocada no crontab, o comando sempre dispara imediatamente sem o atraso:
* * * * * sleep `expr $RANDOM \% 30` ; command
Se eu usar uma expressão sem $ RANDOM, ela funcionará bem - isso atrasa 15 segundos:
* * * * * sleep `expr 10 + 5` ; command
Em outras palavras, parece que $ RANDOM não funciona em um cron.
Mas não é simplesmente porque o próprio $ RANDOM é avaliado como zero, porque isso deve gerar um atraso de 10:
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
Eu também tentei com o && instread de; mas isso não ajuda. De fato, o comando não dispara!
É claro que eu poderia colocar o atraso em um script que é chamado de crontab, mas isso não explica o meu problema e não me faz aprender :-)
É o Debian Lenny se isso faz alguma diferença.
/bin/sh
não era um shell real, apenas um link simbólico para o shell preferido do sysadmin (normalmente bash ou dash) no Debian.