Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
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

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« Prozessbeobachter Informationen sammeln Offene Dateien »

Unterabschnitte
  • SIGHUP
  • Priorität ändern statt töten
  • Kurzfristiges Parken
  • Terminieren

Nicht immer mit Tötungsabsicht: kill

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

SIGHUP
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.

Priorität ändern statt töten

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

Kurzfristiges Parken

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

Terminieren
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.



« Prozessbeobachter | Informationen sammeln | Offene Dateien »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de