1 votos

¿es posible bloquear un archivo en linux, lo que puede ' t leer si otro proceso tiene abierto para escritura?

Todos sabemos que linux/Unix se automtically bloque attemtps para escribir a un archivo actualmente abierto para escritura por otro proceso. Pero, ¿es posible bloquear/bloquear el acceso de lectura a un archivo si hay otro proceso que se ha abierto para la escritura? Tengo dos escrituras diferentes, ambos comienzan a horas aleatorias y ejecutar varias veces durante el día: una secuencia de comandos de sobrescribe un archivo en particular; el otro se lee desde el archivo. Quiero el segundo para bloquear(espera) o fallar si el primero tiene abierto el archivo.

2voto

katit Puntos 130

La utilidad de flock(1) puede hacer lo que quiera

  • Quitar un bloqueo de escritura en el archivo que desea sobreescribirlo

    rebaño - x /path/to/lockfile somecommand archivo

  • Tienen el otro cheque de comando para la cerradura.

    archivo de anothercommand de /path/to/lockfile - n rebaño

Si el archivo está bloqueado entonces obtendrá un código de salida de 1 si es suyo y usted puede hacer lo que quiera con ella

0voto

anzana Puntos 133

Puesto que usted tiene que completar la onu-sincronizar funcionando.. Se podría hacer algo sencillo que es tener la "escritura" proceso de crear el nuevo archivo con un nombre temporal decir .tmp así que si el archivo que va a crear es output1.txt iba a trabajar en output1.txt.tmp.

Una vez que el escritor es de hecho la última cosa que hace es un comando mv.

A partir de aquí podemos hacer dos cosas. Uno tiene el lector no importa porque desde el archivo tmp es diferente de inodo, el mv no duele (Linux va a mantener con vida el tiempo que tiene un consumidor) y la siguiente lectura tendrá el nuevo archivo..

(siempre que no estaría de más que se ejecute con el archivo antiguo por última vez).

La otra opción es que el lector busca el archivo tmp y bloque, mientras que el archivo existe (esto se convierta en una especie de archivo de bloqueo).

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: