GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo asegurarse de que solo se ejecute una instancia de un script Bash?

Sería preferible una solución que no requiera herramientas adicionales.

Respuesta aceptada:

Casi como la respuesta de nsg:use un directorio de bloqueo . La creación de directorios es atómica en Linux, Unix, *BSD y muchos otros sistemas operativos.

if mkdir $LOCKDIR
then
    # Do important, exclusive stuff
    if rmdir $LOCKDIR
    then
        echo "Victory is mine"
    else
        echo "Could not remove lock dir" >&2
    fi
else
    # Handle error condition
    ...
fi

Puede colocar el PID del sh de bloqueo en un archivo en el directorio de bloqueo con fines de depuración, pero no caiga en la trampa de pensar que puede verificar ese PID para ver si el proceso de bloqueo aún se ejecuta. Muchas condiciones de carrera se encuentran en ese camino.


Linux
  1. Filtro Rsync:¿Copiar un solo patrón?

  2. ¿Cómo depurar un script Bash?

  3. ¿Cómo hacer que un directorio compartido sea accesible mediante Sftp?

  4. Cómo hacer que el comando de alias funcione en script bash o archivo bashrc

  5. ¿Cómo me aseguro de que solo se esté ejecutando una instancia de un script de Ruby a la vez?

Cómo verificar si existe un archivo o directorio en Bash

Cómo escribir un script Bash con ejemplos

Tutorial de scripts de Bash para principiantes:qué es, cómo escribir uno y ejemplos de scripts

Cómo verificar si existe un archivo o directorio en Bash

Cómo ejecutar un script Bash

¿Cómo ejecutar un script bash a través de una ruta absoluta?