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

Sumário

6.1. Lista de arquivos abertos: lsof
6.2. Arquivos de acesso do usuário: fuser
6.3. Propriedades de arquivo: stat
6.4. Dispositivos USB: lsusb
6.5. Informações sobre um dispositivo SCSI: scsiinfo
6.6. Processos: top
6.7. Lista de processos: ps
6.8. Árvore de processos: pstree
6.9. Quem está fazendo o quê: w
6.10. Uso da memória: free
6.11. Buffer do anel de kernel: dmesg
6.12. Sistemas de arquivos e sua utilização: mount, df e du
6.13. O sistema de arquivos /proc
6.14. Recursos PCI: lspci
6.15. Chamadas do sistema de uma execução de programa: strace
6.16. Chamadas da biblioteca de uma execução de programa: ltrace
6.17. Especificação da biblioteca necessária: ldd
6.18. Informações adicionais sobre binários ELF
6.19. Comunicação entre processos: ipcs
6.20. 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 > ou #). As omissões são indicadas 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.


6.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:

tester@linux:~> lsof -p $$
COMMAND  PID   USER   FD   TYPE DEVICE    SIZE   NODE NAME
bash    5552 tester  cwd    DIR    3,3    1512 117619 /home/tester
bash    5552 tester  rtd    DIR    3,3     584      2 /
bash    5552 tester  txt    REG    3,3  498816  13047 /bin/bash
bash    5552 tester  mem    REG    0,0              0 [heap] (stat: No such \
 file or directory)
bash    5552 tester  mem    REG    3,3  217016 115687 /var/run/nscd/passwd
bash    5552 tester  mem    REG    3,3  208464  11867 \
 /usr/lib/locale/en_GB.utf8/LC_CTYPE
bash    5552 tester  mem    REG    3,3  882134  11868 \
 /usr/lib/locale/en_GB.utf8/LC_COLLATE
bash    5552 tester  mem    REG    3,3 1386997   8837 /lib/libc-2.3.6.so
bash    5552 tester  mem    REG    3,3   13836   8843 /lib/libdl-2.3.6.so
bash    5552 tester  mem    REG    3,3  290856  12204 /lib/libncurses.so.5.5
bash    5552 tester  mem    REG    3,3   26936  13004 /lib/libhistory.so.5.1
bash    5552 tester  mem    REG    3,3  190200  13006 /lib/libreadline.so.5.1
bash    5552 tester  mem    REG    3,3      54  11842 \
 /usr/lib/locale/en_GB.utf8/LC_NUMERIC
bash    5552 tester  mem    REG    3,3    2375  11663 \
 /usr/lib/locale/en_GB.utf8/LC_TIME
bash    5552 tester  mem    REG    3,3     290  11736 \
 /usr/lib/locale/en_GB.utf8/LC_MONETARY
bash    5552 tester  mem    REG    3,3      52  11831 \
 /usr/lib/locale/en_GB.utf8/LC_MESSAGES/SYS_LC_MESSAGES
bash    5552 tester  mem    REG    3,3      34  11862 \
 /usr/lib/locale/en_GB.utf8/LC_PAPER
bash    5552 tester  mem    REG    3,3      62  11839 \
 /usr/lib/locale/en_GB.utf8/LC_NAME
bash    5552 tester  mem    REG    3,3     127  11664 \
 /usr/lib/locale/en_GB.utf8/LC_ADDRESS
bash    5552 tester  mem    REG    3,3      56  11735 \
 /usr/lib/locale/en_GB.utf8/LC_TELEPHONE
bash    5552 tester  mem    REG    3,3      23  11866 \
 /usr/lib/locale/en_GB.utf8/LC_MEASUREMENT
bash    5552 tester  mem    REG    3,3   21544   9109 \
 /usr/lib/gconv/gconv-modules.cache
bash    5552 tester  mem    REG    3,3     366   9720 \
 /usr/lib/locale/en_GB.utf8/LC_IDENTIFICATION
bash    5552 tester  mem    REG    3,3   97165   8828 /lib/ld-2.3.6.so
bash    5552 tester    0u   CHR  136,5              7 /dev/pts/5
bash    5552 tester    1u   CHR  136,5              7 /dev/pts/5
bash    5552 tester    2u   CHR  136,5              7 /dev/pts/5
bash    5552 tester  255u   CHR  136,5              7 /dev/pts/5
  

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:

tester@linux:~> lsof | grep CHR
bash      3838     tester    0u      CHR  136,0                 2 /dev/pts/0
bash      3838     tester    1u      CHR  136,0                 2 /dev/pts/0
bash      3838     tester    2u      CHR  136,0                 2 /dev/pts/0
bash      3838     tester  255u      CHR  136,0                 2 /dev/pts/0
bash      5552     tester    0u      CHR  136,5                 7 /dev/pts/5
bash      5552     tester    1u      CHR  136,5                 7 /dev/pts/5
bash      5552     tester    2u      CHR  136,5                 7 /dev/pts/5
bash      5552     tester  255u      CHR  136,5                 7 /dev/pts/5
X         5646       root  mem       CHR    1,1              1006 /dev/mem
lsof      5673     tester    0u      CHR  136,5                 7 /dev/pts/5
lsof      5673     tester    2u      CHR  136,5                 7 /dev/pts/5
grep      5674     tester    1u      CHR  136,5                 7 /dev/pts/5
grep      5674     tester    2u      CHR  136,5                 7 /dev/pts/5