Estoy tratando de programar mi secuencia de comandos para que se ejecute en dos momentos diferentes y luego seguir ejecutándose en segundo plano esperando la próxima vez que se cumplan las condiciones nuevamente.
Hasta ahora no puedo hacerlo porque después de que se cumple esa condición, este script sale automáticamente:
function schedule { while : do hour=$(date +"%H") minute=$(date +"%M") if [[ "$hour" = "02" && "$minute" = "31" ]]; then # run some script exec /home/gfx/Desktop/myscript.sh wait schedule elif [[ "$hour" = "02" && "$minute" = "32" ]]; then # run some script exec /home/gfx/Desktop/myscript.sh wait schedule fi done } scheduleEl script que ejecuto es el siguiente:
$cat myscript.sh echo "this a message"Cualquier idea o comentario es bienvenido, gracias!
Cuando tu lo hagas:
exec some program something else si el ejecutivo funciona, entonces something else nunca sucederá porque el script se reemplaza por lo que ejecutó
Tal vez en lugar de:
exec /home/gfx/Desktop/myscript.sh wait scheduleusted quiere:
/home/gfx/Desktop/myscript.sh & wait # schedule -- don't make a fork bomb Como se indica en los comentarios, & + wait es un poco tonto, probablemente quieras:
/home/gfx/Desktop/myscript.sh & # wait # scheduleo:
/home/gfx/Desktop/myscript.sh # wait # scheduledependiendo de si desea o no myscript en segundo plano.
TAMBIÉN debe poner un sueño en el bucle, (quizás sleep(59) ) para evitar que se repita como un alma en pena.
Creo que comienza a comprender el atractivo de cron (al menos para las cosas que no desea interactuar con su sesión de terminal).
Los crontabs son el mejor lugar para poner estas cosas.
Editar crontab usando
$ crontab-e
Agregue las siguientes líneas a los archivos
31 2 * * * /home/gfx/Desktop/myscript.shY guarde el archivo crontab. Tu script se ejecutará todos los días a las 2:31 am