
Estoy desarrollando un script de shell ksh en el servidor AIX que debe ejecutarse exactamente a las 13:00 todos los días. No tengo permiso para usar CRONTAB, AT, WATCH, inotify, date -d, etc. La única opción es usar para hacer que el script se repita continuamente y se ejecute en segundo plano.
while [ $(date +%H%M) != 1300 ]
do
actions
sleep 60
done
Probé el código anterior pero no quiero que while
se ejecute continuamente en segundo plano hasta que la condición se cumpla. Sugiérame cualquier otra forma de usar sleep
o while
hacer un bucle o cualquiera que se ejecute solo una vez en lugar de continuamente.
Respuesta1
Solo lo hice en perl
y nunca lo usé ksh
, pero no veo por qué no debería ser posible, pero lo hice de manera similar (probablemente no sea un código válido en ningún idioma):
while(true)
starttime=`date +%s`
actions
sleep starttime+24*60*60-`date +%s`
end
Eso sólo hace que las acciones comiencen cada 24 horas. Mi idea era que para que se ejecutara a las 13:00 simplemente agregara un bucle al inicio que esperara hasta las 13:00. Pensando en ello, sería mejor reemplazarlo starttime+24*60*60
con algo como date -d "13:00 tomorrow" +%s
.