Capítulo 25. Utilitários de monitoramento do sistema

Índice

25.1. Lista de arquivos abertos: lsof
25.2. Arquivos de acesso do usuário: fuser
25.3. Propriedades de arquivo: stat
25.4. Dispositivos USB: lsusb
25.5. Informações sobre um dispositivo SCSI: scsiinfo
25.6. Processos: top
25.7. Lista de processos: ps
25.8. Árvore de processos: pstree
25.9. Quem está fazendo o quê: w
25.10. Uso da memória: free
25.11. Buffer do anel de kernel: dmesg
25.12. Sistemas de arquivos e sua utilização: mount, df e du
25.13. O sistema de arquivos /proc
25.14. vmstat, iostat e mpstat
25.15. procinfo
25.16. Recursos PCI: lspci
25.17. Chamadas do sistema de uma execução de programa: strace
25.18. Chamadas da biblioteca de uma execução de programa: ltrace
25.19. Especificação da biblioteca necessária: ldd
25.20. Informações adicionais sobre binários ELF
25.21. Comunicação entre processos: ipcs
25.22. Medição do tempo com time

Resumo

Vários programas e mecanismos, alguns dos quais apresentamos aqui, podem ser usados para examinar o status do sistema. Também são descritos alguns utilitários para o trabalho de rotina, bem como seus parâmetros mais importantes.

Para cada comando apresentado, são fornecidos exemplos das saídas relevantes. Nesses exemplos, a primeira linha é o comando propriamente dito (após o sinal de cifrão). Os comentários são indicados entre colchetes ([...]) e linhas extensas são reduzidas quando necessário. Quebras de linhas extensas são indicadas por uma barra invertida (\).

$ comando -x -y 
linha de saída 1
linha de saída 2
linha de saída 3 é muito longa, por isso \ 
    quebramos para a 
linha de saída 3
[...] 
linha de saída 98 
linha de saída 99

Procuramos oferecer descrições curtas para podermos mencionar o maior número possível de utilitários. Para obter mais informações sobre os comandos, consulte as páginas de manual. A maior parte dos comandos também compreende o parâmetro --help, que gera uma breve lista de parâmetros possíveis.

25.1. Lista de arquivos abertos: lsof

Para ver uma lista de todos os arquivos abertos para o processo com ID PID, use -p. Por exemplo, para ver todos os arquivos usados pelo shell atual, digite:

$ lsof -p $$
COMMAND  PID USER   FD   TYPE DEVICE    SIZE     NODE NAME
zsh     4694   jj  cwd    DIR   0,18     144 25487368 /suse/jj/t (totan:/real-home/jj)
zsh     4694   jj  rtd    DIR    3,2     608        2 /
zsh     4694   jj  txt    REG    3,2  441296    20414 /binzsh
zsh     4694   jj  mem    REG    3,2  104484    10882 /lib/ld-2.3.3.so zsh     4694   jj  mem    REG    3,2   11648    20610 /usr/lib/zsh/4.2.0/zsh/rlimits.so
[...]
zsh     4694   jj  mem    REG    3,2   13647    10891 /lib/libdl.so.2
zsh     4694   jj  mem    REG    3,2   88036    10894 /lib/libnsl.so.1
zsh     4694   jj  mem    REG    3,2  316410   147725 /lib/libncurses.so.5.4
zsh     4694   jj  mem    REG    3,2  170563    10909 /lib/tls/libm.so.6
zsh     4694   jj  mem    REG    3,2 1349081    10908 /lib/tls/libc.so.6
zsh     4694   jj  mem    REG    3,2      56    12410 /usr/lib/locale/de_DE.utf8/LC_TELEPHONE
[...]
zsh     4694   jj  mem    REG    3,2      59    14393 /usr/lib/locale/en_US/LC_NUMERIC
zsh     4694   jj  mem    REG    3,2  178476    14565 /usr/lib/locale/en_US/LC_CTYPE
zsh     4694   jj  mem    REG    3,2   56444    20598 /usr/libzsh/4.2.0zsh/computil.so
zsh     4694   jj    0u   CHR 136,48               50 /dev/pts/48
zsh     4694   jj    1u   CHR 136,48               50 /dev/pts/48 
zsh     4694   jj    2u   CHR 136,48               50 /dev/pts/48 
zsh     4694   jj   10u   CHR 136,48               50 /dev/pts/48

Foi usada a variável de shell especial $$, cujo valor é o ID do processo do shell.

O comando lsof lista todos os arquivos atualmente abertos quando usado com quaisquer outros parâmetros. Como há milhares de arquivos abertos, raramente é útil listá-los. No entanto, a lista de todos os arquivos pode ser combinada com funções de pesquisa para gerar listas úteis. Por exemplo, listar todos os dispositivos de caracteres usados:

$ lsof | grep CHR
sshd       4685    root  mem    CHR    1,5             45833 /dev/zero
sshd       4685    root  mem    CHR    1,5             45833 /dev/zero
sshd       4693      jj  mem    CHR    1,5             45833 /dev/zero
sshd       4693      jj  mem    CHR    1,5             45833 /dev/zero
zsh        4694      jj    0u   CHR 136,48                50 /dev/pts/48
zsh        4694      jj    1u   CHR 136,48                50 /dev/pts/48
zsh        4694      jj    2u   CHR 136,48                50 /dev/pts/48
zsh        4694      jj   10u   CHR 136,48                50 /dev/pts/48
X          6476    root  mem    CHR    1,1             38042 /dev/mem
lsof      13478      jj    0u   CHR 136,48                50 /dev/pts/48
lsof      13478      jj    2u   CHR 136,48                50 /dev/pts/48
grep      13480      jj    1u   CHR 136,48                50 /dev/pts/48
grep      13480      jj    2u   CHR 136,48                50 /dev/pts/48