top   und ps    zurueck   


Punkt 1     Fragen     Experten     Links     Orginaltexte    


Allgemeine Beschreibung

Tipp: Top-Prozessliste in bunt





Normal präsentiert sich der Prozessmonitor top in schlichtem Schwarz-Weiß, doch wer SuSE Linux verwendet, bringt mit einem Trick Farbe in seine Prozessliste. Die bei Red Hat Linux mitgelieferte, ältere top-Version beherrscht die Farbspielereien noch nicht.





Starten Sie den Systemmonitor mit dem Befehl top und drücken Sie [Z], um in den Farbauswahldialog zu gelangen. Acht Farben (0-7) stehen zur Auswahl, um die vier Elemente Statusanzeige (S), Überschrift (H), Prozessliste (T) und Meldungen (M) einzufärben. Hinter Selected: target steht der Kennbuchstabe des gerade aktiven Elements und hinter color die ausgewählte Farbe. Um beispielsweise die Prozessliste einzufärben, geben Sie [S] ein, was nun hinter target erscheint. Tippen Sie nun die Nummer der gewünschten Farbe, etwa [2] für grün. Analog dazu legen Sie auch die Farben für die anderen Elemente fest. Anhand der Vorschau (Abbildung 2) kontrollieren Sie direkt an Ort und Stelle, ob die Farben passen.









Abb. 2: Versteckt: Das Farbmenü des Prozessmonitors top.





Am besten kommen die Farben zur Geltung, wenn Sie die KDE-Konsole mit schwarzem Hintergrund betreiben (Einstellungen / Farbschema / Weiß auf Schwarz). Mit [Enter] schließen Sie den Konfigurationsdialog und aktivieren die neuen Einstellungen. Speichern Sie sie danach mit [Umschalt-W], damit top zukünftig direkt in Ihren Lieblingsfarben startet. Wird es Ihnen doch einmal zu bunt, wechseln Sie mit [z] zwischen der klassischen Ansicht und der farblich aufgepeppten Variante hin und her.


Punkt 1

In dieser Anleitung möchte ich euch aufzeigen, wie man mit den von Linux mitgelieferten Hilfsmitteln die auf einem System laufenden Prozesse überwachen kann. Im wesentlichen werde ich euch dabei zwei Kommandos vorstellen. Das eine ist

top

und das Andere wird

ps

sein.

Dazu brauchen wir wie immer die Konsole, auch wenn das dem einen oder anderen Linuxeinsteiger zu bieder ist. Aber keine Angst, ich werde euch an die Hand nehmen und führen, so dass nichts passieren wird.

Als erstes stelle ich euch das Kommando ps vor. Damit erhalten wir einen überblick, über alle Prozesse auf unserem System. Danach werden wir uns mit dem Kommando top beschäftigen. Damit erhalten wir Angaben über Prozessoraktivität, welchen Status ein Prozess hat und weitere Informationen über diesen. Desweiteren erhalten wir eine Statistik über Speicherbelegung und CPU-Nutzung.

Also, zuerst einmal öffnen wir eine Konsole, entweder mit [strg] + [alt] + [F2] oder ein Pseudoterminal aus der Graphischenoberfläsche heraus. Wer erstere Variante wählt, muss sich zunächst noch mit seinem Loginnamen und zugehörigen Passwort anmelden. Man gelangt mit [strg] + [alt] + [F7] wieder zur Graphischenoberfläsche.

Wir starten mit dem Kommano ps. ps gibt uns - wie bereits erwähnt - einen überblick darüber, welche Prozesse bei uns laufen. Wir geben einfach mal folgendes Kommando ein:







tux@erde:~ ps







Wir erhalten eine tabellarische Ausgabe mit 4 Spalten. Die erste gibt die Prozessor ID wieder, die zweite Spalte das Standardausgabeterminal, die dritte Spalte gibt Auskunft über die Zeit der CPU-Nutzung des Prozesses und "last but not least" den Namen des Prozesses.

Da wir keine Option angegeben haben, erhalten wir als Ausgabe alle laufenden Prozesse, denen ein Standardausgabeterminal zugeordnet ist und die von dem User gestartet wurde, der ps aufgerufen hat. Es stehen uns eine Vielzahl von Optionen zur Verfügung, von denen ich einige hier vorstellen werde. Da ich weiß das nicht jeder an den zahlreichen Optionen interessiert ist, überlasse ich es dem Leser die folgende Aufzählung zu überfliegen, sich die für ihn interressanten Optionen anzuschauen um dann zur nächsten Passage überzugehen, wo ich eine häufig auftretende Anwendung aufzeige. Das ps Kommando ist ein wenig sonderbar, da es Optionen mit und ohne führenden Bindestrich zulässt, diese haben dann auch noch andere Bedeutungen. Ich stelle nun zunächst Optionen ohne Bindestrich vor, danach die mit Bindestrich. Ich möchte aber bereits an dieser Stelle darauf aufmerksam machen, das man alle Arten von Optionen miteinander mischen darf.

x Mit dieser Option können wir auch Prozesse anzeigen lassen, denen kein Standardausgabeterminal zugewiesen wurde.

T Mit dieser Option erhalten wir einen überblick, welche Prozesse auf unseren gerade aktiven Terminal laufen.

a Mit dieser Option werden alle Prozesse von allen Usern angezeigt, unabhängig vom Standardausgabeterminal



Verifiziert meine Angaben, in dem ihr einfach mal die Optionen testet.

Wir kommen nun zu den Optionen mit Bindestrich:

-e Mit dieser Option erhalten wir eine Ausgabe von allen Prozessen die auf unserem System laufen

-u Mit dieser Option erhalten wir alle Prozesse, die von einem angegeben User gestartet wurden. Dabei ist es möglich, sowohl den Usernamen als auch die UID (User Identification Number. Intern wird jedem User eine solche Nummer zugeordnet, über diese er dann identifieziert wird) anzugeben.



überpfrüft durch ausprobieren folgende Behauptung; die Kommandos:







tux@erde:~ ps -u root

tux@erde:~ ps -u 0







führen zur selben Ausgabe.

Das waren die aus meiner Sicht wichtigsten und interessantesten Optionen. Weitere findet ihr in der Manpage.

Manch einer wird sich gefragt haben, warum manchmal beim Standardausgabeterminal ein Fragezeichen steht. Dabei handelt es sich um sogenannte Dämonen, denen kein Standardausgabeterminal zu geordnet wird. Diese also folglich auch keine Bildschirmausgabe erzeugen können. Ein bekanntes Beispiel für einen der Zahlreichen Dämonen unter Linux ist der cron Dämon.

So, jetzt wollen wir mal gucken, wofür man ps so braucht.

Als erstes dient es natürlich zur Kontrolle, besonders dann wenn mehrere User an einem System eingeloggt sind. Aber auch für den "Otto-Normal-User" ist ps ganz praktisch. Man stelle sich vor, ein Programm hat sich aufgehangen und lässt sich nicht mehr beenden. Also sind wir gezwungen mit dem Kommando kill Gewalt anzuwenden. Aber leider benötigen wir die PID. Ich gehe jetzt mal davon aus, das bei mir das Programm licq sich nicht mehr beenden lässt. Um die PID herauszufinden (die sich bei jedem Start ändert, wie man sich leicht klar macht), gebe ich folgendes Kommando ein:







tux@erde:~ ps x | grep licq







ich erhalte folgende Ausgabe:

879 ? S 0:00 /usr/bin/licq

Damit weiß ich, das licq die PID 879 hat, somit kann ich mit







tux@erde:~ kill 879







das Programm beeenden.

Zur Erklärung: grep war schon einmal Gegenstand einer Anleitung. Der Querstrich leitet die Ausgabe von ps x an grep weiter, der alles wo licq drin vorkommt herausfiltert.

Ok, dann wollen wir uns nun mal dem Programm top zuwernden. Ich habe ja bereits erwähnt, das man mit top eine Möglichkeit hat, sich Prozessoraktivität anzuschauen.







tux@erde:~ top







Wer jetzt von der Bildschirmausgabe so geschockt ist, das er aufhören möchte, drücke auf [q]. Ansonsten, bringen euch folgende Erklärung überblick über die Ausgabe.

Dann mal auf ins Gewühl:

In der ersten Zeile stehen die Uhrzeit, wieviele User eingeloggt sind, sowie die durchschnittliche Ladezeiten von Prozessen. In der zweiten Zeile haben wir einen überblick, wieviele Prozesse auf unseren System laufen, wieviele davon im Zustand sleeping sind, wieviele Prozesse Zombieprozesse sind etc. Während die nächste Zeile Statstische Angaben zu der CPU-Auslastung macht, also wieviel Prozent der CPU-Belastung der User verursacht, wieviel Prozent die CPU im Zustand IDLE (IDLE = Leerlauf) verbringt. Die nächsten Zeilen machen Angaben zur Nutzung von Arbeitsspeicher und Swap. Bisher also alles selbsterklärend. Danach kommen endlich Angaben zu den Prozessen auf unserem System, ich habe hier nur einen einzelnen aufgeführt, ihr könnt bei euch ja mal gucken was bei euch so alles läuft - ich muss ja immer wieder lesen, das viele User gar nicht wissen welche Prozesse bei ihnen laufen und welche nicht.

Hier folgt nun eine Aufzählung, was die einzelnen Spalten Aussagen:

PID: Hier ist die processor identification number (PID) aufgelistet. Jeder Prozess erhält eine eindeutige Nummer, über diese er identifiziert werden kann. Man braucht sie, wenn man diesen Prozess in irgendeiner Weise manipulieren will.

USER: Diese Spalte gibt Aufschluss darüber, welcher User den Prozess gestartet hat.

PRI: Hier steht die Priorität des Prozesses. Unter linux hat man Möglichkeit Prozesse mit unterschiedlichen Prioritäten zu starten. Diese Priorität spielt natürlich beim Scheduling eine wichtige Rolle (schduling = Zuteilung von Prozessen an die CPU - diletantisch gesprochen)

NI: Gibt den nice wert an. Mit nice hat man die Möglichkeit, die Priorität von Prozessen zu beeinflussen, dabei haben kleinere Werte die größere Priorität.

SIZE: Hier können wir die größe des (Codes + des Stackes) in Kilobyte ablesen (alle Prozesse werden auf einen sogenannten Stack abgelegt, dieser wird manchmal auch als Stapelspeicher bezeichnet dort sind auch alle zum Prozess gehörenden Informationen hinterlegt).

RSS: Hier steht wieviel Speicher der Prozess reserviert hat.

SHARE: Hier können wir die Größe des gemeinsam genutzen Speichers ablesen.

STAT: Hier steht der Status eines Prozesses. Folgende Zustände gibt es:



S: Dies bedeutet der Prozess beansprucht gerade nicht die CPU (befindet sich also in der "ready to run queue"), dabei steht S für sleeping

R: Ist das Pendant zu S, der Prozess beansprucht also gerade die CPU. Dabei steht R für running

D: Dies bedeutet, das der Prozess unwideruflich schlafen gelegt wurde.

T: Der Prozess ist gestoppt t steht für terminated.

Z: Der Prozess ist ein Zombieprozess. Um zu erklären was ein Zombie Prozess ist, muss ich entweder sehr weit ausholen und den Rahmen dieser Anleitung sprengen, oder Wissen aus der Prozessverwaltung vorraussetzen. Deswegen entfällt die Erklärung an dieser Stelle.

Jeder Zustand kann noch folgende Literale enthalten: < für negative nice Werte, N für positive nice Werte und W für ausgelagerte Prozesse.



%CPU: Diese Spalte gibt an, inwiefern der Prozess seit dem letzten Refresh die CPU beansprucht hat. Dabei handelt es sich um eine Prozentangabe, also wievel Prozent der Prozess seit dem letztem refresh der GesamtCPU-Zeit beansprucht hat (eine weniger umständliche formulierung will mir nicht gelingen)

TIME: Hier steht die Gesamtzeit der CPU-Nutzung, seit dem der Prozess gestartet wurde.

COMMND Hier steht der Kommandozeilen Name des Prozesses.



Wenn ihr das Kommando top eingeben habt und dann mal ein wenig beobachtet, werdet ihr festellen, das ein ständiger Refresh stattfindet. Die Refreshrate könnt ihr beeinflussen. Es stehen euch einige Kommandos zur Verfügung: drückt einfach mal [s] ihr werdet nun aufgefordert, den delay wert (refresh-Rate) ein zugeben. Wir wählen experimentell den Wert 0.5 und bestätigen mit [enter]. Wie ihr seht, haben wir die Refresh-Rate drastisch verkürzt. Ein weiteres Kommando das ihr während der Ausführung eingeben könnt, ist C. Damit erreichen wir, das nicht nur die Zeit des jeweiligen Prozesses angezeigt wird, sondern auch die des Child-Prozesses. Beobachtet mal die Spaltenüberschrift wenn ihr das Kommando C eingebt... (Ein wiederholtes eingeben von C bringt euch wieder in den vorherigen Modus)Es gibt auch noch das Kommando c (man achte auf Groß- und Kleinschreibung). Hiermit könnt ihr sehen, wie der Prozess auf der Kommandozeile aufgerufen wurde. Dies waren Kommandos, die uns während der Ausführung von top zur Verfügung stehen. Wir können top aber auch einige Optionen beim Aufruf mitgeben. wir beenden top mit [q]. Nun rufen wir top folgendermaßen auf:







tux@erde:~ top -i







Damit werden alle Zombieprozese und IDLE-Prozesse ausgeblendet.

Ihr könnt auch die Refresh-Rate gleich beim Aufruf festelegen:







tux@erde:~ top -d 0.5







Man hat auch die Möglichkeit, nur einen einzelnen Prozess zu beobachten, dazu brauchen wir aber die PID des Prozesses. Wir rufen top mit







tux@erde:~ top -p PID







auf. Dabei muss PID durch die Prozesser ID ersetzt werden.

Wir können auch Verzögerungen beim Refresh verhindern, gebt mal folgendes Kommando ein:







tux@erde:~ top -q







Selbstverständlich können wir beim Aufruf auch mehrere Optionen angeben, wir geben folgendes Kommando ein:







tux@erde:~ top -i -d 0.5







So, ich hoffe ich konne einn wenig Licht ins Dunkle bringen. Bei Rückfragen oder Anmerkungen steht euch das Forum zur Verfügung.

Vielen Dank an Mollinero für diese Ausführungen



Hier eine kurze Einführung zu den Kommandos ps und top.

1. ps

ps informiert uns über den momentanen Zustand von laufenden Prozessen. Es erzeugt dazu eine eine übersicht der aktuell laufenden Prozesse. Dabei können eine grosse Anzahl von Optionen an ps übergeben werden. Ausgabe von ps

PID TTY TIME CMD

2606 pts/6 00:00:00 bash

2619 pts/6 00:00:00 ps

2620 pts/6 00:00:00 tee

Ausgabe von ps -f

UID PID PPID C STIME TTY TIME CMD

alle 2696 2695 0 14:19 pts/6 00:00:00 /bin/bash

alle 2721 2696 0 14:21 pts/6 00:00:00 ps -f

Aufschluss über alle verfügbaren Optionen zu ps liefert ps --help bzw. man ps Bei der Eingabe von Optionen muss man darauf achten, dass anders als bei der üblichen Eingabe von Optionen mit vorangestelltem "Minus" auch Optionen vorhanden sind, die ohne vorangestelltes "Minus" eingegeben werden.

Wozu braucht man nun das Kommando ps?

Linux ist ein Multitaskingsystem. Es laufen also meistens mehr als ein Programm. Welche sagt uns ps. Der übersicht halber zeigt uns ps ohne Option nur die Prozesse, die dem Benutzer gehören und die eine Verbindung zu einem Terminal haben. Will man alle laufenden Prozesse angezeigt bekommen,übergibt man ps z.B. die Option -A oder ax. Nützlich ist ps wenn der Rechner mal wieder zu langsam ist oder ein Programm "hängt". Nehmen wir mal an Xine hängt und es tut sich nichts mehr und das Fenster lässt sich auch nicht mehr schliessen (gibt es unter Linux auch). Dann kann man nach Eingabe von ps -A folgendes sehen (Ausschnitt)

2604 ? 00:00:24 kdeinit

2624 ? 00:00:00 kdeinit

2694 ? 00:00:03 kdeinit

2695 ? 00:00:06 kdeinit

2696 pts/6 00:00:00 bash

2760 ? 00:00:01 xine

Xine hat die PID (Prozess ID) 2760. Um Xine nun zu beenden, gibt man nun das Kommando kill mit der zu Xine gehörenden PID, in diesem Fall 2760 -also: kill 2760- und siehe da Xine ist verschwunden. Manchmal gibt es zu einem Programm mehrere Prozesse. Dann lässt sich das ganze mit: killall xine beenden.

2. top

Im Gegensatz zu ps, welches eine Momentaufnahme des Systems liefert, zeigt uns das Kommando top eine kontinuierliche Ausgabe der Ressourcenausnutzung unseres Systems an. Zwischen ps und top gibt es gewisse ähnlichkeiten. Das Kommando top ist viel umfangreicher. Es zeigt uns eine Statistik zum Sytem an. Z.B. Anzahl der Benutzer, Systemlast, CPU Auslastung, Infos zum Speicher und dem Kommando ps ähnliche Informationen zu Prozessen. Top liefert also so lange Informationen bis man das Programm beendet. Weiterhin lässt sich top interaktiv steuern. So kann man bei laufendem Programm top Prozesse killen. Nach Eingabe von "k" fragt top nach der PID des zu beendenden Prozesses. Auch die aktualisierungsintervalle lassen sich steuern. Zu den Optionen liefert wie immer --help oder man top umfangreiche Hilfe.

Wegen der umfangreichen Ausgaben von top, ist es wie geschaffen, um in einem eigenen Terminal mitzulaufen. Dadurch kann man sehr schön sehen, welche Programme wieviel Last erzeugen und wieviel Speicher sie belegen.

So, viel Spass beim Linux kennen lernen

mof


Experten




Fragen



Links



Orginaltexte