24.02.2013 Aufrufe

Einf ¨uhrung in UNIX - CIS

Einf ¨uhrung in UNIX - CIS

Einf ¨uhrung in UNIX - CIS

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

40 2 <strong>UNIX</strong><br />

2.3.6.4 Signale (kill, trap)<br />

E<strong>in</strong> Prozess kann niemals von außen beendet werden außer durch Abschalten<br />

der Stromversorgung. Er verkehrt mit se<strong>in</strong>er Umwelt e<strong>in</strong>zig über rund dreißig<br />

Signale. Ihre Bedeutung ist im Anhang I <strong>UNIX</strong>-Signale auf Seite 312<br />

nachzulesen oder im Handbuch unter signal(2). E<strong>in</strong> Prozess reagiert <strong>in</strong><br />

dreierlei Weise auf e<strong>in</strong> Signal:<br />

• er beendet sich (Default 12 ) oder<br />

• ignoriert das Signal oder<br />

• verzweigt zu e<strong>in</strong>em anderen Prozess.<br />

Mit dem Kommando kill(1) (unglücklich gewählter Name) wird e<strong>in</strong> Signal<br />

an e<strong>in</strong>en Prozess gesendet. Jedes der Kommandos<br />

kill -s 15 4711<br />

kill -s SIGTERM 4711<br />

schickt das Signal Nr. 15 (SIGTERM) an den Prozess Nr. 4711 und fordert<br />

ihn damit höflich auf, se<strong>in</strong>e Arbeit zu beenden und aufzuräumen. Das Signal<br />

Nr. 9 (SIGKILL) führt zum sofortigen Selbstmord des jeweiligen Prozesses.<br />

Mit der Prozess-ID 0 erreicht man alle Prozesse der Sitzung. Die E<strong>in</strong>gabe<br />

kill -s 9 0<br />

ist also e<strong>in</strong>e etwas brutale Art, sich abzumelden. Mit kill -l erhält man<br />

e<strong>in</strong>e Übersicht über die Signale mit Nummern und Namen, jedoch ohne Erklärungen.<br />

Wie e<strong>in</strong> Programm bzw. Shellscript (was das ist, folgt <strong>in</strong> Abschnitt 2.5.2<br />

Shellscripts auf Seite 88) auf e<strong>in</strong> Signal reagiert, legt man <strong>in</strong> Shellscripts<br />

mit dem <strong>in</strong>ternen Shell-Kommando trap und <strong>in</strong> Programmen mit dem Systemaufruf<br />

signal(2) fest. E<strong>in</strong>ige wichtige Signale wie Nr. 9 können nicht<br />

ignoriert oder umfunktioniert werden. Das trap-Kommando hat die Form<br />

trap "Kommandoliste" Signalnummer<br />

Empfängt die das Script ausführende Shell das Signal mit der jeweiligen<br />

Nummer, wird die Kommandoliste ausgeführt. Das exit-Kommando<br />

der Shell wird als Signal Nr. 0 angesehen, so daß man mit<br />

trap "echo Arrivederci; exit" 0<br />

im File /etc/profile die Sitzungsshell zu e<strong>in</strong>em freundlichen Abschied<br />

veranlassen kann. Das nackte trap-Kommando zeigt die gesetzten Traps an.<br />

E<strong>in</strong> Beispiel für den Gebrauch von Signalen <strong>in</strong> e<strong>in</strong>em Shellscript namens<br />

traptest:<br />

12 Für viele Größen im System s<strong>in</strong>d Werte vorgegeben, die solange gelten, wie man<br />

nichts anderes e<strong>in</strong>gibt. Auch <strong>in</strong> Anwenderprogrammen werden solche Vorgaben verwendet.<br />

Sie heißen Defaultwerte, wörtlich Werte, die für e<strong>in</strong>e fehlende E<strong>in</strong>gabe e<strong>in</strong>spr<strong>in</strong>gen.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!