Acho que o que você está procurando é o arquivo /proc/locks
. Mostra os bloqueios de arquivos atuais no sistema. Isso não mostra quanto tempo um arquivo foi bloqueado , mas mostra por qual processo . Talvez você possa detectar quando o bloqueio está registrado neste arquivo e medir o tempo decorrido. Uma amostra é esta:
cat /proc/locks
1: POSIX ADVISORY WRITE 2245 08:06:1182714 1073741824 1073741824
2: POSIX ADVISORY WRITE 2245 08:06:1182714 1073741826 1073742335
3: POSIX ADVISORY WRITE 3058 08:06:10752740 0 0
4: POSIX ADVISORY WRITE 3058 08:06:10752739 0 0
5: POSIX ADVISORY WRITE 2421 08:06:10752766 0 EOF
6: POSIX ADVISORY WRITE 2421 08:06:11142048 0 EOF
7: POSIX ADVISORY WRITE 2421 08:06:9964366 1073741824 1073742335
8: POSIX ADVISORY WRITE 2421 08:06:11142040 0 EOF
Onde as colunas são:
- Primeiro : bloqueie #.
-
Segundo : tipo de bloqueio (POSIX se o bloqueio foi criado com
fcntl
eFLOCK
se criado comflock
. - Terceiro : modo de bloqueio (ASSESSORIA ou OBRIGATÓRIO)
- Forth : Tipo de bloqueio (WRITE ou READ), correspondendo a bloqueios compartilhados ou exclusivos.
- Quinto : PID do processo com o bloqueio.
-
Sexta : Três números separados por
:
que identificaram o arquivo bloqueado. - Sétimo : Inicie o byte do bloqueio.
- Oitavo: End byte do bloqueio