Utilizando flock, varios procesos pueden tener un bloqueo compartido al mismo tiempo, o estar esperando adquirir un bloqueo de escritura. ¿Cómo obtengo una lista de estos procesos?
Es decir, para un archivo X dado, idealmente para encontrar la identificación del proceso de cada proceso que contiene o está esperando un bloqueo en el archivo. Sin embargo, sería un buen comienzo solo para contar el número de procesos que esperan un bloqueo.

lsofenfoque que sugiere Joel Davis.lslockslee/proc/locks, en un apuro puedes leer eso directamente tú mismo, con la advertencia de que los archivos se identifican por dispositivo e inodo en lugar de nombre. Como conoce el archivo, eso no debería ser un problema. Las entradas bloqueadas tienen un->prefijo antes de la columna de tipo de bloqueo (agregando así una columna a esa línea).Dos posibilidades:
lsof(mi preferencia) olslk(específicamente para bloqueos de archivos):La salida de lslk es autoexpansiva pero
lsofcoloca la descripción del bloqueo en la columna "FD" (que está10uWarriba). Desde la página del manual:Entonces la columna "FD" de
lsofarriba se desglosa en:10El descriptor literal de este archivo abierto. ¿A qué está vinculado?/proc/1650/fd/10uEl archivo está abierto para leer y escribir.WEl programa tiene un bloqueo de escritura en el archivo.fuente
flock! = mutex. Su grep habría perdido bloqueos como el de la publicación (sin mencionar que el primer campo es el nombre del programa ...)lsof puede ayudar a ver la lista de archivos. Aquí hay forma de ver los archivos bloqueados.
fuente
en caso de
lsofque falte en el sistema,ls /proc/*/fd/* | grep LOCK_FILE_NAMEdebe proporcionar la misma información.fuente