Kapitel 25. Dienstprogramme zur Systemüberwachung

Inhaltsverzeichnis

25.1. Liste der geöffneten Dateien: lsof
25.2. Liste der Benutzer bzw. Prozesse, die auf Dateien zugreifen: fuser
25.3. Dateieigenschaften: stat
25.4. USB-Geräte: lsusb
25.5. Informationen zu einem SCSI-Gerät: scsiinfo
25.6. Prozesse: top
25.7. Prozessliste: ps
25.8. Prozessbaum: pstree
25.9. Wer macht was: w
25.10. Speichernutzung: free
25.11. Kernel Ring Buffer: dmesg
25.12. Dateisysteme und ihre Nutzung: mount, df und du
25.13. Das Dateisystem /proc
25.14. vmstat, iostat und mpstat
25.15. procinfo
25.16. PCI-Ressourcen: lspci
25.17. Systemaufrufe eines aktiven Programms: strace
25.18. Bibilotheksaufrufe eines aktiven Programms: ltrace
25.19. Erforderliche Bibliothek angeben: ldd
25.20. Zusätzliche Informationen zu ELF-Binärdateien
25.21. Prozessübergreifende Kommunikation: ipcs
25.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 Dienstprogramme sowie deren wichtigsten Optionen beschrieben.

Für die vorgestellten Befehle werden jeweils beispielhafte Ausgaben dargestellt. Darin ist die erste Zeile der Befehl selbst (nach einem Dollarzeichen als Eingabeaufforderung). Auslassungen sind durch eckige Klammern ([...]) gekennzeichnet und lange Zeilen werden, falls erforderlich, umbrochen. Umbrüche langer Zeilen sind durch einen umgekehrten Schrägstrich (\) gekennzeichnet.

$ 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 Dienstprogramme erwähnt werden können, sind die Beschreibungen kurz gehalten. Weitere Informationen zu allen Befehlen finden Sie auf den entsprechenden Manualpages. Die meisten Befehle verstehen auch die Option --help, mit der Sie eine kurze Liste der verfügbaren Parameter anzeigen können.

25.1. Liste der geöffneten Dateien: lsof

Um eine Liste aller Dateien anzuzeigen, die für den Prozess mit der Prozess-ID PID geöffnet sind, verwenden Sie -p. Um beispielsweise alle von der aktuellen Shell verwendeten Dateien anzuzeigen, geben Sie Folgendes ein:

$ 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 $$ verwendet, deren Wert die Prozess-ID der Shell ist.

Wird der Befehl lsof ohne Parameter eingegeben, werden alle aktuell geöffneten Dateien angezeigt. Da dies in der Regel recht viele sind, wird dieser Befehl selten verwendet. Die Liste der Dateien kann jedoch mit Suchfunktionen kombiniert werden, um sinnvolle Listen zu generieren. Beispiel: Liste aller verwendeten zeichenorientierten Geräte:

$ 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