Descritor de arquivo vinculado a um socket ou pipe em proc [duplicate]

9

Eu tenho uma pergunta sobre os descritores de arquivos e sua ligação no sistema de arquivos proc. Observei que, se eu listar os descritores de arquivo de um determinado processo de proc ls -la /proc/1234/fd i, obtenho a seguinte saída:

  lr-x------ 1 root   root   64 Sep 13 07:12 0 -> /dev/null
  l-wx------ 1 root   root   64 Sep 13 07:12 1 -> /dev/null
  l-wx------ 1 root   root   64 Sep 13 07:12 2 -> /dev/null
  lr-x------ 1 root   root   64 Sep 13 07:12 3 -> pipe:[2744159739]
  l-wx------ 1 root   root   64 Sep 13 07:12 4 -> pipe:[2744159739]
  lrwx------ 1 root   root   64 Sep 13 07:12 5 -> socket:[2744160313]
  lrwx------ 1 root   root   64 Sep 13 07:12 6 -> /var/lib/log/some.log

Eu entendo o significado de um descritor de arquivo e eu entendo pelo meu exemplo os descritores de arquivo 0 1 2 e 6, eles estão ligados a recursos físicos no meu computador, e também acho que 5 está conectado a algum recurso na rede ( por causa do socket), mas o que eu não entendo é o significado dos números entre parênteses. Faça o ponto de alguma propriedade do recurso? Além disso, por que alguns dos links estão quebrados? E por último, desde que eu já fiz uma pergunta :) o que é pipe?

    
por primero 13.09.2012 / 21:49

2 respostas

9

Do they point to some property of the resource?

Sim. Eles são um identificador único que permite identificar o recurso.

Also why are some of the links broken?

Como são links para pessoas que não vivem no sistema de arquivos, você não pode seguir o link da maneira normal. Essencialmente, os links estão sendo abusados como uma forma de retornar o tipo de recurso e o identificador exclusivo.

what is pipe?

Como o nome sugere, um pipe é uma conexão entre dois pontos, de modo que qualquer coisa colocada em uma extremidade aparece do outro lado.

    
por 14.09.2012 / 00:43
5

Tente ver aqui como você pode obter mais informações sobre os canais abertos:

como -can-i-get-more-info-on-open-pipes-show-in-proc-in-linux

lsof | grep 2744159739


Ambos os comandos que são "canalizados" juntos devem estar funcionando corretamente, se um deles não estiver, então o tubo está quebrado. O tubo pode ser quebrado também por outra coisa, isso foi apenas o primeiro que surgiu em minha mente.


Pipes (por exemplo, no shell bash / ksh ele é representado por barra vertical) permitem que processos separados se comuniquem juntos, para passar informações recebidas de um comando para outro comando para o próximo processamento. Por exemplo:

ls -l | grep testfile
    
por 13.09.2012 / 22:01