Linux 15.009 Themen, 106.803 Beiträge

kill..

ghartl1 / 6 Antworten / Flachansicht Nickles

hallo,
auf der kommandozeile kann man ja signale an processe und dämone schicken..

kann man nicht anstatt die pid mit ps herauszusuchen einfach ein

kill -1 1 als root machen?
so wird der init prozess neu eingelesen...
anstatt rc.inet1 restart.....ein kill -1 1 ...funktioniert das nicht? und wenn nicht warum?
also unter root gab es keine fehlermeldung bei mir..kann aber auch nicht sagen obs funktioniert hat...

gruss günter

bei Antwort benachrichtigen
KarstenW ghartl1 „kill..“
Optionen

Willst du den Rechner neu starten ?
Beim Herunterfahren des Rechners werden diverse Shellscripte aufgerufen ,die unter Anderem die Festplattenpartitionen unmounten und damit das Dateisystem syncronisieren und Daten die sich im Speicher befinden werden auf die Festplatte geschrieben.

Der Kill Befehl wird häufig genutzt um einen Prozess zu beenden, der durch Programmierfehler nicht mehr beendet werden kann.
Ich würde nicht unbedingt ein kill Signal an einen Prozess senden , nur um diesen Prozess zu beenden. Manchmal müssen diverse Aufräumarbeiten beim Beenden eines Programmes ausgeführt werden die beim Empfang eines Signal nicht mehr getan werden.
Wenn ein Prozess das Signal 15 (TERM 15 exit) bekommt, hat das Programm noch die Chance seine Dateien die es geöffnet hat zu schließen. Wenn man aber ein Signal 9 (KILL 9 exit this signal may not be blocked) an einen Prozess sendet, kann das Programm seine geöffneten Dateien nicht mehr ordentlich schließen und es kann zum Datenverlust kommen.

Dann kann man beispielsweise ein HUP Signal an einen Prozess senden, der daraufhin eine geänderte Konfigurationsdatei neu einließt.
Ich glaube das Programmierer die Möglichkeit haben das Standardverhalten eines Programmes beim Empfang eines Signals zu verändern. Man muß immer in der Dokumentation des jeweiligen Programmes nachschauen wie es sich beim Empfang eines bestimmten Signals verhält.

Ich verstehe die Frage nicht richtig. Was willst du mit kill machen ?

Die Shellscripte die sich in /etc/init.d (bei Debian ) befinden werden in den unterschiedlichen Runlevels gestartet.
Ich würde auch Serveranwendungen nicht unbedingt mit einem kill Signal beenden. In den jeweiligen Shellscripten die die Serveranwendung starten, werden beim Beenden auch Befehle ausgeführt die bestimmte Aufräumarbeiten erledigen.

rc.inet1 restart bedeutet das dem Shellscript rc.inet1 der Parameter restart übergeben wird.
Im Shellscript ist dann meist eine case Anweisung die diesen String restart auswertet und es werden dann die jeweiligen Befehle in diesem Shellscript abgearbeitet.
Das hat erstmal nichts mit dem kill Befehl zu tun.
Den kill Befehl nutzt man nur im Notfall, wenn sich beispielsweise ein Prozess nicht mehr beenden läßt.

PS: Um solche Shellscripte zu verstehen mußt du etwas Shellprogrammierung lernen. Wenn du da besser Bescheid weißt, brauchst du solche Fragen nicht mehr stellen ;-).

PPS: Ich habe die Vorgängerversion von diesem Buch über Unix Shellprogrammierung. Es ist relativ einfach geschrieben und reicht für einfache Shellscripte am Anfang aus:

"Shell-Programmierung für Unix und Linux. Grundlagen, Werkzeuge und praktische Skripte (Gebundene Ausgabe)
von Rainer Krienke (Autor)"

http://www.amazon.de/Shell-Programmierung-Grundlagen-Werkzeuge-praktische-Skripte/dp/3446407375/ref=sr_1_1?ie=UTF8&s=books&qid=1199986327&sr=8-1
















Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen