es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo funciona este descriptor de archivo y bloqueo de archivo (flock)?

Quiero implementar un script de shell para que se ejecute en segundo plano en todo momento. El script se agregará a las aplicaciones de inicio para su ejecución. Al tratar de asegurarme de que solo se ejecute una instancia a la vez, me encontré con este código:

#!/bin/bash
another_instance()
{
echo “Hay otra instancia en ejecución, saliendo”
exit 1
}
( flock -n 100 || another_instance DEST=/home/backup/`date +%s` mkdir -p “$DEST” rsync -avz root@myhost:/home/web “$DEST/.” ) 100> /var/lock/dobackup.lock

que se encuentra en aquí, con la explicación:

En este ejemplo, usamos el descriptor de archivo 100 en la redirección al archivo de bloqueo. Además, llamamos a otra_instancia si flock falla, informando que hay otra instancia y luego saliendo.

Funciona, pero no entiendo la parte del descriptor de archivo 100. Intenté buscar en línea, pero mi confusión persiste.
¿Alguien podría explicar flock -n 100y 100> /var / lock / dobackup.lock?

Por lo que entiendo, flock -n crea / verifica un bloqueo en la ubicación /var/lock…, pero ¿cuál es el significado de 100?

Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El descriptor de archivo 100 es un número arbitrario en este caso y se utiliza para identificar el archivo que se está utilizando para el bloqueo. En este script, se utiliza como argumento para el comando flock para especificar qué descriptor de archivo se utilizará para el bloqueo. El símbolo “>” es una entidad HTML para el símbolo “>” que se utiliza para la redirección de salida. Entonces, “100>/var/lock/dobackup.lock” significa que el descriptor de archivo 100 se redirige al archivo “/var/lock/dobackup.lock” con fines de bloqueo.

    En resumen, 100 es solo un número arbitrario utilizado como referencia para identificar el descriptor de archivo utilizado para el bloqueo, y el símbolo “>” se utiliza para la redirección de salida.

Comments are closed.