Tengo un problema extraño con $ RANDOM en cron. Deseo ejecutar un comando un número aleatorio de minutos después de que se active el cronjob.
Este ejemplo funciona directamente en el terminal y retrasa el comando hasta 30 segundos (reemplace el comando con lo que quiera, en realidad es un eco para / dev / ttyUSB0):
sleep `expr $RANDOM \% 30` ; command
Si se coloca la misma línea en crontab, el comando siempre se dispara inmediatamente sin demora:
* * * * * sleep `expr $RANDOM \% 30` ; command
Si uso una expresión sin $ RANDOM, funciona bien, esto demora 15 segundos:
* * * * * sleep `expr 10 + 5` ; command
En otras palabras, parece que $ RANDOM no funciona en un cron.
Pero no es simplemente porque $ RANDOM mismo se evalúa a cero, porque entonces esto debería dar un retraso de 10:
* * * * * sleep `expr $RANDOM \% 30 + 10` ; command
También he intentado con && instread of; Pero eso no ayuda. De hecho, entonces el comando no se dispara en absoluto.
Por supuesto, podría colocar el retraso en un script que luego se llama desde crontab, pero eso no explica mi problema y no me hace aprender :-)
Es Debian Lenny si eso hace alguna diferencia.
/bin/sh
fue que no era un shell real, simplemente un enlace simbólico al shell preferido del sysadmin (típicamente bash o dash) en Debian.