A. Willemer Wie werde ich UNIX-Guru
| | I ANWENDUNG |
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.
|
II ADMINISTRATION |
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel
|
III NETZWERK |
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls
|
IV DAS X-WINDOW SYSTEM |
Die grafische Oberfläche von UNIX einrichten und nutzen
|
V PROGRAMMIERUNG VON SHELLSKRIPTEN |
Automatisieren von Tasks durch Shell-Skripte.
|
VI PERL |
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk
|
VII PROGRAMMIERWERKZEUGE |
C-Compiler, Analyse-Tools, CVS, yacc, diff
|
VIII UNIX-SYSTEMAUFRUFE |
UNIX-Befehle in eigenen Programmen nutzen
|
IX LITERATUR |
Weiterführende Literatur zu UNIX und LINUX
|
| |
Das Kommando kill sendet Signale an einen Prozess. Wie der Name schon
sagt, führt dies meist zum Dahinscheiden des Prozesses. Prozesse können aber
viele Signale abfangen und verarbeiten. Dadurch ist eine Steuerung von außen
möglich, was gerade
für Hintergrundprozesse von Bedeutung ist. Auf diese Weise ist ein Booten
zum erneuten Einlesen der Konfiguration unter UNIX nicht erforderlich.
Damit ein Programm auf Signale reagiert, muss eine explizite Behandlung der
Signale durch
das Programm erfolgen (siehe S. prgsignal).
Die Signale sind durchnummeriert, wenn auch nicht auf allen Systemen unbedingt
gleich, und sie haben Namen. Beides kann als Parameter für kill , mit
einem Minuszeichen gekennzeichnet, zur Spezifikation verwendet werden.
Tabelle zeigt die meist verwendeten Signale und deren Nummer,
sofern sie auf allen Systemen eindeutig ist.
[Signale]L|C|L
Signal & Nr. & Bedeutung
SIGHUP & 1 & Sitzungsende. Signal an Dämonen, ihre Parameter-Datei neu lesen
SIGINT & 2 & Interrupt-Taste (Delete-Taste oder ctrl-C)
SIGKILL & 9 & Sofortiger Abschuss, kann vom Programm nicht abgefangen werden
SIGTERM & 15 & Aufforderung an den Prozess, sich regulär zu beenden.
SIGSTOP & & Hält den Prozess an, ohne ihn zu beenden.
SIGCONT & & Führt einen gestoppten Prozess fort
Ursprünglich wurde das Signal SIGHUP versandt, wenn das Terminal ausgeschaltet
wurde, auf dem eine Anwendung gestartet worden war. Auch in den Hintergrund
gestellte Prozesse empfangen das Signal, wenn der Anwender, der sie gestartet
hat, sich abmeldet. Will man dieses Verhalten unterbinden, muss dem Kommando
der Befehl nohup vorangestellt werden. Das Signal kann zwar vom
Programm abgefangen werden. Programme, die das Signal nicht explizit bearbeiten,
werden beendet.
Das Signal SIGHUP hat seine wichtigste Anwendung darin, dass die meisten Dämonen
auf ein kill -1 ihre Konfiguration wieder neu lesen und sich
entsprechend
neu initialisieren. Aber nicht alle Hintergrundprozesse reagieren auf
kill -1 . So stirbt beispielsweise der lpd , wenn man ihn in
der Hoffnung,
er würde dann die /etc/printcap lesen, mit kill -1 anschießt.
In diesem Fall
ist das aber auch kein Drama, da man nach Änderungen der printcap
tatsächlich
den lpd beenden und neu starten kann.
Der Fall, dass ein Administrator den Befehl kill tatsächlich zum
Terminieren des Prozesses benutzt, ist tatsächlich eher selten. Ein Prozess,
der von einem Anwender gestartet wurde, kann vom Administrator nicht einfach
beendet werden.
Immerhin kann es sein, dass durch den Abschuss wichtige Daten verloren gehen.
Erst wenn der Prozess durch extensiven CPU-Zeitverbrauch auffällt,
wird man versuchen, etwas zu tun.
Der erste Versuch, einen solchen Amok laufenden Prozess zu besänftigen, wird
darin bestehen, dessen Priorität mit renice herabzusetzen.
Dadurch stört er immerhin nicht mehr andere Benutzer. Um den Prozess mit der
PID 987 um 5 Level freundlicher zu gestalten, gibt man das Kommando:
renice +5 987
Hat man den Verdacht, dass dieser Prozess Schaden anrichtet oder ist
renice nicht erfolgreich genug, kann man den Prozess mit dem Signal
SIGSTOP anhalten und
hat später die Möglichkeit, ihn mit SIGCONT wieder fortzusetzen. Gleichzeitig sollte man den Anwender
verständigen, dass sein Prozess angehalten wurde, aber wieder aktivierbar ist.
kill -SIGSTOP 987
...
kill -SIGCONT 987
Erst wenn diese Möglichkeiten nicht mehr bestehen oder wenn Sicherheit darüber
besteht, was der Prozess tut, oder falls Gefahr in Verzug ist, wird man den
Prozess
beenden. Um dies zu tun, verwendet man zunächst SIGTERM. Dies ist auch die
Grundeinstellung von kill , wenn man keinen Parameter angibt.
Das Signal
SIGTERM wird von den meisten UNIX-Programmen abgefangen und führt dazu, dass
der Prozess seine Daten sichert und geregelt endet. Beim
Herunterfahren der Maschine bekommt jedes noch laufende Programm ein SIGTERM
zugesandt. Dann hat das Programm fünf Sekunden Zeit, die Daten zu sichern.
Anschließend kommt das SIGKILL, das auch dem störrigsten Prozess
die Lampe ausbläst.
| |
Ihre Meinung? |
|
|
|
|
|
Shopping |
|
Versandkostenfrei bestellen in Deutschland, Österreich und der Schweiz Info
|
|
|
|
|
|
|