Esto es útil cuando requiere que el script no se ejecute más de 1 vez. Una vez ejecutado el script, verifica que el archivo «bloqueo.txt» no exista, de ser asi lo crea y se ejecutan todas las labores que deba realizar el script, una vez finalizado este archivo de bloqueo es eliminado. Si mientras esta en ejecución es lanzado nuevamente, el script verifica que el archivo de bloqueo existe y por lo tanto finaliza su ejecución. También si el script que se esta ejecutando finaliza en forma inesperada (CTRL-C, etc..), el archivo de bloqueo es eliminado.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#!/bin/bash bloqueo=/usr01/trabajo/bloqueo.txt if ( set -o noclobber; echo "$$" > "$bloqueo") 2> /dev/null; then trap 'rm -f "$bloqueo"; exit $?' INT TERM EXIT touch $bloqueo echo "Realizo todas las tareas del Script" trap - INT TERM EXIT else echo "Ya hay otro proceso de este script ejecutandose" echo "corriendo con el PID: $(cat $bloqueo)" fi |