Por que as informações sobre UID não estão em / proc / X / stat?

5

Esta é uma pergunta boba para o bem dos acadêmicos; Eu sei onde obter as informações de UID se eu precisar. De acordo com a página do manual proc (5):

       /proc/[number]/stat
              Status information about the process.  This is used by ps(1).  It is defined in /usr/src/linux/fs/proc/array.c.

       /proc/[number]/statm
              Provides information about memory status in pages.  The columns are:

       /proc/[number]/status
              Provides much of the information in /proc/[number]/stat and /proc/[number]/statm in a format that’s easier for humans to parse.

Acho interessante que stat não contenha informações sobre o UID , EUID etc. de um processo, ainda que status o faça. É estranho que alguém seja forçado a usar o arquivo "legível por humanos". Alguém por acaso sabe o motivo dessa mão baixa?

    
por Andrew B 26.11.2013 / 22:31

1 resposta

2

Ao manipular dados, na maioria das vezes, a chave é manter apenas os dados relevantes para o seu conjunto particular de tarefas e nada mais. Muitos dos dados expostos em /proc são feitos para um único propósito, ou seja, uma ferramenta que precisa ter visibilidade, etc.

Considerando os comentários, eu diria 3 coisas sobre /proc/[number]/stat :

  1. Os dados exibidos aqui são relevantes para funções e objetos de dados em /usr/src/linux/fs/proc/array.c .
  2. Esses dados também são relevantes para ps .
  3. Ao analisar os dados que estão aqui, você perceberá que não há nada aqui específico para o usuário. É tudo voltado para processos.

NOTA: para # 2. Esses são os dados do processo que são relevantes para ps . Os processos pertencentes a um usuário são mantidos em uma estrutura de dados diferente dentro do Kernel em outro lugar.

Por outro lado, com /proc/[number]/status , o comentário praticamente diz a você quais são esses dados, um ser humano lendo isso. Portanto, é provável que esse nó dentro do Kernel não sirva a nenhum outro propósito, a partir de uma perspectiva de ferramentas, para agrupar dados de outras fontes em um único local para o usuário consumi-lo.

Evidência adicional

Se você precisar de mais provas, olhe para essa pergunta que eu respondi há algum tempo, intitulado: / proc / meminfo MemTotal =? . Esta questão cobriu /proc/meminfo e foi uma questão semelhante aqui também. Alguns dos dados são expostos durante a inicialização do Kernel sob dmesg log output. No entanto, esses dados, embora relacionados à memória e percebidos como relevantes para /proc/meminfo estavam ausentes, novamente porque não eram úteis para:

  1. o público-alvo de ferramentas que usariam /proc/meminfo
  2. Não é relevante para as funções internas, métodos e estruturas de dados do Kernel que fizeram uso dos dados em /proc/meminfo .

Referências

por 27.11.2013 / 00:14

Tags