Pesquisa de site

/proc - Obtenha informações de processo e hardware do Linux


Hoje iremos nos aprofundar no conteúdo do diretório /proc para desenvolver uma melhor compreensão de suas funcionalidades. É importante observar que o diretório /proc é um recurso comum em todas as distribuições Linux, independentemente de seu tipo ou arquitetura.

Um equívoco que devemos esclarecer imediatamente é que o diretório /proc NÃO é um sistema de arquivos convencional no sentido tradicional do termo.

É um sistema de arquivos virtual que contém informações sobre processos e outros dados relacionados ao sistema dentro do procfs. Este sistema de arquivos é mapeado para o diretório /proc e é montado durante o processo de inicialização do sistema.

O que é /proc no Linux

O sistema de arquivos /proc serve como uma interface para estruturas de dados do kernel e informações de tempo de execução, o que fornece uma maneira para usuários e aplicativos acessarem informações detalhadas sobre processos, configuração do sistema, hardware e muito mais, expondo esses dados por meio de uma hierarquia de arquivos virtuais.

Para visualizar uma lista completa de arquivos e diretórios no sistema de arquivos /proc, você pode usar o comando ls conforme mostrado.

ls /proc

Navegando /proc no Linux

Ao navegar até o diretório /proc, você notará que existem alguns arquivos que parecem familiares e, em seguida, vários diretórios numerados, cada um correspondendo a um processo em execução no sistema.

cd /proc
ls

Esses diretórios numerados representam os processos, mais conhecidos como process IDs (PIDs), e dentro deles, um comando que os ocupa. Os arquivos contêm informações do sistema, como memória (meminfo), informações da CPU (cpuinfo) e sistemas de arquivos disponíveis.

Aqui estão alguns arquivos e diretórios principais que você encontrará:

  • /proc/cpuinfo – Lista informações sobre a(s) CPU(s) do sistema, como modelo, velocidade e número de núcleos.
  • /proc/meminfo – Lista detalhes sobre o uso de memória e estatísticas que contêm a quantidade total de memória, memória livre e memória usada por cada processo.
  • /proc/filesystems – Contém uma lista de todos os sistemas de arquivos suportados pelo kernel.
  • /proc/sys – Lista a configuração e os parâmetros de tempo de execução do kernel.
  • /proc/loadavg – Mostra a média de carga do sistema em diferentes intervalos de tempo, como 1, 5 e 15 minutos.
  • /proc/self – Um link simbólico para o diretório do próprio processo.
  • /proc/stat – Contém uma variedade de estatísticas sobre o sistema, como o número de processos em execução, o número de interrupções e a quantidade de tempo gasto em cada estado da CPU.
  • /proc/uptime – Contém a quantidade de tempo que o sistema está em execução.
  • /proc/PID – Contém informações sobre um processo específico, onde PID é o ID do processo.

Extraindo informações do sistema

O /proc/meminfo é usado para mostrar informações sobre o uso de memória e estatísticas de um sistema Linux, que contém um instantâneo de várias métricas relacionadas à memória, que podem ser úteis para monitorar o desempenho do sistema e a utilização de recursos. .

cat /proc/meminfo

Como você pode ver, /proc/meminfo contém um monte de informações sobre a memória do seu sistema, incluindo a quantidade total disponível (em kb) e a quantidade livre nos dois primeiros linhas.

Executar o comando cat em qualquer um dos arquivos em /proc produzirá seu conteúdo. Informações sobre quaisquer arquivos estão disponíveis na página de manual executando:

man 5 /proc/<filename>

Vou lhe dar um rápido resumo dos arquivos /proc:

  • /proc/cmdline – Informações da linha de comando do kernel.
  • /proc/console – Informações sobre os consoles atuais, incluindo tty.
  • /proc/devices – Drivers de dispositivo atualmente configurados para o kernel em execução.
  • /proc/dma – Informações sobre os canais DMA atuais.
  • /proc/fb – Dispositivos Framebuffer.
  • /proc/filesystems – Sistemas de arquivos atuais suportados pelo kernel.
  • /proc/iomem – Mapa atual de memória do sistema para dispositivos.
  • /proc/ioports – Regiões de porta registradas para comunicação de entrada-saída com o dispositivo.
  • /proc/loadavg – Média de carga do sistema.
  • /proc/locks – Arquivos atualmente bloqueados pelo kernel.
  • /proc/meminfo – Informações sobre a memória do sistema (veja o exemplo acima).
  • /proc/misc – Drivers diversos registrados para diversos dispositivos principais.
  • /proc/modules – Módulos do kernel atualmente carregados.
  • /proc/mounts – Lista de todas as montagens em uso pelo sistema.
  • /proc/partitions – Informações detalhadas sobre partições disponíveis para o sistema.
  • /proc/pci – Informações sobre cada dispositivo PCI.
  • /proc/stat – Registro ou diversas estatísticas mantidas desde a última reinicialização.
  • /proc/swap – Informações sobre espaço de troca.
  • /proc/uptime – Informações de tempo de atividade (em segundos).
  • /proc/version – Versão do kernel, versão gcc e distribuição Linux instalada.

Extraindo informações do processo

Nos diretórios numerados de /proc você encontrará alguns arquivos e links. Lembre-se de que os números desses diretórios estão correlacionados ao PID do comando que está sendo executado dentro deles.

Por exemplo, navegar para /proc/ fornece detalhes como:

  • /proc//cmdline – Argumentos de linha de comando usados para iniciar o processo.
  • /proc//status – Informações detalhadas de status, incluindo uso de memória e estatísticas de processo.
  • /proc//fd – Links simbólicos para arquivos abertos pelo processo.

Vamos usar um exemplo para visualizar uma pasta chamada /proc/12.

cd /proc/12
ls

Se eu correr:

cat /proc/12/status

Eu recebo o seguinte:

Então o que isso quer dizer? Bem, a parte importante está no topo. Podemos ver no arquivo de status que este processo pertence a rcu_tasks_rude_kthread. Seu estado atual é idle, e seu processo ID é 12, obviamente.

Também podemos ver quem está executando isso, já que UID e GID são 0, indicando que este processo pertence à raiz. forte> usuário.

Em qualquer diretório numerado, você terá uma estrutura de arquivos semelhante, e os mais importantes com suas descrições são os seguintes:

  • cmdline – linha de comando do processo
  • meio ambiente – variáveis ambientais
  • fd – descritores de arquivo
  • limites – contém informações sobre os limites do processo
  • montagens – informações relacionadas

Você também notará vários links no diretório numerado:

  • cwd – um link para o diretório de trabalho atual do processo
  • exe – link para o executável do processo
  • root – link para o diretório de trabalho do processo

Isso deve ajudá-lo a se familiarizar com o diretório /proc. Ele também deve fornecer informações sobre como vários comandos obtêm suas informações, como uptime, lsof, mount e ps, apenas para citar alguns.