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 - falls nicht vorhanden kann man es nachinstallieren (z.B. mit synaptic). 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 | grep pts |
(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 (mit grep) 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 | grep pts 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 | grep pts 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 | grep pts 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 | grep pts 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 (oder auch "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 -e | 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 -e | 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 -e | 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 (oder auch "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+F2. 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/hoher-systemressourcen-und-speicherverbrauch 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 € 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 €. 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. |