Linux 15.036 Themen, 107.107 Beiträge

kill..

ghartl1 / 6 Antworten / Baumansicht 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
TimmintoR 2°°4 ghartl1 „kill..“
Optionen

Was hast du denn genau vor? Als Alternative zu kill kannst du auch killall verwenden, das als Argument einen Prozessnamen akzeptiert, dann musst du nicht immer über ps erst die PID heraussuchen... Vielleicht funktioniert ein killall init, musst du mal ausprobieren.



Gruß

TimmintoR 2°°4

Linux.DOS.Windows - The Good.The Bad.The Ugly
bei Antwort benachrichtigen
the_mic TimmintoR 2°°4 „Was hast du denn genau vor? Als Alternative zu kill kannst du auch killall...“
Optionen

Oder auch:
kill $(pidof prozessname)
macht dasselbe wie killall, ist nur etwas elitärer geschrieben :-)

init lässt sich soweit ich weiss nicht abschiessen. Evtl muss man das mal mit kill -9 1 versuchen.

cat /dev/brain > /dev/null
bei Antwort benachrichtigen
ghartl1 the_mic „Oder auch: kill pidof prozessname macht dasselbe wie killall, ist nur etwas...“
Optionen

was will ich machen..
eigentlich nur nach einer änderung in /etc das system neu einlesen..
rc.inet1 restart ginge auch
aber init -1 1 tut doch das selbe....und ich brauch nicht immer nur ein bestimmtes script aufrufen....einfach das ganze system neu einlesen lassen mit einem kommando

grus günter

bei Antwort benachrichtigen
KarstenW ghartl1 „was will ich machen.. eigentlich nur nach einer änderung in /etc das system neu...“
Optionen

Wenn du den Runlevel wechseln willst oder die Konfigurations - Shellscripte neu starten wilst, dann würde ich schon init verwenden und nicht kill. kill beendet nur den jeweiligen Prozess. Dabei werden manchmal die geöffneten Dateien nicht richtig geschlossen und es kann zum Datenverlust kommen.
Manchmal ließt ein Prozess, vor allem Serveranwendungen, eine geänderte Konfigurationsdatei neu ein, wenn man ein HUP Signal an diesen Prozess sendet.
Bei einem Internetserver kann man ja nicht jedesmal den Rechner neu starten nur um ein geänderte Konfiguration neu einzulesen , also nicht so wie es bei Windows gemacht wird.
Du kannst aber auch oft einen Prozess , vor allem eine Serveranwendung , neu starten, wenn du an das jeweilige Shellscript einen restart Parameter übergibst.

Beispiel E-Mail Server Postfix:

Du änderst in der Konfigurationsdatei /etc/postfix/main.cf etwas und danach startest du Postfix nochmal neu:

/etc/init.d/postfix restart

(Ich weiß nicht wo slackware diese Shellscripte speichert)

Ich weiß jetzt nicht so genau ob es mit einem HUP Signal funktionieren würde. Die Programmierer müssen teilweise das entsprechende Signal abfangen und eine eigene Signalbehandlungsroutine programmieren (um eine Konfigurationsdatei neu einzulesen beispielsweise).











Debian GNU/Linux https://www.debian.org/index.de.html
bei Antwort benachrichtigen
ghartl1 KarstenW „Wenn du den Runlevel wechseln willst oder die Konfigurations - Shellscripte neu...“
Optionen

okay..danke mal für die tips..
werds mal daheim probieren

gruss günter

bei Antwort benachrichtigen