Tengo acceso a una caja de Linux CentOS. (No puedo usar crontab lamentablemente)
Cuando necesito ejecutar una tarea todos los días, acabo de crear un ciclo infinito con un sueño. (funciona, duerme ~24 horas y luego vuelve a funcionar)
#!/bin/sh while : do /home/sas_api_emailer.sh |& tee first_sas_api sleep 1438m doneRecientemente tengo una tarea que necesito ejecutar a una hora específica todos los días a las 6:00 am (no puedo usar crontab)
¿Cómo puedo crear un ciclo infinito que solo se ejecutará a las 6:00 am?
Verifique el tiempo en el bucle y luego duerma por un minuto si no es el tiempo que desea.
while : do if [ $(date '+%H%M') = '0600' ] then /home/sas_api_emailer.sh |& tee first_sas_api fi sleep 60 doneTienes (¡al menos!) tres opciones:
Esta es sin duda la mejor opción. Desafortunadamente, dices que no es una opción para ti. Arrastrar :(
at y comandos de lectura por lotes desde la entrada estándar o un archivo específico que se ejecutarán en un momento posterior.
Por ejemplo: at -f myjob noon
Aquí hay más información at : http://www.thegeekstuff.com/2010/06/at-atq-atrm-batch-command-examples/
Escriba un script de "sondeo" o "bucle while". Por ejemplo:
while true # Compute wait time sleep wait_time # do something doneAquí hay algunas buenas ideas para "calcular el tiempo de espera": Bash: dormir hasta una hora/fecha específica