Como obtenho sockets de domínio unix ativos para um pid específico se não posso usar o comando lsof?

2

Se eu não tenho permissão para usar lsof, como faço para obtê-los para um processo com pid já conhecido? Obrigado

Eu sei que o comando netstat -l -p imprime sockets de domínio unix ativos, mas parece que não está atualizando? depois que eu fechei o socket, ele ainda aparece no resultado do comando netstat.

    
por Shuman 17.03.2016 / 23:24

1 resposta

1

No Linux, você pode examinar o sistema de arquivos /proc especificamente para um determinado PID em /proc/<pid>/fd . Todos os descritores de arquivos (fd) são listados por processo.

Exemplo

$ ls -l /proc/27634/fd/
total 0
lrwx------ 1 root root 64 Mar 17 20:09 0 -> /dev/null
lrwx------ 1 root root 64 Mar 17 20:09 1 -> /dev/null
lrwx------ 1 root root 64 Mar 17 20:10 10 -> /dev/ptmx
lrwx------ 1 root root 64 Mar 17 20:10 12 -> /dev/ptmx
lrwx------ 1 root root 64 Mar 17 20:10 13 -> /dev/ptmx
lrwx------ 1 root root 64 Mar 17 20:09 2 -> /dev/null
lr-x------ 1 root root 64 Mar 17 20:09 3 -> socket:[430396]
l-wx------ 1 root root 64 Mar 17 20:09 4 -> socket:[430437]
lrwx------ 1 root root 64 Mar 17 20:09 5 -> pipe:[430440]
l-wx------ 1 root root 64 Mar 17 20:10 6 -> pipe:[430440]
lrwx------ 1 root root 64 Mar 17 20:10 7 -> socket:[430443]
lrwx------ 1 root root 64 Mar 17 20:10 8 -> socket:[430444]
lrwx------ 1 root root 64 Mar 17 20:10 9 -> socket:[430446]

Tudo listado como socket:[....] é um soquete.

    
por 18.03.2016 / 01:11