UNIX – Crear un archivo de bloqueo.-

A veces debemos asegurarnos que el script no se ejecute dos o más veces simultáneas. Para ello podemos hacer uso de los archivos de bloqueo. Pero, esto no es del todo fiable. ¿Qué pasaría si mientras nuestro script se está ejecutando es cerrado abruptamente?

En ese caso el archivo de bloqueo no se borraría, y por lo tanto, no nos permitiría ejecutar el script de nuevo. Para cubrir esos casos, podríamos hacer uso del comando trap que nos permite ejecutar comandos en caso que nuestro script termine de manera inesperada. Esta es una versión más avanzada que además guarda dentro del archivo de bloqueo el PID del script que lo ejecuta:

#!/bin/bash
 lockfile=/var/lock/loquesea.lock
 if ( set -o noclobber; echo "$$" > "$lockfile") 2> /dev/null;
 then
 trap 'rm -f "$lockfile"; exit $?' INT TERM EXIT
 echo "hago muchas cosas aqui tranquilamente"
 rm -f "$lockfile"
 trap - INT TERM EXIT
 else
 echo "Ya hay otro proceso de este script ejecutandose"
 echo "corriendo con el PID: $(cat $lockfile)"
 fii
Esta entrada fue publicada en Unix - Linux. Guarda el enlace permanente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.