IT-Academy Logo
Sign Up Login Help
Home - Betriebssysteme - Unix - Anwendungssoftware - Das Kommando init, runlevel und startup scripts



Das Kommando init, runlevel und startup scripts

Die Befehle init, runlevel und startup scripts (sysv) werden erklaert


Autor: Franz Schaefer (mond)
Datum: 23-01-2002, 20:14:59
Referenzen: man inittab
man init
man telinit
Schwierigkeit: Fortgeschrittene
Ansichten: 5484x
Rating: 4 (1x bewertet)

Hinweis:

Für den hier dargestellte Inhalt ist nicht der Betreiber der Plattform, sondern der jeweilige Autor verantwortlich.
Falls Sie Missbrauch vermuten, bitten wir Sie, uns unter missbrauch@it-academy.cc zu kontaktieren.

[Druckansicht] [Als E-Mail senden] [Kommentar verfassen]



| special deluxe |

Übersicht

heute nochmals zurueck zum booten. nachdem der kernel fertig ist mit
seiner initialierung startet er das programm /sbin/init (sofern man nicht
mit dem init= parameter etwas anderes angegeben hat).

init list das file /etc/inittab in dem steht was beim booten gemacht
werden soll. init organisiert den bootvorgang mit sogenannten "runlevel".
runlevel gibt ist entweder S oder eine ziffer von 0 bis 6.

S steht fuer "singel user mode". runlevel 2 oder 3 verwendet man
typischerweise fuer den normalbetrieb. 6 wird i.a. fuer einen shutdown
verwendet.

ruft man den befeh

runlevel

ohne parameter auf zeigt er den momentan und den vorherigen runlevel an
(ein frisch gebootetes system hat als vorherigen runlevel "N")

fuer jeden runlevel werden verschiedene scripts ausgefuehrt die bestimmte
sachen starten. startup script werden heute von den meisten distributionen
im (sysv) stil gestaltet. dazu legt man fuer jedes service dass man auf
der maschine laufen lassen will ein file an dass man mit dem paramter start
oder stop aufrufen kann. die files liegen meist unterhalb von /etc/init.d/
(auf manchen systemen auch /etc/rc.d/init.d/ oder /sbin/init.d/ o.ae.)

fuer jeden runlevel hat man dann ein directory in dem man symlinks auf die
scripts setzt. diese symlinks muessen per konvention Sxx oder Kxx beginnen
. S steht fuer die script die gestartet werden wenn der runlevel betreten
wird. K fuer die script die gestop werden wenn der runlevel verlassen
wird. xx ist eine zahl mit der man die reihenfolge der ausfuehrung der
scripts festlegt.

diese scripts finden sich z.b. unter /etc/rc2.d/ oder /etc/rc.d/rc2.d/
o.ae. fuer den runlevel 2. anlog dazu /etc/rc3.d usw..

die symlinks koennten z.b. so aussen.

S10sysklogd -> ../init.d/sysklogd
S14ppp -> ../init.d/ppp
usw..

das heisst in diesem runlevel wird zuerst sysklogd gestartet wird und dann
ppp. usw..

will man eigene startup scripts machen so gibt es dazu meist ein script
namens "skeleton" dass als vorlage dienen kann.

im /etc/inittab ist dann nur noch ein script namens z.b: /etc/init.d/rc
(kann von distribution zu distribution unterschiedlich heissen) dass genau
das starten und stoppen der durch symlinks festgelegten scripts
durchfuehrt.

mit dem befehl "telinit" kann man dem init prozess mitteilen dass man den
runlevel wechseln will.

telinit 3

wuerde in den runlevel 3 wechseln.

eine besonderheit ist:

telinit Q

das besagt dass init das file /etc/inittab neu lesen und auswerten soll.

zusaetzlich zu den beim eintritt in einen runlevel zu startenden scripts
gibt es im /etc/inittab auch eintraege die besagten was beim druecken von
control-alt-del passieren soll und eintraege von programmen die in einem
bestimmten runlevel immer am laufen gehalten werden (init wacht ueber
diese programme und startet sie neu falls diese sich beenden). das sind
z.b. "getty" prozesse die das einlogen auf den virtuellen consolen
erlauben. man kann aber hier aber auch andere programme eintragen.

T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100

wuerde besagen dass ein getty auf einer seriellen leitung (/dev/ttyS1 )
mit eine baudrate von 9600 gestartet werden soll wenn man sich in den
runlevels 2 oder 3 befindet. das respawn besagt dass init das getty
programm neu starten soll wenn es sich beendet. (beendet sich das programm
zu oft in kurzer zeit wird es allerdings fuer 5 minuten ausgesetzt.. )

traegt man also so eine zeile ein so muss man diese mit

telinit Q

aktivieren (damit init das /etc/inittab ) neu liest.

EXERCISES:

* schau dir deine /etc/inittab an

* in welchem runlevel ist dein system gerade?

* finde heraus wo sich auf deinem system die startup scripts befinden.
sind diese im sysv format so dass sie mit start und stop als parameter
aufgerufen werden muessen?
wo sind die symlinks fuer die einzelnen runlevel?

* mach ein eines start scripts namens mytest dass z.b. mittels echo eine
/ausgabe auf dev/tty9 macht. (am besten das skeleton script als vorlage
verwenden.). teste das scipt in dem du es zuerst haendisch aufrufst und
trage dann einen symlink fuer einen runlevel ein bei dem es auferufen werden
soll.

* wo muesste man es eintragen wenn man die control-alt-del kombination
nicht zum rebooten sondern fuer etwas anders verwenden will?


_______________________________________________
CD ist ein service von SILVER SERVER
der inhalt unterliegt der GFDL
_______________________________________________



[back to top]



Userdaten
User nicht eingeloggt

Gesamtranking
Werbung
Datenbankstand
Autoren:04511
Artikel:00815
Glossar:04116
News:13565
Userbeiträge:16552
Queueeinträge:06248
News Umfrage
Ihre Anforderungen an ein Online-Zeiterfassungs-Produkt?
Mobile Nutzung möglich (Ipone, Android)
Externe API Schnittstelle/Plugins dritter
Zeiterfassung meiner Mitarbeiter
Exportieren in CSV/XLS
Siehe Kommentar



[Results] | [Archiv] Votes: 1158
Comments: 0