por que eu encontro (sob / proc / pid // fd) soquetes com links simbólicos quebrados

4

Eu não acho que eles estão fechados, porque eu esperaria que depois de um close () o fd iria desaparecer, mas eu vejo um monte de fd persistente - > soquete [xxxxx] entradas com links simbólicos quebrados que não parecem estar indo embora rapidamente. O que causa esse estado?

    
por Gregg Leventhal 03.05.2016 / 15:32

2 respostas

2

Os links simbólicos [xxxxx] do soquete estão sempre quebrados. Não há um caminho que você possa fornecer para abrir um soquete com um determinado número de inode.

Eu tentei e parece que você não pode abrir o arquivo /proc/pidX/fd/Y , que se refere a um soquete. No entanto, você pode se refere a um arquivo real, mesmo que o arquivo tenha sido excluído. Não é exatamente um link simbólico. É mágica (isto é, um caso especial).

    
por 03.05.2016 / 15:43
2

O texto do destino do symlink não se refere a um arquivo, mas a uma entrada na tabela /proc/net/tcp que descreve cada soquete usando campos de texto codificados. Por exemplo, no meu sistema no momento em que vejo:

$ ls -l /proc/24724/fd/7
lrwx------ 1 vagrant vagrant 64 Feb 13 15:08 /proc/24724/fd/7 -> socket:[19164451]

Que corresponde a essa linha da tabela tcp :

$ grep 19164451 /proc/net/tcp
 433: 0100007F:C8AA 0100007F:0C8A 01 00000000:00000000 02:00000286 00000000  1000        0 19164451 2 0000000000000000 20 4 1 10 27

Algumas pesquisas rápidas no Google devem ajudá-lo a encontrar inúmeros recursos para decodificar essas linhas. Dois exemplos:

link link

Se você quiser uma ferramenta que os processe para você, netstat fará isso se você usar a opção -p para solicitar que leia todos os seus links /proc fd para saber quais processos pertencem a quais soquetes. Experimente:

netstat -tuapn
    
por 13.02.2017 / 22:22