arquivo corresponde a / proc / bloqueios

5
$ cat /proc/locks
1: POSIX ADVISORY  WRITE 458 03:07:133880 0 EOF
2: FLOCK ADVISORY  WRITE 404 03:07:133879 0 EOF

Os campos são: número ordinal (1), tipo (2), modo (3), tipo (4), pid (5), maj: min: inode (6) início (7) fim (8).

Pergunta: como encontrar o arquivo correspondente está sendo bloqueado?

    
por Gilles 07.01.2014 / 13:49

2 respostas

5
sudo find -L /proc/458/fd -maxdepth 1 -inum 133880 -print -exec readlink {} \;

Para obter todos eles:

while IFS=': ' read x x x x p x x i x; do
  sudo find -L "/proc/$p/fd" -maxdepth 1 -inum "$i" -exec readlink {} \; -quit
done < /proc/locks

Às vezes, o processo cujo pid é referenciado em /proc/lock terá morrido. Você pode alterar o "/proc/$p/fd" acima para /proc/*/fd para procurá-los entre todos os processos fds.

(note que é uma aproximação, pois estamos verificando apenas o número do inode, não o número do dispositivo, mas as chances de escolhermos o arquivo errado (o mesmo inum em um fs diferente) são muito pequenas).

    
por 07.01.2014 / 15:16
2

Eu prefiro usar lslocks em vez de analisar manualmente /proc/locks

lslocks -nuo path | grep -x '/your/file'
    
por 25.04.2017 / 14:00