zur Übersicht

nächste Seite


Prozesse

Damit auf dem Computer irgendetwas passiert müssen Prozesse laufen - das fängt schon mit dem Start des Computers an und hört mit der Anzeige von Datei-Verzeichnissen auf dem Bildschirm natürlich nicht auf. Diese Prozesse sind zunächst im Hintergrund - man sieht nur wie sich der Browser öffnet und man Internetseiten aufrufen kann, oder wie das e-mail-Programm sich öffnet und man mails empfangen und versenden kann, oder wie man Videos und Musik abspielen kann, usw.
Nun soll versucht werden diese Prozesse etwas greifbarer zu machen.
Dazu wird das Terminal benutzt.
Es gibt innerhalb des Terminals einen Taschenrechner. Aufruf im Terminal:

bc

(im Terminal eingeben und Eingabetaste drücken)
Bei dem blinkenden Cursor kann man die Berechnung eingeben 
(8*9-3*7)/3 
Nach Drücken der Eingabetaste erscheint 17 
Allerdings gibt es keine Kommastellen und 19/5 ergibt die Ganzzahl 3 - alles hinter dem Komma wird weggelassen. Es scheint nur ein einfaches Programm zu sein aber es lebt natürlich durch einen Prozess - und den kann man sich anschauen. Zum Beenden des Taschenrechners gibt man im Terminal ein 
quit
und drückt die Eingabetaste.
Aber zunächst soll der Taschenrechner nicht beendet werden. Es wird ein zweites Terminalfenster geöffnet und neben das erste Fenster platziert. 
Dazu kann man auf das Programmsymbol

mit dem Mausrad klicken oder einen Rechtsklick machen und "Neues Fenster" auswählen.
Im zweiten Terminalfenster gibt man ein:

ps -u

(im 2. Terminal eingeben und Eingabetaste drücken)
Dieser Befehl listet nur die Prozesse auf die jetzt in den Terminals laufen - die vielen anderen Prozesse auf dem Computer werden nicht angezeigt - dies erlaubt es den Überblick zu wahren.

Am Anfang jeder Zeile gibt es die PID-Nummer (die natürlich bei Ihnen anders ist) die den Prozess eindeutig bestimmt und am Ende steht das Programm, das den Prozess ausgelöst hat. Es gibt 2 Terminal-Prozesse 
PID 2343 ... bash 
PID 2350 ... bash 
Es gibt den Prozess des Taschenrechners 
PID 2349 bc 
und den Prozess der Auflistung
PID 2355 ps -u 

Die PID-Nummer wird bei jedem Prozess-Start wieder neu vergeben. Es ist vergleichbar mit einem Parkhaus. Wird ein Prozess gestartet (das Auto fährt in das Parkhaus) so bekommt dieser Prozess eine PID-Nummer (Parkschein) - mit Beenden des Prozesses (Auto verläßt das Parkhaus) verschwindet die PID-Nummer (Parkschein wird entwertet) - wird der gleiche Prozess wieder gestartet (gleiches Auto fährt wieder in das Parkhaus) bekommt dieser Prozess eine neue PID-Nummer (neuer Parkschein).

Gibt man jetzt im 2. Terminal bei dem blinkenden Cursor ein

kill -STOP 2349

(im 2. Terminal Ihre PID-Nummer verwenden und Eingabetaste drücken)
wird der Taschenrechner Prozess gestoppt (nicht beendet). Das erste Terminal reagiert von selbst (da es diesen Prozess am Laufen hält) und zeigt die entsprechende Ausgabe an: 
das Rechenprogramm wurde angehalten. 

Startet man jetzt im 1. Terminal erneut den Taschenrechner mit bc und gibt danach im 2. Terminal erneut ps -u ein so sieht man daß es zwei Prozesse für den Taschenrechner gibt.

Beendet man im 1. Terminal den Taschenrechner mit quit und gibt im 2. Terminal wieder ps -u ein so sieht man daß der zuletzt erzeugte Taschenrechner-Prozeß beendet wurde aber der gestoppte Prozeß immer noch im System vorhanden ist. Gibt man jetzt im 1. Terminal ein

kill 2349

(im 1. Terminal Ihre PID-Nummer verwenden und Eingabetaste drücken)
so wird dem zuerst erzeugten Taschenrechner-Prozeß ein Signal zum weichen Beenden gegeben: es wird dem Programm die Möglichkeit geboten Daten abzuspeichern - dies aber kann der Taschenrechner-Prozeß nicht und bleibt somit weiterhin am Leben. 
Überprüfen kann man dies im 2. Terminal durch erneute Eingabe von 
ps -u 
Natürlich hätte man auch kill PID-Nummer im 2. Terminal eingeben können und ps -u im 1. Terminal aber wegen der Übersichtlichkeit soll im 2. Terminal die Prozess-Anzeige laufen.

Gibt man jetzt im 1. Terminal den harten Beenden-Befehl 
kill -9
ein (dieser harte Beenden-Befehl darf nicht ignoriert werden)

kill -9 2349

(im 1. Terminal Ihre PID-Nummer verwenden und Eingabetaste drücken)
so kann man im 2. Terminal nach erneuter Eingabe von 
ps -u
sehen daß auch der zuerst erzeugte Taschenrechner-Prozeß verschwunden ist. Mit Schließen des 1. Terminals wären auch alle Taschenrechner-Prozesse beendet worden denn das 1. Terminal hat die Taschenrechner-Prozesse erzeugt und am Leben gehalten.

Prozesse die systembedingt laufen (z.B. root zu Beginn der Zeile) können als normaler Benutzer nicht beeinflußt werden (dazu muß man sich als Administrator anmelden und man sollte wirklich genau wissen was man tut). Man kann das mit dem Taschenrechner simulieren. Wenn man diesen im 1. Terminal unter su startet:

Zunächst muß man sich im 1. Terminal mit dem Root-Passwort anmelden, also su eintippen und Eingabetaste drücken, dann Passwort eingeben und Eingabetaste drücken, dann bc eintippen und Eingabetaste drücken.

Im 2. Terminal bleibt man als normaler Benutzer. Die bisherige Eingabe von 
ps -u  macht keine root-Prozesse sichtbar. Um die Ausgabe einer Vielzahl von Prozessen zu vermeiden kann man gezielt nach dem Prozess bc suchen

ps -ef | grep "bc"

(im 2. Terminal eingeben und Eingabetaste drücken)
Man sieht daß der Taschenrechner-Prozeß jetzt unter root läuft. Sagen wir er hat die PID 1834 (natürlich ist das bei Ihnen anders). 
Wenn man jetzt im 2. Terminal eingibt (
Ihre PID-Nummer verwenden)
kill 1834 
und die Eingabetaste drückt, so erscheint die Meldung 
bash: kill: (1834) - Die Operation ist nicht erlaubt,
Diese Info erscheint auch bei Eingabe von kill -9 1834 im 2. Terminal

Systemprozesse sind also geschützt was zum Sicherheitsprinzip von Linux gehört.

In der Spalte TTY kann man sehen wer den Prozess ausgelöst hat. In der Zeile mit bc steht pts/o (dies kann bei Ihnen anders lauten), dies ist somit der Name für das 1. Terminal (bash), und damit ist 2343 die PID-Nummer des 1. Terminals. Jetzt kann man im 2. Terminal 
kill -9 2343
eingeben (Ihre PID-Nummer verwenden und Eingabetaste drücken). Damit wird das 1. Terminal beendet und damit auch die Anmeldung als root. Gibt man jetzt im verbliebenen 2. Terminal das (in diesem Beispiel) die PID-Nummer 2350 hat den Befehl
kill -9 2350
ein (Ihre PID-Nummer verwenden und Eingabetaste drücken) so wird auch das 2. Terminal beendet.
 
Durch Eingabe von kill (mit Optionen) werden keine Dateien gelöscht - es werden dem System Signale gegeben die die Handhabung von Prozessen mit der jeweiligen PID-Nummer betreffen. Alle anderen Prozesse bleiben davon unberührt. Beendet man aber mit kill den Prozess einer Text-Datei oder eines Tabellen-Dokument (oder ...) in dem es nicht abgespeicherte Eingaben gibt (Textergänzungen oder Rechenoperationen), so werden diese Eingaben mit größter Wahrscheinlichkeit verloren sein.

Jetzt kann man den Browser firefox starten und ein neues Terminal-Fenster.
Um die Ausgabe einer Vielzahl von Prozessen im Terminal-Fenster zu vermeiden kann man gezielt nach dem Prozess firefox suchen

ps -ef | grep "firefox"

(im Terminal eingeben und Eingabetaste drücken)
Sagen wir firefox hat die PID 1578 (natürlich haben Sie eine andere PID-Nummer). Wenn man jetzt im Terminal eingibt 

kill -stop 1578

(im Terminal Ihre PID-Nummer verwenden und Eingabetaste drücken) 
so wird der Prozeß firefox angehalten (nicht beendet) - dies hat zur Folge daß das Fenster von firefox "eingefroren" ist, man kann nirgends mehr klicken. Diesen Zustand kann man wieder aufheben durch Eingabe von 

kill -cont 1578

(im Terminal Ihre PID-Nummer verwenden und Eingabetaste drücken) 
So wird der Prozeß firefox wieder aufgenommen und weitergeführt und möglicherweise auch Eingaben durchgeführt deren Klicken im eingefrorenen Zustand keine Reaktion gezeigt haben.

Den Prozess firefox kann man beenden mit 

kill -9 1578

(im Terminal Ihre PID-Nummer verwenden und Eingabetaste drücken)

Besonders schön kann man dieses Verhalten auch beim Abspielen einer Video-Datei sehen. Startet man z.B. mit VLC eine Video-Datei so kann man im Terminal-Fenster gezielt nach dem Prozess vlc suchen

ps -ef | grep "vlc"

(im Terminal eingeben und Eingabetaste drücken)
Sagen wir vlc hat die PID 2990 (natürlich haben Sie eine andere PID-Nummer). Wenn man jetzt im Terminal eingibt 

kill -stop 2990

(im Terminal Ihre PID-Nummer verwenden und Eingabetaste drücken) 
so wird der Prozeß vlc angehalten (nicht beendet) - dies hat zur Folge daß das Video stehenbleibt (Pause macht). Diesen Zustand kann man wieder aufheben durch Eingabe von 

kill -cont 2990

(im Terminal Ihre PID-Nummer verwenden und Eingabetaste drücken) 
So wird der Prozeß vlc wieder aufgenommen und das Video wird weiter abgespielt. Den Prozess vlc kann man beenden mit 

kill -9 2990

(im Terminal Ihre PID-Nummer verwenden und Eingabetaste drücken)

Informationen zu ps kann man erhalten durch

man ps

(im Terminal eingeben und Eingabetaste drücken)
Man navigiert mit den Pfeiltasten und beendet die Info-Ausgabe durch Drücken der Taste Q

Nun ist man aber vielleicht gespannt darauf zu sehen welche Prozesse auf dem Rechner insgesamt laufen. Dazu bietet sich das Programm top an

top

(im Terminal eingeben und Eingabetaste drücken)

Der Vorteil von top ist daß die Prozesse nach CPU-Auslastung sortiert werden. Durch Drücken der Taste "Pfeil nach unten" werden die Prozesse angezeigt die weiter unten stehen - der Platz im Fenster ist eben beschränkt. Die Info-Ausgabe wird durch Drücken der Taste Q beendet. Vielleicht bemerkt man daß es für einige Programme (z.B. auch firefox) mehrere PID-Nummern gibt. Dies liegt daran daß ein Prozeß weitere Prozesse nach sich ziehen kann. Eine gute Übersicht über diese Situation erhält man durch

pstree -p

(im Terminal eingeben und Eingabetaste drücken)

Es kann vorkommen daß der Browser abstürzt und sich von selbst beendet - und daß ein Neustart des Browsers nicht möglich ist. Dann sucht man nach einem weiterhin laufenden Prozess dieses Browsers z.B.
ps -ef | grep "firefox"
oder 
top
und verwendet
kill -9 PID-Nummer

Mit diesen Kenntnissen sollte man für den Ernstfall gerüstet sein - der Computer "hängt fest" der Bildschirm ist "eingefroren". Wenn dieser Zustand eingetreten ist so liegt es oft nur an einem Prozess der sich "aufgehängt hat" - vorzugsweise der Browser. Daher wird man versuchen ein Terminal zu starten: Man drückt die Windows-Taste und wählt das Terminal aus den Favoriten-Programmen. 
Oder (ganz ohne Maus) man drückt gleichzeitig die Taste Alt und F2 - dadurch öffnet sich ein Eingabefenster. 

und hier tippt man ein 
gnome-terminal
und drückt die Eingabetaste.
Wenn es gelingt ein Terminal-Fenster zu öffnen so hat man schon gewonnen. 
Der erste Aufruf im Terminal könnte
top
sein. Damit sieht man welcher Prozess die meiste CPU-Auslastung bewirkt. Mit der entsprechenden PID-Nummer gibt man ein
kill -stop PID-Nummer
Damit wird dieser Prozess stillgelegt und die CPU-Belastung weggenommen. Dies kann schon genügen um auf dem Computer wieder arbeiten zu können und man sollte sich zunächst den Programmen zuwenden die nicht abgespeicherte Daten haben - Text-Dateien, Tabellen-Kalkulationen... und diese abspeichern und die Programme normal beenden. Durch das Beenden dieser Programme wird wieder CPU-Auslastung verringert und man kann versuchen durch
kill -cont PID-Nummer
den angehaltenen Prozess wiederzubeleben. Gelingt dies nicht so kann man mit
kill -9 PID-Nummer
diesen Prozess endgültig beenden.

Man kann über das Terminal auch den Computer herunterfahren.
Zunächst muß man sich mit dem Root-Passwort anmelden, also su eintippen und Eingabetaste drücken, dann Passwort eingeben und Eingabetaste drücken, dann eintippen

shutdown -P now

Im Terminal eingeben und Eingabetaste drücken. 

Wenn es nicht gelingt ein normales Terminal-Fenster zu öffnen, so bleiben noch die virtuellen Terminals. Eines davon kann man aufrufen z.B. mit
Strg+Alt+F4
Zum Anmelden benutzt man
root   und das Administrator-Passwort 
Mit Eintippen von
reboot
und Drücken der Eingabetaste kann man den Computer neu starten
wobei alle nicht gespeicherten Daten verloren sind. 
Will man ein virtuelles Terminal nur zum Anschauen aufrufen dann UNBEDINGT DARAN DENKEN WIE MAN WIEDER ZUM DESKTOP ZURÜCKKOMMT und zwar mit der Tastenkombination Strg+Alt+F7. Vorher kann man durch Eintippen von exit und Drücken der Eingabetaste die Anmeldung beenden.

Ohne ein virtuelles Terminal aufzurufen hat man noch die Notfall-Tastenkombination zum Beenden und Neustarten des Computers wobei alle nicht gespeicherten Daten verloren sind.Diese Notfall-Tastenkombination fährt den Computer kontrolliert herunter. Dazu drückt man gleichzeitig die Tasten 
Alt und Druck
und läßt diese Tasten gedrückt. Anschließend drückt man hintereinander
Taste R , Taste E , Taste I , Taste S , Taste U , Taste B
Man muß sich schon ein wenig verrenken oder eine Hilfsperson herbeirufen. 
Die jeweiligen Tasten geben dem System bestimmte Anweisungen damit beim Herunterfahren alles gut geht und der Neustart gelingt.

Falls es öfters vorkommt, daß Firefox eine hohe CPU-Last erzeugt so kann man auf folgender Internetseite Lösungsmöglichkeiten finden(besonders gut der Abschnitt "Störende Inhalte ausblenden"):
https://support.mozilla.org/de/kb/firefox-erzeugt-hohe-cpu-last-problemloesung



Vielleicht noch eine Anmerkung zu dem Taschenrechner-Programm bc. Es läßt sich damit sehr viel mehr anfangen als der erste Eindruck vermuten läßt. 

Berechne die in dem Verkaufspreis von 152,75 EURO enthaltene 19% Mehrwertsteuer: 
Ein Trick ist den Verkaufspreis mit 1000 zu multiplizieren. Dann in bc eingeben 152750*19/119
24388 
Das Ergebnis teilt man durch 1000 und rundet kaufmännisch 
was ergibt 24,39 EURO.

Es gibt aber im Programm bc zusätzliche Eingabemöglichkeiten (flags). 
-l versetzt den Taschenrechner in den mathematischen Modus wobei automatisch 20 Stellen hinter dem Komma angezeigt werden (Das Komma bei Zahlen muß durch einen Punkt . geschrieben werden). Es stehen mathematische Funktionen zur Verfügung und z.B. wichtige Konstanten 
4*a(1)  steht für
  also 3.14159265358979323844
e(1)     steht für e also 2.71828182845904523536
Der flag -q verhindert das Anzeigen des Copyright-Hinweises, man kann direkt mit den Recheneingaben beginnen. 
Also kann man den Taschenrechner aufrufen durch

bc -ql

(im Terminal eingeben und Eingabetaste drücken)

Beispiel: Berechne den Kreisumfang wenn der Kreis 0,33 m Durchmesser hat.
Man gibt ein (Umfang=Durchmesser x

.33*4*a(1)
1.03672557568463176868

Das Ergebnis ist also 1,03672557568463176868 m.

zur Übersicht

nächste Seite