1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533
|
.\" This is free documentation; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" The GNU General Public License's references to "object code"
.\" and "executables" are to be interpreted as the output of any
.\" document formatting or typesetting system, including
.\" intermediate and printed output.
.\"
.\" This manual is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
.\" GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, write to the Free
.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139,
.\" USA.
.\"
.\" Translated into german by Martin Okrslar <okrslar@cip.informatik.uni-muenchen.de>
.\" Modified Fri Jan 12 01:15:29 2001 by Martin Schulze <joey@infodrom.north.de>
.\"
.TH INIT 8 "11 February 2000" "" "Dienstprogramme zur Systemverwaltung"
.SH BEZEICHNUNG
init, telinit \- Initialisierung der Kontrolle ber Prozesse und Runlevel
.SH SYNTAX
.B /sbin/init
.RB [ -t
.IR sec ]
.RB [ 0123456SsQq ]
.B /sbin/telinit
.RB [ -t
.IR sec ]
.RB [ 0123456SsQq ]
.SH BESCHREIBUNG
.SS init
.B Init
ist der Vater aller Prozesse. Seine Hauptaufgabe besteht darin, Prozesse nach
einem Skript in der Datei
.I /etc/inittab
zu erzeugen (siehe auch
.BR inittab (5)).
Diese Datei hat normalerweise bestimmte Eintrge, die
\fBinit\fP dazu veranlassen auf jeder Leitung
.BR getty s
zu erzeugen, auf
der sich ein Benutzer einloggen kann. Er kontrolliert
auch alle autonomen Prozesse, die von einem bestimmten System bentigt
werden.
.SH RUNLEVEL
Ein Runlevel
ist ein Softwarezustand des Systems, der es nur
einer bestimmten Gruppe von Prozessen erlaubt ausgefhrt zu werden.
Die Prozesse, die von
.B init
fr jeden dieser Runlevel erzeugt werden, sind in der Datei
.I /etc/inittab
definiert.
.B Init
kann sich in einem von acht Runlevel befinden,
.B 0\-6
und
.B S
oder
.BR s .
.B Init
wechselt den Runlevel, wenn ein priviligierter Benutzer das Programm
.B /sbin/telinit
startet, das
.B init
bestimmte Signale sendet, die ihm sagen, in welchen Runleveles
wechseln soll.
Die Runlevel
.BR 0 ", " 1 " und " 6
sind reserviert. Der Runlevel
.B 0
wird dazu verwendet, das System anzuhalten, der Runlevel
.B 6
iwr dafr benutzt, das System neuzusatarten, und der Runlevel
.B 1
wird dafr verwendet, das System in den Single-User-Modus
herunterzufahren. Der Runlevel
.B S
wird normalerweise nicht direkt angesprungen, sondern dient nur als
Zwischenstufe fr die Skripte, die ausgefhrt werden, wenn in den
Runlevel
.B 1
bergegangen wird. Weitere Informationen darber finden Sie in den
Handbuchseiten zu
.BR shutdown (8)
und
.BR inittab (5).
Die Runlevel
.B 7-9
sind ebenfalls gltig, jedoch nicht wirklich dokumentiert. Das liegt
daran, da die "traditionellen" UNIX\-Varianten diese nicht benutzen.
Manche werden sich vielleicht auch wundern, da es zwischen den
Runlevel
.B S
und
.B s
keinen ersichtlichen Unterschied gibt. Tatschlich sind beide
Optionen lediglich ein Alias fr ein und den selben Runlevel.
.SH SYSTEMSTART
Wenn
.B init
im letzten Schritt des Bootprozesses aufgerufen wird,
sucht er nach der Datei
.I /etc/inittab
und sieht nach, ob es dort einen
.BR initdefault \-Eintrag
gibt (siehe
.BR inittab (5)).
.B initdefault
bestimmt den
.RI Anfangs\- runlevel
des Systems.
Falls es dort keine derartige Eintragung gibt, oder gar keine
.IR inittab \-Datei
existiert, so mu an der Systemkonsole der
.I runlevel
eingegeben werden.
Die
.I runlevel
.B S
oder
.B s
bringen das System in den
Single-user Modus, und bentigen keine
.IR /etc/inittab \-Datei.
Im Single-user-Modus wird auf
.I /dev/console
.B /sbin/sulogin
aufgerufen.
Wenn das System in den Single-user Modus bergeht, liest
.B init
die
.BR ioctl (2)\-Zustnde
der Konsole in
.IR /etc/ioctl.save .
Existiert
diese Datei nicht, dann initialisiert
.B init
die Leitung mit 9600 BAUD und mit
.BR CLOCAL \-Einstellungen.
Wenn
.B init
den Single-User-Modus verlt, schreibt es die
.IR ioctl \-Einstellungen
in diese Datei, so da diese Eintrge bei der nchsten Single-User-Sitzung
wiederverwendet werden knnen.
Wenn
.B init
das erste mal in einen Multi-User-Modus eintritt, fhrt
er die
.BR boot \-
und
.BR bootwait \-Eintrge
der Datei
.I /etc/inittab
aus, die es erlauben,
da die Dateisysteme gemountet werden knnen, bevor sich ein Benutzer
einloggen kann. Danach werden alle die
.I runlevel
betreffenden
Eintrge ausgefhrt.
Immer wenn
init
einen neuen Proze startet, schaut das Programm erst nach,
ob die Datei
.I /etc/initscript
existiert. Wenn es sie gibt, benutzt
.B init
das Skript dieser Datei um den Proze zu starten.
Jedesmal, wenn ein Kindproze terminiert, hlt
.B init
diese Tatsache und den Grund, weshalb der Kindproze gestorben ist, in den
Dateien
.I /var/run/utmp
und
.I /var/log/wtmp
fest, falls diese Dateien existieren.
.SH RUNLEVEL-NDERUNGEN
Sobald alle vorgesehenen Prozesse erzeugt worden sind, wartet
.B init
darauf, da ein Kindproze stirbt, auf ein Stromausfallsignal
oder auf eine Anweisung von
.BR /sbin/telinit ,
in welchen
.I runlevel
er wechseln soll. Wenn eine der drei oben genannten Bedingungen
erfllt ist, untersucht
.B init
nochmals die
.IR /etc/inittab \-Datei,
da dieser
Datei jederzeit neue Eintrge hinzugefgt werden knnen. Man kann den
schlafenden
.BR init \-Proze
auch mit den Kommandos
.B Q
oder
.B q
aufwecken, was ihn dazu veranlat, nochmals die
.IR /etc/inittab \-Datei
zu examinieren.
Wenn
.B init
sich nicht im Single-User Modus befindet, und ein
Stromausfallsignal (SIGPWR) empfngt, liest es die Datei
.IR /etc/powerstatus .
Anschlieend wird ein Befehl anhand des Inhalts der Datei gestartet:
.IP F(AIL)
Strom fllt aus, die USV versorgt den Rechner mit Strom. Die
.BR powerwait "\- und " powerfail \-Eintrge
werden ausgefhrt.
.IP O(K)
Strom wurde wiederhergestellt, es werden die
.BR powerokwait \-Eintrge
ausgefhrt.
.IP L(OW)
Strom wird knapp und die USV geht auf dem Zahnfleisch. Die
.BR powerfailnow \-Eintrge
werden ausgefhrt.
.PP
Wenn
.I /etc/powerstatus
nicht existiert oder etwas anderes enthlt als die Buchstaben
.BR F ", " O " oder " L,
wird
.B init
sich so verhalten als htte es den Buchstaben
.B F
gelesen.
Die Verwendung von SIGPWR und
.I /etc/powerstatus
werden nicht empfohlen. Wenn etwas mit
.B init
interagieren mchte, sollte der Kontrollkanal
.I /dev/initctl
verwendet werden - siehe Quellcode des sysvinit-Pakets fr mehr
Dokumentation darber.
Wenn
.B init
angewiesen wird den
.I runlevel
zu wechseln, wird das Warnsignal
.B SIGTERM
an alle Prozesse geschickt, die nicht in der Datei
.I /etc/inittab
fr den neuen
.I runlevel
vorgesehen sind.
.B Init
wartet dann 5 Sekunden bevor er diese Prozesse mit dem kill-Signal
.B SIGKILL
gewaltsam terminiert. Achtung:
.B init
nimmt an, da
alle diese Prozesse (und deren Nachfahren) in derselben Prozegruppe
verblieben sind, die
.B init
ursprnglich fr sie erzeugt hat (siehe
.BR setpgrp (2)).
Wenn irgendeiner dieser Prozesse seine
Prozeguppenzugehrigkeit gendert hat, wird er diese Signale nicht
erhalten! Solche Prozesse mssen einzeln terminiert werden!
.SH TELINIT
Das Programm
.B /sbin/telinit
ist auf
.B /sbin/init
gelinkt. Er
wird mit Argumenten, die aus nur einem Buchstaben bestehen gesteuert, und
sendet
.B init
Anweisungen (Signale), welche Aktionen dieses auszufhren
hat. Die folgenden Argumente dienen als Anweisungen fr
.BR telinit :
.TP
.BR 0 , 1 , 2 , 3 , 4 , 5 " oder " 6
befehlen
.B init
in den angegebenen runlevel zu wechseln.
.TP
.B a , b , c
befehlen
.B /sbin/init
nur die Eintrge der Datei
.I /etc/inittab
auszufhren, die den Runlevel
.BR a ", " b " oder " c
haben.
.TP
.BR Q " oder " q
befehlen
.B /sbin/telinit
nocheinmal die Datei
.I /etc/inittab
einzulesen.
.TP
.BR S " oder " s
befehlen
.B /sbin/telinit
in den Single-User-Modus zu schalten.
.PP
.B /sbin/telinit
kann den
.BR init \-Proze
auch anweisen, wieviel
Zeit dieser zwischen dem Senden des TERM und des KILL Signals warten
soll; die Standardeinstellung ist 5 Sekunden, kann jedoch durch die
Option
.BI \-t " sec"
verndert werden.
.B /sbin/telinit
kann nur von Benutzern mit einer entsprechenden Berechtigung aufgerufen werden.
Das
.BR init \-Programm
berprft, ob es als
.B init
oder
.B telinit
gestartet wurde, indem es auf seine Proze-ID schaut; die reelle
Proze-ID von
.B init
ist immer 1. Von daher darf man einfach auch
.B init
anstelle von
.B telinit
verwenden oder eines Aliases.
.SH UMGEBUNG
.B Init
setzt folgende Umgebungsvariablen fr alle seine Kindprozesse:
.TP
.B PATH
Wird standarmig auf
.I /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
gesetzt.
.TP
.B INIT_VERSION
Wie der Name schon sagt. Ntzlich, wenn ein Skript direkt von init
ausgefhrt werden soll.
.TP
.B RUNLEVEL
Der augenblickliche Runlevel des Systems.
.TP
.B PREVLEVEL
Der vorherige Runlevel (ntzlich nach einer nderung des Runlevels).
.TP
.B CONSOLE
Die System-KOnsole. Diese wird tatschlich vom Kernel vererbt; wenn
sie jedoch nicht gesetzt ist, wird
.B init
sie auf
.I /dev/console
setzen als Voreinstellung.
.SH BOOTSIGNALE
Es ist mglich
.B init
eine Reihe von Bootsignalen (bootflags) vom
Bootmonitor aus (d.h. vom LILO aus) zu bergeben.
.B Init
akzeptiert folgende Signale:
.TP
.BR "\-s" ", " S ", " single
Bootet im Single-user Modus. In diesem Modus wird zuerst die Datei
.I /etc/inittab
eingelesen; danach werden, noch bevor die
Single-User-Shell gestartet wird, die Bootskripte der Datei
.I /sbin/init.d/boot
ausgefhrt.
.TP
.BR 1 , 2 , 3 , 4 " oder " 5
Weist
.B init
an, in welchen Runlevel gebootet werden soll.
.TP
.BR \-b ", " emergency
Gibt
.B init
die Anweisung direkt in den Single-User-Modus zu booten,
ohne irgendwelche Startup-Skripte auszufhren.
.TP
.BR \-a ", " auto
.\" ACHTUNG: Englisches Original ergibt keinen Sinn...
Der LILO-Bootloader fgt das Wort an den Kernel.
.B init
ist in der Lage, es zu lesen.
.TP
.B \-z xxx
Das Argument zu
.B \-z
wird irgnoriert. Sie knnen es benutzen, um die Komandozeile etwas zu
verlngern, damit sie etwas mehr Platz auf dem Stack reserviert.
.B Init
kann anschlieend die Komandozeile derart modifizieren, da
.BR ps (1)
den aktuellen Runlevel anzeigt.
.SH SCHNITTSTELLE
.B Init
lauscht auf einem Fifo in
.IR /dev ", " /dev/initctl ,
auf Nachrichten.
.B Telinit
benutzt diesen, um mit
.B init
zu kommunizieren. Die Schnittstelle ist noch nicht sehr ausfhrlich
dokumentiert. Wer interessiert ist, mge die Datei
.I initreq.h
im Quellcode von init studieren.
.SH SIGNALE
Init reagiert auf verschiedene Signale:
.TP 0.5i
.B SIGHUP
Init sucht nach
.I /etc/initrunlvl
und
.IR /var/log/initrunlvl .
Wenn eine dieser Dateien existiert und einen ASCII-Runlevel enthlt,
wechselt
.B init
in den neuen Runlevel.
.I Dieses existiert nur fr Abwrtskompatibilitt!
In normalen Fllen (wenn die Dateien nicht existieren) verhlt sich
init, als wenn
.B telinit q
ausgefhrt wurde.
.PP
.TP 0.5i
.B SIGUSR1
Beim Emfang dieses Signals schliet init sein Kontroll-Fifo
.I /dev/initctl
und ffnet ihn wieder. Das ist sinnvoll fr Boot-Skripte, wenn
.I /dev
neu gemountet wird.
.TP 0.5i
.B SIGINT
Normalerweise sendet der Kernel dieses Signal an
.IR init ,
wenn CTRL-ALT-DEL gedrckt wurde. Es aktiviert die
.IR ctrlaltdel \-Aktion.
.TP 0.5i
.B SIGWINCH
Der Kernel sendet dieses Signal, wenn die
.IR KeyboardSignal \-Taste
gedrckt wurde. Es aktiviert die
.IR kbdrequest \-Aktion.
.SH "KONFORM ZU"
.B Init
ist kompatibel zum System V init. Er arbeitet eng mit
den Skripten zusammen, die in den Verzeichnissen
.I /sbin/init.d
und
.I /sbin/init.d/rc{runlevel 1\-6}.d
untergebracht sind. Wenn das
System dieser Konvention folgt, sollte sich in diesem Verzeichniss eine
.B README \-Datei
befinden, die erklrt wie diese Skripte funktionieren.
.SH DATEIEN
.nf
.I /etc/inittab
.I /etc/initscript
.I /dev/console
.I /etc/ioctl.save
.I /var/run/utmp
.I /var/log/wtmp
.I /dev/initctl
.fi
.SH WARNUNGEN
.B Init
geht davon aus, da alle Prozesse und Kindprozesse
in der selben Prozessgruppe verbleiben, die ursprnglich fr
sie eingerichtet worden ist. Wenn einer dieser Prozesse in eine andere
Gruppe wechselt, kann
.B init ihn nicht mehr beenden, und es kann
passieren, da man in einem Zustand landet, in dem zwei Prozesse von
einer Terminalleitung Befehle einlesen wollen.
.SH DIAGNOSE
Wenn
.B init
herausfindet, da es kontinuierlich einen Eintrag fter als 10 mal in
2 Minuten neu erzeugt, wird es annehmen, da ein Fehler in der
Befehlszeile vorliegt, einen Fehler erzeugen, Meldungen auf die
Systemkonsole erstatten und sich weigern, den Eintrag auszufhren, bis
5 Minuten vergangen sind oder es ein Signal empfngt. Dieses
verhindert, da Systemresourcen verschwendet werden, wenn jemand einen
Tippfehler in
.I /etc/inittab
einbaut oder das zum Eintrag gehrende Programm lscht.
.SH AUTOR
Miquel van Smoorenburg <miquels@cistron.nl>, ursprngliche Manpage von
Michael Haardt <u31b3hs@pool.informatik.rwth-aachen.de>, bersetzung
Martin Okrslar <okrslar@informatik.uni-muenchen.de> und berarbeitung
von Martin Schulze <joey@infodrom.north.de>.
.SH "SIEHE AUCH"
.BR getty (1),
.BR login (1),
.BR sh (1),
.BR who (1),
.BR shutdown (1),
.BR kill (2),
.BR inittab (5),
.BR inscript (5),
.BR utmp (5).
|