Varias ejecuciones en shell-cripting...
Estoy tratando de implementar un shell-script que sea ejecutado por un cron, de tal forma que al ejcutarse si existe más de una instancia o ejecuciones del mismo, no vuelva a iniciar hasta tanto haya terminado su primera ejecución.
Aplicación: imaginemos que tenemos que hacer un backup de por directorio, mi script se ejecuta cada cinco minutos vía el cron, pero debido a que en algún momento hay mucho trafico de información, mi maquina se sobrecarga y dura más de los cinco minutos en realizar el backup, ¿cómo evitar que vuelva a ser ejecutado hasta tanto no termine su primera ejecución de modo que no se cree una cola de procesos del mismo script?
A manera de ejemplo:
#!/bin/bash
if [[ `ps -ef | grep $0 | grep -v $$ | wc -l` -gt 1 ]]; then
exit -1
fi
for dir in `ls /`
do
cd ${dir}
ls -ltr
cd ..
du -sh ${dir}
Done
¿Se te ocurre otro método mejor a este? Que opinas si lanzo un daemon que lo monitoree, ¿cómo seria?
No se por que en unix no me funciona si lanzo el mismo proceso en paralelo se ejecuta, pero en linux no, en linux el hace justo lo que quiero..
Aplicación: imaginemos que tenemos que hacer un backup de por directorio, mi script se ejecuta cada cinco minutos vía el cron, pero debido a que en algún momento hay mucho trafico de información, mi maquina se sobrecarga y dura más de los cinco minutos en realizar el backup, ¿cómo evitar que vuelva a ser ejecutado hasta tanto no termine su primera ejecución de modo que no se cree una cola de procesos del mismo script?
A manera de ejemplo:
#!/bin/bash
if [[ `ps -ef | grep $0 | grep -v $$ | wc -l` -gt 1 ]]; then
exit -1
fi
for dir in `ls /`
do
cd ${dir}
ls -ltr
cd ..
du -sh ${dir}
Done
¿Se te ocurre otro método mejor a este? Que opinas si lanzo un daemon que lo monitoree, ¿cómo seria?
No se por que en unix no me funciona si lanzo el mismo proceso en paralelo se ejecuta, pero en linux no, en linux el hace justo lo que quiero..
1 respuesta
Respuesta de nsblog
1