Está en: » Notas y recortes »

Comprobar si un script en bash ya se está ejecutando

Comprobar si un script en bash ya se está ejecutando

bash

Algo realmente útil para cuando necesitamos que sólo haya una ejecución del mismo script (por ejemplo, para copias de seguridad automáticas llamadas mediante cron).

Lógicamente, se incluye al principio del script.

if pidof -x $(basename $0) > /dev/null; then
  for p in $(pidof -x $(basename $0)); do
    if [ $p -ne $$ ]; then
      echo "El script $0 ya se está ejecutando. Saliendo..."
      exit
    fi
  done
fi

Comentarios

  1. Raffa182 dice:

    Consulta si yo tengo un script que se llama backup.sh por ej deberia poner

    if pidof -x $(basename $0) > /dev/null; then
    for p in $(pidof -x $(basename backup.sh)); do
    if [ $p -ne $$ ]; then
    echo “El script backup.sh ya se está ejecutando. Saliendo…”
    exit
    fi
    done
    fi

    Saludos…

    • No hace falta que hagas las sustituciones con el nombre del script.
      Por defecto bash, cuando llamas a un script, la variable $0 toma el nombre del mismo, así que puedes poner el código tal y como está en el post (y así te sirve para reutilizarlo fácilmente en otros).
      Haz pruebas verás como funciona tal cual.
      Saludos

  2. Raffa182 dice:

    Miguel gracias pude utilizar el codigo es mas lo tengo para un server de balanceo de carga corriendo y funciona genial, me sirve a la hora de tirar script de backup para no saturar.

    🙂

    Saludos

  3. carlos dice:

    Yo tengo un script python y estaba buscando esto para q no se sature, porq la intensión es mandar a ejecutar cada 2 min en el cron para q siempre este funcionando este código debo colocar en la cabecera de mi escript python tengo esa duda y gracias por el aporte

  4. Martin dice:

    Excelente. Me sirvió perfecto. Muchas gracias por compartir.

  5. Rafael dice:

    Gracias por tu post, una pregunta, en donde puedo ver el mensaje que esta en el script que comentaste (echo “El script $0 ya se está ejecutando. Saliendo…”)???

    Saludos

Deje su comentario

Previsualización de comentario
  1. Anónimo dice:





Pings para esta entrada