Cómo comprobar si un directorio todavía se utiliza en un proceso

Cómo comprobar si un directorio todavía se utiliza en un proceso

Tengo algún directorio compartido /path/to/dir. Estoy ejecutando un proceso de copia de seguridad en ese directorio. El proceso se ejecuta en el servidor A mientras que solo tengo acceso en el servidor B. Entonces, cuando finalice el proceso de copia de seguridad en el servidor A, tendré los datos en el directorio compartido /path/to/dirque también está disponible en el servidor B.

Ahora tengo un script bash en el servidor B que sólo puede ejecutarse cuando finaliza el proceso de copia de seguridad. Como no puedo acceder al otro servidor estaba pensando en lo siguiente:

¿Puedo comprobar si /path/to/direl proceso de copia de seguridad todavía lo utiliza y solo ejecutar mi script si el proceso ya no se ejecuta en el directorio?

No sé si es importante saber que es un directorio compartido (NFS).

Respuesta1

Una mejor solución: cree un archivo de bloqueo en el recurso compartido que solo exista mientras se ejecuta el trabajo y se eliminará en el servidor A una vez que finalice el trabajo.

En el servidor B, simplemente verifica si este archivo existe y, si existe, espera hasta que desaparezca.

Respuesta2

Configure una aplicación de producción A para crear los archivos example_output.tar.gz.party solo después de asegurarse de que todo esté terminado, cambie el nombre aexample_output.tar.gz

Configure una aplicación de consumo B para ignorar los *.partarchivos y procesar todos los archivos que no coinciden*.part

Este esquema es reconocible porque se utiliza en muchas aplicaciones de consumo (me vienen a la mente navegadores web o clientes scp).

De esta manera no necesita ningún archivo de bloqueo y puede tener varios consumidores. Un archivo de bloqueo siempre es una causa potencial de falla si queda uno antiguo después de que una aplicación muere (o se reinicia el servidor).

información relacionada