Explorando /Sistema de Arquivos Proc em Linux

Explorando /Sistema de Arquivos Proc em Linux

Hoje, vamos dar uma olhada dentro do /Proc diretório e desenvolva uma familiaridade com ele. O /Proc diretório está presente em todos Linux sistemas, independentemente do sabor ou arquitetura.

Um equívoco que temos que esclarecer imediatamente é que o /Proc diretório é NÃO um real Sistema de arquivo, No sentido do termo. É um Sistema de arquivos virtual. Contido dentro do Procfs são informações sobre processos e outras informações do sistema. É mapeado para /Proc e montado em bota tempo.

Sistema de arquivos explorando /proc

Primeiro, vamos entrar no /Proc diretório e dê uma olhada em volta:

# CD /Proc

A primeira coisa que você notará é que há alguns arquivos de som familiar, E então um monte de diretórios numerados. O diretórios numerados representar processos, mais conhecido como Pids, e dentro deles, um comando que os ocupa. Os arquivos contêm informações do sistema, como Memorosy (Meminfo), Informações da CPU (cpuinfo) e disponível FileSystems.

Leia também:  Comando Linux Free para verificar a memória física e trocar memória

Vamos dar uma olhada em um dos arquivos primeiro:

# gato /proc /meminfo
Saída de amostra

que retorna algo semelhante a isso:

MEMTOTAL: 604340 KB MEMFREE: 54240 KB BOUQUROS: 18700 KB CACHED: 369020 KB Swapcached: 0 KB Ativo: 312556 KB Inativo: 164856 KB ativo (ANON): 89744 KB Inativo (Anon): 360 KB (FILHA) (Arquivo): 164496 KB inevitável: 0 kb Mlocked: 0 KB Swaptotal: 0 kb Troca de troca: 0 kb sujo: 0 kb writeback: 0 kb anonpages: 89724 kb mapeado: 18012 KB: 412 KB Slab: 50104 KB .. 

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 das duas linhas principais.

Executando 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 Man, executando:

# homem 5 /proc /

Eu vou te dar um rápido resumo /Proc's arquivos:

  1. /proc/cmdline - Informações da linha de comando do kernel.
  2. /proc/console - Informações sobre os consoles atuais, incluindo TTY.
  3. /PROC/DISPOSITIVOS - Drivers de dispositivo atualmente configurados para o kernel em execução.
  4. /proc/dma - Informações sobre os canais DMA atuais.
  5. /proc/fb - Dispositivos de estrutura.
  6. /proc/filesystemS - sistemas de arquivos atuais suportados pelo kernel.
  7. /proc/iomem - Mapa de memória do sistema atual para dispositivos.
  8. /proc/ioports - Regiões de porta registradas para comunicação de saída de entrada com dispositivo.
  9. /proc/loadavg - Média de carga do sistema.
  10. /proc/bloqueios - Arquivos atualmente bloqueados pelo kernel.
  11. /proc/meminfo - Informações sobre a memória do sistema (veja o exemplo acima).
  12. /proc/misc - Drivers diversos registrados para um dispositivo principal diverso.
  13. /PROC/Módulos - Módulos de kernel atualmente carregados.
  14. /proc/montar - Lista de todas as montagens em uso por sistema.
  15. /proc/partitions - Informações detalhadas sobre partições disponíveis para o sistema.
  16. /proc/pci - Informações sobre todos os dispositivos PCI.
  17. /proc/stat - Registro ou várias estatísticas mantidas a partir da última reinicialização.
  18. /proc/swap - Informações sobre o espaço de troca.
  19. /Proc/Uptime - Informações de tempo de atividade (em segundos).
  20. /proc/versão - Versão do kernel, versão GCC e distribuição Linux instalada.

Dentro de /Proc's diretórios numerados, você encontrará alguns arquivos e links. Lembre -se de que os números desses diretórios se correlacionam com o PID do comando que está sendo executado dentro deles. Vamos usar um exemplo. No meu sistema, há um nome de pasta /Proc/12:

# CD /Proc /12 # LS
Saída de amostra
attr cedumump_filter IO Monta oom_score_adj Smaps wchan autogrupo cpuset latência montagem pagemap pilha Auxv limita cwd personalidade líquida estatística cgrop ambient loginuid ns root statm clear_refs exe maps nmA_maps status cmdline fd oom_ad oomjjg shingost shotstl sysClina sinoclina fd oomjad oomjg sghtsts symans fd oomjinj shingost shotsts sysClina sinoclina sinoclina fd oomjinj shingost shotsts syscrin sysclin

Se eu correr:

# gato/proc/12/status

Eu recebo o seguinte:

Nome: XenWatch State: S (Sleeping) TGID: 12 PID: 12 PPID: 2 Tracerpid: 0 UID: 0 0 0 0 GID: 0 0 0 0 FDSize: 64 GRUPOS: Tópico: 1 SIGQ: 1/4592 SIGPND: 00000000000000 ShdpND : 0000000000000000 SigBlk: 0000000000000000 SigIgn: ffffffffffffffff SigCgt: 0000000000000000 CapInh: 0000000000000000 CapPrm: ffffffffffffffff CapEff: ffffffffffffffff CapBnd: ffffffffffffffff Cpus_allowed: 1 Cpus_allowed_list: 0 Mems_allowed: 00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 84 nonvoluntary_ctxt_switches: 0

Então o que isso quer dizer? Bem, a parte importante está no topo. Podemos ver do arquivo de status que esse processo pertence XenWatch. Seu estado atual é dormindo, e seu processo EU IA é 12, obviamente. Também podemos ver quem está executando isso, como Uid e Gid são 0, indicando que esse processo pertence ao raiz do utilizador.

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

  1. cmdline - linha de comando do processo
  2. Environ - variáveis ​​ambientais
  3. fd - Descritores de arquivo
  4. limites - contém informações sobre os limites do processo
  5. montagens - informação relacionada

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

  1. cwd - um link para o diretório de trabalho atual do processo
  2. exe - link para o executável do processo
  3. raiz - link para o diretório de trabalho do processo

Isso deve começar a se familiarizar com o /Proc diretório. Também deve fornecer informações sobre como vários comandos obtêm suas informações, como tempo de atividade, LSOF, montar, e ps, Só para citar alguns.