Beschreibung: Prüfungskandidaten sollten in der Lage sein, Prozesse zu verwalten. Dieses Lernziel beinhaltet das Ausführen von Prozessen in Vorder- und Hintergrund, das Bringen eines Jobs vom Hintergrund in den Vordergrund und umgekehrt, das Starten eines Prozesses, der ohne Verbindung zu einem Terminal laufen soll, und die Mitteilung an ein Programm, daß es nach Abmelden weiterlaufen soll. Ebenfalls enthalten ist die Überwachung aktiver Prozesse, die Auswahl und das Sortieren von Prozessen für die Ausgabe, das Senden von Signalen an Prozesse, das Terminieren von Prozessen sowie das Erkennen und Terminieren von X-Anwendungen, die nach dem Schließen der X-Sitzung nicht ordnungsgemäß beendet wurden.
Die wichtigsten Dateien, Bezeichnungen und Anwendungen:
Damit die Eingabeaufforderung sofort wieder zur Verfügung steht, kann ein Prozess im Hintergrund gestartet werden, indem der Kommandozeile einfach ein Ampersand (&) angehängt wird.
Dadurch kehrt die Shell sofort wieder zur Eingabeaufforderung zurück, der gestartete Prozess läuft jetzt im Hintergrund.
Diese Ausführungsart eignet sich jedoch nur für Prozesse, die nichts auf die Standard-Ausgabe schreiben (oder deren Ausgaben umgeleitet werden), weil auch die Hintergrundausführung die Ausgaben auf der Standard-Ausgabe belässt. Ein Hintergrundprozeß, der permanent auf den Bildschirm Meldungen ausgibt, ist wohl eher störend.
Häufig wird diese Fähigkeit benutzt, um in der graphischen Oberfläche aus einem XTerm heraus graphische Programme aufzurufen. Durch die Hintergrundausführung kehrt die Shell sofort zur Eingabeaufforderung zurück, das XTerm ist also nicht solange gesperrt, solange das graphische Programm läuft.
Zusammengefasst kann gesagt werden, daß jede Shell beliebig viele Hintergrundjobs und maximal einen Vordergrundprozess besitzen kann. Mit den oben genannten Funktionen ist es möglich jede beliebige Kombination herzustellen. Die Befehle fg, bg und jobs sind eingebaute Shellfunktionen. Wichtig ist die Unterscheidung zwischen JobID und ProzessID. Die JobID bezieht sich auf die jeweilige Shell, die ProzessID ist von überall her gültig und im ganzen System eindeutig.
In manchen Fällen kann es jedoch auch gewünscht sein, daß ein Prozeß auch nach dem Abmelden weiterläuft. Diese Möglichkeit bietet uns das Programm nohup. Es startet einen Befehl, und ignoriert dann das Hangup-Signal (SIGHUP) für diesen Prozeß. Dieses Signal wird gewöhnlich beim Abmelden an alle Prozesse gesendet, um ihnen mitzuteilen, daß die Sitzung jetzt geschlossen wird. (Hangup steht für Auflegen, also das Beenden einer Modemverbindung)
Die Aufrufform von nohup ist einfach, außer den Kommandozeilenparametern --help und --version existieren keine weiteren Schalter. Dem Programmnamen wird einfach der Name des zu startenden Befehls mitgegeben:
nohup BefehlDadurch wird der angegebene Befehl ausgeführt, und bleibt auch nach dem Abmelden weiter aktiv im Speicher. Die Ausgaben des gestarteten Prozesses werden nicht mehr auf die Standard-Ausgabe geschrieben (weil die ja nach dem Abmelden gar nicht mehr zur Verfügung steht), sondern an die Datei nohup.out angehängt. Der Prozeß hat also seine Verbindung zum Terminal verloren, er kann nur noch über seine ProzeßID angesprochen werden.
Das Programm ps bietet einen Schnappschuß der gerade laufenden Prozesse. Es zeigt verschiedene Daten dieser Prozesse an, das wichtigste ist dabei die ProzessID (PID) des jeweiligen Prozesses. Ohne Parameter aufgerufen zeigt ps nur die eigenen Prozesse. Häufige Kombinationen von Parametern sind
Im Gegensatz zu ps zeigt top eine ständig aktualisierte Liste der Prozesse mit der höchsten CPU-Auslastung. Top ist ein interaktives Programm, das auch Modifikationen der Prozesse zulässt. top läuft solange, bis es mit q beendet wird.
Die wichtigste Aufgabe von Signalen ist es, Prozesse zu beenden. Das Programm zum Versenden von Signalen heißt daher folgerichtig kill. Es gibt aber auch viele andere Aufgaben für Signale, so kann etwa ein Prozess durch ein Signal dazu aufgefordert werden, siene Konfigurationsdatei neu einzulesen. Damit kann ein laufender Prozess verändert werden, ohne ihn neu starten zu müssen.
Das Programm kill erwartet eine oder mehrere ProzessIDs als Parameter, die die Prozesse beschreiben, denen das Signal geschickt werden soll. Wenn kein spezielles Signal angegeben wird, so schickt kill den Prozessen das Signal Nr. 15 (SIGTERM), das einen Prozess auffordert, sich selbst zu beenden. Es gibt ein Signal, das immer "tödlich" ist, es hat die Nummer 9 (SIGKILL).
Die Syntax von kill ist einfach:
kill [-Signal] PID [PID ...]Ein Parameter, mit führendem Bindestrich wird als Signal interpretiert, alle anderen als PIDs. Signale können entweder in ihrer numerischen Form oder über ihern Namen angegeben werden - also z.B. entweder -9 oder -KILL.
Eine Liste aller unterstützten Signale bekommen Sie mit kill -l