Original geschrieben von miret
Wenn ich dem gkrellm trauen kann, lastet mein kde den speicher kaum aus und swap berührt er eigentlich nie.
Ich hab aber auch nicht immer gleich 9millionen Progs am laufen.
Grundlagen des Linux-Prozeßkonzepts
* jedes im Ablauf befindliche Programm wird von Linux als Prozeß verwaltet
* Linux ist ein Mehrnutzer-/Mehrprozeß-System, d.h., es kann unterschiedliche Prozesse verschiedener Nutzer quasiparallel ausführen
* um diese Quasiparallelität zu erreichen, werden alle Prozesse reihum immer nur für eine gewisse Zeitscheibe ausgeführt und dann unterbrochen, bis sie das nächste Mal an der Reihe sind
* dadurch entsteht beim Nutzer der Eindruck, daß alle Prozesse parallel ablaufen, was aber auf den bei uns verfügbaren PCs nicht der Fall ist, da diese nur über einen einzigen Prozessor verfügen, den sich alle Nutzer- und System-Prozesse teilen müssen
* die Zeitscheiben sind aus Sicht des Menschen sehr kurz, aus Sicht des Rechners aber doch ausreichend lang, um die Prozesse deutlich sichtbar fortschreiten zu lassen
* jedem Prozeß ist neben anderen Attributen eine numerische Eigentümer-ID sowie eine eindeutige numerische Prozeß-ID (PID) zugeordnet
* die Eigentümer-ID ist die Linux-UID des Eigentümers des Prozesses, also desjenigen Nutzers, der den Prozeß erzeugte (das Programm startete)
* alle Prozesse, die ein bestimmter Nutzer startet, tragen also seine Linux-UID als Eigentümer-ID
* statt der Eigentümer-ID wird von den Prozeßmanagement-Werkzeugen in der Regel das Nutzerkennzeichen des Eigentümers angezeigt bzw. zur Auswahl von Prozessen genutzt
* die PIDs dienen der eindeutigen Prozeßidentifikation und werden von Linux mit 1 beginnend aufsteigend und zyklisch vergeben, d.h., jeder neue Prozeß erhält die nächsthöhere freie PID, wobei nach Erreichen einer maximalen PID (32767) wieder vorn begonnen wird
* jeder Prozeß behält seine PID bis zu seiner Beendigung
* jeder Prozeß kann "Vaterprozeß" sein, d.h. "Kindprozesse" erzeugen, so daß eine baumförmige Prozeßhierarchie entsteht, in der der Prozeß 1 (mit Namen init) als Vorfahre aller Prozesse (bzw. als Wurzel des Prozeßbaums) auftaucht
Anzeige des Prozeßbaums: pstree
* den Prozeßbaum (also die Prozeßhierarchie) kann man sich mit dem Kommando
pstree
anzeigen lassen
* bei Angabe der Option -p zeigt pstree zusätzlich die PIDs der Prozesse an:
pstree -p
* um nur die Prozesse eines bestimmten Nutzers zu sehen, gibt man dessen Nutzerkennzeichen als Argument an
Beispiel: Anzeige der Prozesse für Nutzer hot:
hot@alfredo 91 > pstree -p hot
tcsh(29957)---sftp-server(30002)
kaudioserver(7589)---maudio(7590)
kbanner.kss(7580)
startkde(7454)-+-kbgndwm(7595)
|-kfm(7592)-+-kpm(921)
| |-sh(30971)---netscape-commun(30989)---netscape-commun(31005)
| |-xterm(27564)---tcsh(27566)---pstree(6153)
| `-xterm(27634)---tcsh(27636)---vim(30005)
|-kpanel(7594)
|-krootwm(7593)
|-kwm(7605)
`-kwmsound(7591)
xterm(828
---pine(8290)
Anzeige von Prozeßlisten: ps, top
* als ein sehr flexibles, d.h. durch viele Optionen steuerbares Kommando zur Anzeige von Informationen über Prozesse existiert das Kommando ps, dessen Anwendung wir nur an wenigen konkreten Beispielen zeigen wollen (für weitergehende Informationen sei auf das Online-Manual verwiesen)
* ps gibt für jeden angezeigten Prozeß eine separate Zeile aus; jede Zeile enthält verschiedene Spalten, deren Bedeutung kurz in der ersten Zeile in Form einer Spaltenüberschrift angegeben wird; interessant sind für uns meist nur folgende Spalten:
USER NKZ des Eigentümers des Prozesses
PID Prozeß-ID
START Startzeitpunkt des Prozesses
COMMAND ausgeführtes Kommando
* Beispiele für die Anwendung von ps:
o Anzeige aller Prozesse des aktuellen Nutzers (also desjenigen, der ps aufruft) im langen Format, d.h., hier werden im Gegensatz zu pstree auch lange Kommandos komplett angezeigt
ps guxww
konkretes Beispiel:
Nutzer hot ist per SSH am Rechner miller angemeldet und läßt sich dort die Liste der ihm gehörenden Prozesse anzeigen:
hot@miller 4 > ps guxww
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
hot 9741 1.8 0.3 2752 1612 pts/0 S 14:50 0:00 -tcsh
hot 9783 0.0 0.1 2324 696 pts/0 R 14:50 0:00 ps uxgww
o Anzeige aller Prozesse (also nicht nur des aktuellen Nutzers) im langen Format
ps aguxww
* Hinweis: zur leichteren Auswertung der teilweise sehr umfangreichen Ausgabe von ps kann man verschieden vorgehen, wie folgende Beispiele zeigen:
o die Ausgabe nach bestimmten Begriffen durchsuchen, z.B. nach dem Begriff netscape:
ps aguxww | fgrep netscape
somit kann man alle Prozesse ermitteln, in deren Kommandozeile die Zeichenfolge netscape vorkommt
o seitenweise Anzeige der Ausgabe durch more oder less:
ps aguxww | more
ps aguxww | less
diese Programme werden durch Eingabe von q beendet; das Vorblättern auf die nächste Seite erfolgt durch die Leertaste
o Ausgabe in eine Datei umlenken und nachfolgend mit einem Editor betrachten:
ps aguxww > /tmp/psliste
nedit /tmp/psliste
rm /tmp/psliste
* mit dem Werkzeug top kann man sich eine Liste der Prozesse anzeigen lassen, die aktuell die größte CPU-Last (also die Last auf dem Prozessor) verursachen
* diese Liste wird in gewissen Abständen (standardmäßig aller 5 Sekunden) automatisch aktualisiert, solange top läuft; dieses Werkzeug wird durch Eingabe von q beendet
* die Prozesse mit der größten Last stehen im Standardfall oben und können so leicht identifiziert werden, was besonders dann von Interesse ist, wenn das System sehr zäh und damit für den Nutzer störend arbeitet
* Beispiel:
hot@alfredo 12 > top
11:43am up 20 days, 11 min, 2 users, load average: 0.00, 0.00, 0.00
71 processes: 69 sleeping, 2 running, 0 zombie, 0 stopped
CPU states: 4.9% user, 1.5% system, 0.0% nice, 93.4% idle
Mem: 261664K av, 255432K used, 6232K free, 0K shrd, 37068K buff
Swap: 530136K av, 0K used, 530136K free 148784K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
1261 root 15 0 39772 38M 2148 R 0 5.3 15.1 39:22 X
20537 hot 8 0 876 876 668 R 0 0.5 0.3 0:00 top
16676 hot 2 0 15760 15M 7780 S 0 0.3 6.0 0:06 netscape-commun
9437 hot 1 0 4672 4672 3320 S 0 0.1 1.7 0:01 kpanel
1 root 0 0 472 472 400 S 0 0.0 0.1 0:06 init
2 root 0 0 0 0 0 SW 0 0.0 0.0 0:07 kflushd
3 root 0 0 0 0 0 SW 0 0.0 0.0 0:05 kupdate
4 root 0 0 0 0 0 SW 0 0.0 0.0 0:21 kswapd
5 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 keventd
* oberhalb der Prozeßliste finden sich verschiedene Angaben, u.a., wie lange das System seit dem letzten Neustart läuft, wie viele Nutzer angemeldet sind, welche Last das System hat, wie viele Prozesse gestartet sind, wie viele davon laufen bzw. schlafen sowie Informationen zur Speichernutzung (verfügbarer, freier und belegter Speicher)
* in der Prozeßliste von top wird jeder Prozeß durch eine Zeile repräsentiert, die verschiedene Angaben enthält, u.a. die PID, den Eigentümer (USER), die CPU-Last (%CPU), den Speicherbedarf (%MEM), die seit dem Start des Prozesses insgesamt von ihm verbrauchte CPU-Zeit (TIME) sowie das ausgeführte Kommando (COMMAND)