[linux-l] init.d

Steffen Dettmer steffen at dett.de
Di Jan 16 21:12:08 CET 2007


Dann muss ich meinen Senf auch noch dazu geben.

* Matthias Kranz wrote on Tue, Jan 16, 2007 at 10:33 +0100:
> On Tue, 2007-01-16 at 00:47 +0100, Olaf Radicke wrote: 
> > Ich muss gestehen, das ich mich in den 7 Jahren den ich mich mit Linux 
> > beschäftige noch nie mit init.d/ auseinander gesetzt habe. Meine Frage: 
> > Wie funktioniert das?
> > 
> > Ein Link zu einer knappen Zusammenfassung würde mir schon fast reichen.
> 
> Also ... am Anfang schuf Gott Himmel und Erde ... okay, sparen wir uns
> das.

Och, jetzt haste kurz vor der Schuldfrage aufgehört! Also, wie war das
mit dem Apfel? :)

> Im Laufe des Boot-Prozesses überträgt der Kernel die Kontrolle an den
> init-Prozess, der wiederum im weiteren Verlauf der Vater bzw.
> Großvater aller kommenden Prozesse wird.
> 
> Welches konkrete Skript als nächstes ausgeführt wird, hängt von der
> Distribution ab und wird über die "/etc/inittab" gesteuert. 

(Was strenggenommen vom verwendeten init abhängt ;))

> Auf meinem Fedora/RHEL wird als erstes "/etc/rc.d/rc.sysinit"
> ausgeführt. In der "inittab" wird auch der Runlevel definiert, in den
> das System gestartet werden soll (-> initdefault). Für jeden Runlevel
> gibt es nun ein passendes Verzeichnis unter "/etc/rc.d/rc<LEVEL>/".
> Alle dort befindlichen Einträge, die mit einem 'S' beginnen, werden
> gestartet, alle mit einem 'K' beginnenden gestoppt. Die Zahl nach dem
> 'S' oder 'K' ermöglicht eine Reihenfolge - je niedriger die Zahl desto
> früher wird die Datei aufgerufen.  

Früher gabs mal ein shell-Script als /bin/init, dass machte beim Start
ziemlich genau:

 for SCRIPT in /etc/rc.d/rc${runlevel}.d/S* ; do
	$SCRIPT start
 done

Zum Üben müsste man vielleicht mal wieder so ein Shell-Linux rauskramen
und aktualisieren. Ist bestimmt interessant, wie einfach bestimmte
Sachen gehen.

> Um nicht ein und dasselbe Skript in mehreren Runlevels vorzuhalten,
> werden symbolische Links verwendet, die wiederum auf das eigentliche
> Skript in /etc/init.d/ verweisen. Die Skripte dort sollten alle mit
> bestimmten Argumenten umgehen können [1]. Die wichtigsten sind
> natürlich "start" und "stop", aber auch "restart" und "reload" werden
> häufig verwendet.  Das Management der Skripte und Einträge in den
> Runlevels kann man inzwischen auf vielen Distributionen mit
> "chkconfig" und anderen Tools erledigen.

Huch, chkconfig wird ja doch genannt. Na ja, hätte ich das gleich
gesehen, hätte ich diese Mail nicht geschrieben :-)

Gut, dann nenne ich mal noch "insserv".

Sowas braucht man, damit Packages beim Installieren einfach ihre
Services hinzufügen können (ohne in rc-File .confs rum-sed'n zu müssen
;) SCNR).

> > Ich lasse aus Bequemlichkeit von init.d meine Postgres-DB hochfahren. 
> > Beider Standartkonfiguration für init.d (der PG-DB) fehlt aber der 
> > Parameter "-i". ich hatte mich durch das shell-Skript gewühlt und 
> > einfach auf Verdacht an dieser und jener stelle ein "-i" 
> > reingeschrieben bis es funktioniert hat.
> 
> Liebe Kinder zu Hause: Nicht nachmachen!

Genau, denn wenn ein "rm" vorn steht, nimmt man nicht "-i" sondern
"-rf".      (Und wer das glaubt, sollte sofort sämtliche root-Passwörter
             vergessen.)

oki,

Steffen

-- 
Dieses Schreiben wurde maschinell erstellt,
es trägt daher weder Unterschrift noch Siegel.





Mehr Informationen über die Mailingliste linux-l