Explorando /Sistema de Arquivos Proc em Linux
- 2398
- 412
- Leroy Lebsack
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 /procPrimeiro, 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:
- /proc/cmdline - Informações da linha de comando do kernel.
- /proc/console - Informações sobre os consoles atuais, incluindo TTY.
- /PROC/DISPOSITIVOS - Drivers de dispositivo atualmente configurados para o kernel em execução.
- /proc/dma - Informações sobre os canais DMA atuais.
- /proc/fb - Dispositivos de estrutura.
- /proc/filesystemS - sistemas de arquivos atuais suportados pelo kernel.
- /proc/iomem - Mapa de memória do sistema atual para dispositivos.
- /proc/ioports - Regiões de porta registradas para comunicação de saída de entrada com dispositivo.
- /proc/loadavg - Média de carga do sistema.
- /proc/bloqueios - 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 um dispositivo principal diverso.
- /PROC/Módulos - Módulos de kernel atualmente carregados.
- /proc/montar - Lista de todas as montagens em uso por sistema.
- /proc/partitions - Informações detalhadas sobre partições disponíveis para o sistema.
- /proc/pci - Informações sobre todos os dispositivos PCI.
- /proc/stat - Registro ou várias estatísticas mantidas a partir da última reinicialização.
- /proc/swap - Informações sobre o espaço de troca.
- /Proc/Uptime - Informações de tempo de atividade (em segundos).
- /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:
- cmdline - linha de comando do processo
- Environ - variáveis ambientais
- fd - Descritores de arquivo
- limites - contém informações sobre os limites do processo
- montagens - informação relacionada
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
- 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.
- « Mutt - um cliente de email da linha de comando para enviar e -mails do terminal
- 11 comandos linux úteis menores conhecidos »