/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.