Kapitola 36. Nástroje monitorování systému

Obsah

36.1. Seznam otevřených souborů: lsof
36.2. Přístup uživatelů k souborům: fuser
36.3. Vlastnosti souboru: stat
36.4. USB zařízení: lsusb
36.5. SCSI zařízení: scsiinfo
36.6. Procesy: top
36.7. Seznam procesů: ps
36.8. Strom procesů: pstree
36.9. Kdo co dělá: w
36.10. Využití paměti: free
36.11. Systémové hlášení jádra: dmesg
36.12. Souborový systém a jeho využití: mount, df a du
36.13. Souborový systém /proc
36.14. vmstat, iostat a mpstat
36.15. procinfo
36.16. PCI zdroje: lspci
36.17. Systémová volání běžícícho programu: strace
36.18. Volání knihoven běžícím příkazem: ltrace
36.19. Zjištění vyžadovaných knihoven: ldd
36.20. Dodatečné informace o ELF binárních souborech
36.21. Meziprocesová komunikace: ipcs
36.22. Měření času: time

Abstrakt

Aktuální stav systému lze zjistit pomocí mnoha různých nástrojů. Najdete zde také nástroje potřebné pro každodenní práci včetně jejich nejdůležitějších parametrů.

U každého příkazu je současně uveden také příklad výstupu. Na první řádce příkladu je vždy příkaz (po znaku dolaru). Komentáře jsou uzavřeny v závorkách [...]. U dlouhých řádek, pokud je to potřeba, je zalomení. Zalomení dlouhých řádek se provádí pomocí znaku zpětného lomítka (\).

$ command -x -y
output line 1
output line 2
output line 3 is annoyingly long, so long that \
    we have to break it
output line 3
[...]
output line 98
output line 99

Popis každého z nástrojů je pouze stručný, aby bylo možné zmínit co největší množství užitečných příkazů. Podrobnější informace o každém příkazu najdete v jeho manuálové stránce. U většiny příkazů lze také použít krátkou nápovědu zadáním parametru --help.

36.1. Seznam otevřených souborů: lsof

Seznam všech souborů otevřených procesem s ID PID získáte zadáním parametru -p. Například všechny soubory otevřené aktuálním shellem zjistíte příkazem:

$ 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 /bin/zsh
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/lib/zsh/4.2.0/zsh/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

Ve výše uvedeném příkladu byla použita proměnná shellu $$, kde $$ vrací ID aktuálního shellu.

Bez parametru vypíše příkaz lsof všechny otevřené soubory. Obvykle jde o velmi velké množství souborů. Jejich počet zjistíte příkazem:

$ lsof | wc -l
3749

Seznam používaných znakových zařízení:

$ 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

SUSE LINUX Příručka správce systému 9.3