Kapitel 36. Utilities zur Systemüberwachung

Inhaltsverzeichnis

36.1. Liste der geöffneten Dateien: lsof
36.2. Wer greift auf Dateien zu: fuser
36.3. Eigenschaften einer Datei: stat
36.4. USB-Devices: lsusb
36.5. Information über ein SCSI-Device: scsiinfo
36.6. Prozesse: top
36.7. Prozessliste: ps
36.8. Prozessbaum: pstree
36.9. Wer macht was: w
36.10. Speichernutzung: free
36.11. Kernel Ring Buffer: dmesg
36.12. Dateisysteme: mount, df und du
36.13. Das /proc Dateisystem
36.14. vmstat, iostat und mpstat
36.15. procinfo
36.16. PCI Ressourcen: lspci
36.17. System Calls eines Programmlaufes: strace
36.18. Library Calls eines Programmlaufes: ltrace
36.19. Welche Library wird benötigt: ldd
36.20. Zusätzliche Informationen über ELF Binärdateien
36.21. Interprozess-Kommunikation: ipcs
36.22. Zeitmessung mit time

Zusammenfassung

In diesem Kapitel werden verschiedenen Programme und Mechanismen vorgestellt, mit denen Sie den Zustand Ihres Systems untersuchen können. Weiterhin werden einige für die tägliche Arbeit nützliche Utilities mit ihren wichtigsten Optionen beschrieben.

Für die vorgestellten Kommandos werden jeweils beispielhafte Ausgaben dargestellt. Darin ist die erste Zeile das Kommando selbst (nach einem Dollarzeichen als Prompt). Auslassungen werden durch [...] angedeutet und lange Zeilen, soweit notwendig, umgebrochen. Umbrüche langer Zeilen sind durch einen Backslash (\) angedeutet:

$ 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

Damit möglichst viele Utilities erwähnt werden können, ist die Darstellung kurz gehalten. Zu allen Kommandos finden Sie mehr Information in den jeweiligen Manualpages. Die meisten Kommandos verstehen auch die Option --help, damit erhält man eine knappe Auflistung der möglichen Optionen.

36.1. Liste der geöffneten Dateien: lsof

Um die Liste alles Dateien anzuzeigen, die der Prozess mit der Prozess-ID PID geöffnet hält, benutzt man die Option -p. Beispielsweise, um alle von der laufenden Shell benutzten Dateien anzuzeigen:


$ 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

Es wurde die spezielle Shell-Variable $$ benutzt, die als Wert die Prozess-ID der Shell hat.

Ohne Option listet lsof alle momentan geöffneten Dateien, in der Regel sind dies recht viele. Das es oft tausende von geöffneten Dateien gibt, ist eine Liste aller Dateien selten brauchbar. Die Liste aller Dateien kann jedoch mit Suchfunktionen kombiniert werden, um sinnvolle Listen zu generieren. Das folgende Beispiel zeigt eine Liste aller verwendeten Character-Devices:

$ 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 Administrationshandbuch 9.3