tempo de arquivo do procfs linux

5

Ao examinar uma listagem de diretórios "longa" de um diretório /proc/<pid>/ no Linux, notei que as entradas do pseudo-arquivo dentro do diretório têm, às vezes, diferentes tempos associados a elas.

Pelo que eu sei de como os internos funcionam, não há atributos "arbitrários" ou "imprevisíveis" na estrutura, tudo é determinístico, tudo (incluindo os tempos de arquivo) tem que ser determinado em algum lugar baseado em alguns critérios; se esse critério é ou não útil é a questão importante.

Por exemplo, o registro de data e hora no próprio diretório ( /proc/<pid>/ ) parece refletir a hora de início do processo correspondente (ID do processo, pelo menos - não é atualizado por uma chamada para exec ), enquanto vários entradas como proc/<pid>/fd/ ou /proc/<pid>/cwd podem ser um valor diferente. Meu melhor palpite é que muitos deles armazenam em cache o tempo que as informações foram recuperadas pela primeira vez, mas é difícil dizer.

Existe algum conhecimento útil a ser obtido aqui?

    
por tylerl 03.01.2012 / 05:58

2 respostas

2

Como você deve saber, os arquivos em /proc são arquivos na memória, o que significa que eles não existem no disco rígido. No entanto, eles podem ser tratados como qualquer outro arquivo. Eu não vejo nenhum significado especial do tempo de modificação desses arquivos. Eles são como qualquer outro arquivo em seu sistema de arquivos.

Você pode tentar verificar a hora de um arquivo e, em seguida, touch dele. Conforme esperado, a hora da modificação do arquivo será atualizada.

    
por 03.01.2012 / 09:10
1

/proc é apenas outro sistema de arquivos, as entradas finais dentro dele são criadas exatamente como em qualquer outro sistema de arquivos. Se você criar um processo, a entrada /proc/<pid>/ será criada para conter os dados no processo. Quando esse processo abre um descritor de arquivo, uma entrada é criada dentro de /proc/<pid>/fd/ .

Quanto ao conhecimento útil, não tive oportunidade de usar o conteúdo de /proc/<pid>/ para nada, mas espero que um dia eu possa. Depende muito do que é útil para você. Sysadmin acharia coisas diferentes interessantes do que um especialista em segurança, do que um administrador do banco de dados. Ainda assim, é bom saber que há esse tipo de dados disponíveis. Um dia pode vir a calhar, mas eu não investiria muito tempo aprendendo as porcas e parafusos desse problema. Isso é porque para mim, pessoalmente, isso seria um investimento de tempo ruim. Sua milhagem pode variar:).

Editar : não consegui ajustar minha resposta ao comentário de tylerl dentro de um comentário, por isso entra aqui.

tylerl, você está certo e errado ao mesmo tempo, dependendo de como alguém olha para o problema (pense: dualidade onda / partícula da luz). Você certamente está certo quando diz que procfs não é um sistema de arquivos "real". Você não pode criar diretórios ou arquivos ou armazenar dados nele. Sim, é uma API que permite acesso a algumas estruturas de kernel, definitivamente não cria estruturas em disco. Não tenho tanta certeza sobre as estruturas na memória (onde é o tempo [cm] dos diretórios em /proc armazenados?), Mas admito a ignorância e não discuto o ponto.

Por outro lado, quando você deseja explorar procfs , observe o que está lá e aprenda com entradas lá, você pode tratá-lo como "apenas outro sistema de arquivos". Você pode ler alguns "arquivos" e pode escrever (geralmente valores estritamente definidos) em alguns "arquivos". Quando você cria um processo (por exemplo, execute bash & ), uma entrada /proc/<pid> terá a data de criação correspondente à hora da criação do processo. Eu acho que para o modelo "veja o que está lá", uma boa aproximação é "esta entrada é criada no sistema de arquivos no momento da criação do processo". Claro, estritamente falando, pode ser uma mentira. Ainda assim, é uma mentira muito útil se você não precisa de toda a montanha da verdade despejada em você.

    
por 03.01.2012 / 09:45

Tags