Encontre o processo que está do outro lado do tubo

28

Estou tentando rastrear alguns comportamentos estranhos de alguns processos e corri para um ponto em que não sei como rastrear o passado. O processo suspenso, ao qual eu associei usando strace -p , mostrou isso:

Process 7926 attached - interrupt to quit
read(3, 

Ok, por isso está aguardando a entrada no fd 3, então fui verificar o que é:

$ ls -l /proc/7926/fd/3
lr-x------ 1 user grp 64 Mar 15 10:41 /proc/7926/fd/3 -> pipe:[20043922]

Ok, então é um cachimbo ... agora a pergunta - quem é o autor deste cachimbo? Lembro que no Linux existe um recurso especial para sockets de domínio unix onde você pode solicitar um caminho de arquivo que inicie com um byte NUL para acessar o "namespace de soquete abstrato" (mencionado aqui: link ). Não tenho certeza se há algo similar para canos que eu possa aproveitar, mas não encontrei nada.

Eu esperava que uma ferramenta como fuser ou lsof pudesse ajudar, mas não cheguei a lugar nenhum.

Alguma idéia?

    
por FatalError 15.03.2012 / 15:55

2 respostas

27

O conteúdo do link simbólico "pipe: [20043922]" é um ID exclusivo; a outra extremidade do pipe terá um ID correspondente.

(find /proc -type l | xargs ls -l | fgrep 'pipe:[20043922]') 2>/dev/null

deve mostrar as duas extremidades do pipe.

    
por 16.03.2012 / 21:59
0

Você pode obter a lista de processos usando o pipe usando o comando lsof :

lsof | grep 'FIFO.*20043922'

A saída mostrará os leitores (na coluna FD com entradas como 1r) e escritores (mesmas colunas com entradas como 2w).

    
por 16.10.2018 / 16:41

Tags