Como encontrar o dispositivo cujo ID principal é "fd"

1

Em / proc / bloqueios eu tenho:

21: POSIX  ADVISORY  READ  6813 fd:02:32374949 1073741826 1073742335

Por outro lado, /dev não possui nenhum dispositivo com ID principal de fd . Alguém sabe o que fazer neste caso? Eu estou no fedora 22.

    
por Alex Joly 25.08.2016 / 00:50

1 resposta

1

Tem certeza de que não tem nenhum? fd é decimal 253, que é o driver de dispositivo virtblk (por exemplo, vda2).

% ls -l /dev/vda2
brw-rw---- 1 root disk 253, 2 Aug 24 07:49 /dev/vda2

Alternativamente, se você quiser encontrar o arquivo real para o qual ele está apontando, em vez do dispositivo, poderíamos enganar e examinar /proc/6813/fd para ver quais arquivos o processo abriu e compará-los aos números de inode.

por exemplo, vejo no meu /proc/locks a entrada:

21: FLOCK  ADVISORY  WRITE 1324 fd:03:390139 0 EOF

Então

find -L /proc/1324/fd -maxdepth 1 -inum 390139 -exec readlink {} \;

(o -L seguirá os links simbólicos /proc/.../fd para o arquivo real, para que possamos verificar o número de inode do destino; o maxdepth significará que nenhum link simbólico para os diretórios será seguido).

Neste caso, recebo

# find -L /proc/1324/fd -maxdepth 1 -inum 390139 -exec readlink {} \;
/var/spool/postfix/pid/master.pid
    
por 25.08.2016 / 01:12