Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

CompTia Linux+ LX0-103 (Teil 3) GNU- und Unix-Befehle

Signale an Prozesse senden

Testen Sie unsere 2019 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Prozesse können mit sogenannten Signalen verwaltet werden. Was genau dabei passiert und wie Sie Signale an Prozesse senden, erklärt Ihnen dieser Film in aller Ausführlichkeit.
11:05

Transkript

Prozesse können mit Signalen verwaltet werden. Wie das genau gemacht wird, erfahren Sie gleich jetzt. Wie kann ich nun einen Prozess oder ein Programm stoppen oder anhalten? Dazu schauen wir uns zuerst die man pages an, im Sektor 7, zum Signal. Und wir erhalten hier eine Übersicht über Signale, die wir einsetzen können. Ein wenig weiter unten in dieser man page-Übersicht erhalten wir eine Tabelle mit verschiedenen Signalen, die wir einem Prozess zusenden können. Wir sehen zum Beispiel den Wert 1, SIGHUP, Verbindung am steuernden Terminal beendet oder Der steuernde Prozess wurde beendet, also aufgehängt. Wir haben das Signal Nummer 9, SIGKILL, das ist das Abbruchsignal. Oder wir haben das Signal 15, SIGTERM, Beendigungssignal, bedeutet also, wir terminieren den Prozess. 1, 9 und 15 sind die meisteingesetzten Signale, um einen Prozess zu beenden. Die Nummer 9 sollten Sie wirklich nur dann einsetzen, wenn alle anderen Signale nicht mehr funktionieren. Denn mit diesem Signal wird der Prozess wirklich unschön beendet. Also richtig gekillt, wenn man es so sagen möchte. Nun schauen wir uns einmal ein wenig um, indem wir Prozesse starten, Programme ausführen und dann mit diesen PIDs arbeiten, um Signale zu diesen PIDs zu senden. Zuerst einmal verwende ich den Befehl sleep. Mit einem Wert. Ich setze den Befehl in den Hintergrund. Dann habe ich nun die Möglichkeit, diesen Prozess wieder zu beenden. Ich habe die Process-ID, 20435, und nun verwende ich das Kommando kill. Mit kill kann ich einen Prozess beenden. Es wird allerdings vielfach falsch interpretiert, dass ich mit kill einen Prozess kille. Nein. Mit kill sende ich ein Signal zum Prozess. Wenn ich kill einsetze, und die Prozess-ID eingebe, 20435, dann wird dieser Prozess beendet. Und Sie sehen, er wurde auch beendet. Ich habe nochmals die Enter-Taste gedrückt, um das Resultat zu sehen. Nun haben wir gesehen, dass dieser Prozess, sleep 7777, beendet wurde. Wenn ich keine Option zum Befehl kill mitgebe, wird immer das Signal 15 zugestellt. Ich wiederhole den Befehl sleep nochmals. Ich habe eine Prozess-ID, 20440. Ich verwende wiederum kill -15 auf die PID 20440. Enter-Taste, nochmals die Enter-Taste, und wir sehen das Resulta. Der Befehl wurde beendet. Ich verwende nochmals den Befehl sleep. Wiederum setze ich den Befehl in den Hintergrund. Diesmal habe ich die PID 20442. Ich verwende kill -1 auf die 20442. Ich drücke die Enter-Taste und dann nochmal die Enter-Taste, um das Resultat anzuschauen. Sie sehen, in diesem Fall wurde das Signal 1 gesendet und die Bestätigung aufgelegt. Der Prozess wurde also aufgelegt. Nun verwende ich noch einmal sleep, Befehl 7777, Wieder in den Hintergrund. Eine neue PID, 20446. kill -9 Und dann die Prozess-ID 20446. Enter-Taste und nochmals die Enter-Taste und Sie sehen, da haben wir das Resultat getötet. Also das ist wirklich die brachiale Art und Weise, einen Prozess zu beenden. Wie bereits erwähnt, verwenden Sie kill -9 wirklich nur dann, wenn die anderen Möglichkeiten scheitern. Ein weiterer Befehl, den ich einsetzen kann, um Prozesse zu beenden, ist killall. Schauen wir uns die man pages zu killall an. Wir sehen, wir können einen Prozess anhand seines Namens beenden, das steht in der Beschreibung. Ich verlasse die man pages mit der Taste Q wieder und erzeuge ein paar Prozesse. Wiederum mit dem Befehl sleep und dann zum Beispiel 4444. Das Programm kommt in den Hintergrund. Dann der gleiche Befehl nochmals mit 5555. Nun suchen wir einmal nach diesen beiden Befehlen. ps -eaf Dann lenke ich das Resultat in grep um, suche nach sleep. Wir sehen, wir haben diese beiden Prozesse. 20467 und 20468. Nun kann ich mit killall und dann der richtige Name – Ich brauche den kompletten Namen des Programms, damit ich killall einsetzen kann. Das würde so nicht funktionieren. Sie sehen: Kein Prozess gefunden. Ich muss also den eindeutigen Namen verwenden. In der Tat, mit killall sleep wurden beide Prozesse beendet. Nun denken Sie vielleicht: "Oh, das ist aber gefährlich! Wenn ich killall einsetze und dann einen Prozess beende, könnte es auch sein, dass ich den Prozess eines anderen Benutzers beende!" Nein, das ist nicht ganz der Fall. Schauen wir uns das gleich an, indem wir ein zweites Terminal öffnen. Ich verwende hier wieder einen sleep-Befehl. Dann zum Beispiel 8888. Diesen Befehl in den Hintergrund. Schauen wir uns die Details dazu an. ps -eaf Ich leite das Resultat wieder um in grep und suche nach sleep. Wir sehen nun, wir haben einen Prozess, welcher als tom gestartet wurde. Das ist soweit wunderbar. Nun melde ich mich als root an. Ich bestimme das Passwort. Ich setze wiederum sleep ein. Dann mit einem anderen Wert, zum Beispiel 5454. Auch diesen Befehl wieder in den Hintergrund. Schauen wir uns das Resultat zu diesem Befehl an. ps -eaf Wiederum umleiten in grep und sleep. Nun haben wir zwei sleep-Prozesse, einmal mit dem Benutzer root und einmal mit dem Benutzer tom. Nun navigiere ich wieder zum anderen Terminal. Ich verwende killall und sleep. Sie sehen, die Operation ist nicht erlaubt auf sleep 20495. 20495, aha. Das ist der Prozess vom Benutzer root, der diesen Befehl ausgeführt hat. Wir haben also als normaler Benutzer keine Möglichkeit, einen Prozess eines anderen Benutzers zu beenden. Das funktioniert nicht. Benutzer können keine Prozesse eines anderen Benutzers beenden, das kann nur root. root hat die Möglichkeit, sämtliche Prozesse von allen Benutzern zu beenden. Wir haben ein weiteres Tool, das wir einsetzen können, das ist pkill. Mit pkill können Prozesse gestoppt werden, die nicht den kompletten Namen aufweisen. Das schauen wir uns gleich mit dieser Konsole an. Wir haben noch einen sleep-Prozess, der im Hintergrund am Laufen ist. Das ist der Prozess von root. Schauen wir uns pkill an. Ich möchte den Prozess sleep beenden, der die PID 20495 hat. Ich kann nun folgendes einsetzen: pkill -sle Sie sehen, ich schreibe das Kommando nicht komplett aus. Ich drücke die Enter-Taste und dieser Befehl wurde beendet. Achtung, es ist ganz, ganz wichtig, dass Sie immer genau wissen, was Sie machen. Das kann sehr gefährlich sein. Was ist, wenn ein anderer Befehl ebenfalls mit sle beginnt Dann würden Sie auch diesen Befehl entsprechend beenden. Dazu können wir ein weiteres Tool einsetzen, um zu verifizieren, dass es sich tatsächlich nur um sleep-Befehle handelt. Dazu navigiere ich wieder in das andere Terminal und starte wieder ein paar sleep-Prozesse, damit wir das genau verifizieren können. 6666 in den Hintergrund. Dann einen weiteren sleep-Befehl. Und noch einen, ebenfalls wieder in den Hintergrund. So haben wir nun drei Prozesse, die im Hintergrund am Arbeiten sind. Schauen wir uns die Prozesse an. ps -eaf Wiederum das Resultat umleiten in grep ... sleep. Wunderbar. Wir haben also drei Prozesse, die im Hintergrund am Arbeiten sind. Nun können wir zuerst mit pgrep verifizieren, welche Prozesse im Einsatz sind. man pgrep Wir erhalten die Informationen zu pgrep. Sie können sich das selber anschauen, die entsprechenden man pages und die Informationen herausholen. Mit der Taste Q verlasse ich die man pages wieder. Nun suche ich mit pgrep nach sle. Das ist wunderbar. Wir erhalten drei Prozess-IDs. Allerdings wissen wir nicht, welche Prozesse zu dieser PID gehören. Ich verwende nochmals pgrep. Dieses Mal -a sle. Aha! Wunderbar. Wir sehen die PID und wir sehen den entsprechenden Prozess beziehungsweise das Programm, was dazu ausgeführt wird. Wir können nun also in aller Ruhe pkill einsetzen, um die entsprechenden Prozesse beim Namen zu beenden. pkill sle und die Enter-Taste Wunderbar. Wir haben keine anderen Prozesse beendet, die mit sle beginnen. Da wir vorher mit pgrep die Validierung gemacht haben, dass es sich tatsächlich nur um drei sleep-Befehle handelt. In diesem Video habe ich Ihnen gezeigt, wie Sie Signale an verschiedene Prozesse übermitteln können.

CompTia Linux+ LX0-103 (Teil 3) GNU- und Unix-Befehle

Lernen Sie den Umgang mit der Kommandozeile, Dateien und Prozessen kennen und bereiten Sie sich auf die Comptia Linux+-Zertifizierungsprüfung LX0-103 vor.

3 Std. 32 min (40 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!