.\"{{{}}} .\"{{{ Title .TH INIT 8 "1998. március 9." "" "Linux Rendszergazda Kézikönyve" .\"}}} .\"{{{ Name .SH NÉV init, telinit \- processz vezérlés inicializálása .\"}}} .\"{{{ Synopsis .SH ÁTTEKINTÉS .B /sbin/init .RB [ " 0123456Ss " ] .br .B /sbin/telinit .RB [ " \-t sec " ] .RB [ " 0123456sSQqabcUu " ] .\"}}} .\"{{{ Description .SH LEÍRÁS .\"{{{ init .SS Init Az .B init minden processz szülője. Az elsődleges szerepe, hogy processzeket hozzon létre egy szkript alapján, amely a \fB/etc/inittab\fP fájlban található (lásd \fIinittab\fP(5)). Ebben a fájlban találhatók azok a bejegyzések amelyek hatására az \fBinit\fP létrehoz \fBgetty\fPket minden vonalon, amin a felhasználók be tudnak lépni. E mellett ellenőriz autonóm processzeket, amelyekre bármely adott rendszernek szüksége van. .PP .\"{{{ Runlevels .SH FUTÁSI SZINTEK A \fIfutási szint\fP egy szoftver konfiguráció, amely csak egy meghatározott processz csoport létezését engedi meg. Az, hogy az \fBinit\fP milyen processzeket hozzon létre egy adott futási szinten a \fB/etc/inittab\fP fájlban van definiálva. Az \fBinit\fP nyolc futási szinten lehet: \fB0\(en6\fP és \fBS\fP vagy \fBs\fP. Futási szintet úgy válthatunk, ha egy privilegizált felhasználó futtatja a \fBtelinit\fP programot , amely elküldi a megfelelő jeleket az \fBinit\fP\-nek, amiből ez utóbbi megtudja melyik futási szintre kell átváltania. .PP A \fB0\fP, \fB1\fP és \fB6\fP futási szintek foglaltak. 0\-ás futási szintre váltással tudjuk leállítani a rendszert, 6\-os futási szintre váltással tudjuk leállítani, és 1\-es futási szinttel leviszzük "single user mode"\-ba vagyis egy felhasználó használhatja csak. Az \fBS\fP futási szintet nem igazán direkt használatra tervezték, sokkal inkább azoknak a szkripteknek amik a 1\-es futási szintre való belépéskor futnak le. További információért lásd a \fBshutdown\fP(8) és \fBinittab\fP(5) kézikönyv oldlakat. .PP A 7-9 futási szintek is értelmesek, de nincsenek igazán dokumentálva. Ez azért van, mert a "tradicionális" UNIX változatok nem használták őket. Ha kiváncsi vagy, az \fIS\fP és \fIs\fP futási szintek igazából megegyeznek. Belső aliaszokról van szó, amik ugyanarra a futási szintre mutatnak. .\"}}} .PP .SH BOOTOLÁS Miután az init meghívódik, a kernel boot szekvencia utolsó lépéseként, megnézi a \fB/etc/inittab\fP fájlt, hogy van-e benne \fBinitdefault\fP típusú bejegyzés (lásd \fIinittab\fP(5)). Az \fBinitdefault\fP bejegyzés határozza meg a renszer alapértelmezett futási szintjét. Ha nincs ilyen bejegyzés (vagy abszolut nincs \fB/etc/inittab\fP fájl), a futási szintet a konzolon kell megadni. .PP Az \fBS\fP és \fBs\fP futási szintek "single user mode"\-ba állítják a rendszert, ilyenkor nem kell \fB/etc/initttab\fP fájl. "Single user mode"\-ban az op. renszer a \fB/sbin/sulogin\fP\-t hívja meg a \fB/dev/console\fP\-on. .PP "Single user mode"\-ba való belépéskor az \fBinit\fP leolvassa a konzol \fIioctl\fP(2) állapotát a \fB/etc/ioctl.save\fP fájlból. Ha nincs ilyen fájl, az \fBinit\fP inicializálja a vonalat \fB9600 baud\fP\-al és \fBCLOCAL\fP beállításokkal. Amikor az \fBinit\fP elhagyja a "single user mode"\-ot, eltárolja a konzol \fIioctl\fP beállításait a már említett fájlba, így ezek újrahasználhatók a leközelebbi alkalommal. .PP Amikor először lépünk "multi-user mode"\-ba (több felhasználós módba), az \fBinit\fP végrehajtja a \fBboot\fP és a \fBbootwait\fP bejegyzéseket. Ez megengedi, hogy az operációs rendszer felcsatlakoztassa (mount\-olja) a fájlrendszereket, mielőtt a felhasználók bejelenkeznének. Ezek után a futási szintnek megfelelő bejegyzések kerülnek végrehajtásra. .PP Amikor új processzt indít, az \fBinit\fP megnézi, hogy létezik\-e a \fI/etc/initscript\fP fájl. Ha igen, ezt a szkriptet használja a processz indításához. .PP Mindig amikor egy gyermek processz véget ér, az \fBinit\fP rögzíti ezt a tényt és a halál okát a \fB/var/run/utmp\fP és \fB/var/log/wtmp\fP fájlokba, ha ezek léteznek. .SH FUTÁSI SZINT VÁLTÁS Miután létrehozta az összes megadott processzt, az \fBinit\fP várja, hogy valamelyik leszármazott processze meghaljon, hogy elmenjen az áram ("powerfail" jel), vagy hogy a \fBtelinit\fP futási szint váltást kérjen. Ha a fent említett három lehetőség közül valamelyik megtörténik, az init újraolvassa a \fB/etc/inittab\fP fájlt. A fájlhoz adhatunk bármikor új bejegyzéseket. Ettől függetlenül az \fBinit\fP mindig a fent említett három eset egyikére vár. Ha mi akarjuk előidézni a frissítést, a \fBtelinit Q\fP vagy \fBq\fP parancs felébresztheti az \fBinit\fPet, hogy az újraolvassa a \fB/etc/inittab\fP fájlt. .PP Ha az \fBinit\fP nem "single user"\-ben van, és áramkimaradást jelző jelet kap (SIGPWR), elolvassa a \fB/etc/powerstatus\fP fájlt. Ekkor elindít egy utasítást a már említett fájl tartalma alapján. .IP F(AIL) Az áram kimaradt, UPS (szünetmentes táp) adja az áramot. Lefutnak a \fBpowerwait\fP és \fBpowerfail\fP bejegyzések. .IP O(K) Az áramszolgáltatás visszaállt. Lefutnak a \fBpowerokwait\fP bejegyzések. .IP L(OW) Az áram kimaradt és a szünetmentes akkumulátorai is lemerültek. Lefutnak a \fBpowerfailnow\fP bejegyzések. .PP Ha a /etc/powestatus nem létezik, vagy a \fBF\fP, \fBO\fP vagy \fBL\fP betűktől eltérő értékeket tartalmaz, az init úgy viselkedik, mintha \fBF\fP betűt olvasott volna. .PP A \fBSIGPWR\fP és a \fB/etc/powerstatus\fP használata nem javasolt. Ha valaki az \fBinit\fP\-tel akar "beszélni" inkább a \fB/dev/initctl\fP vezérlő csatornát használja - több dokumentációért lásd a \fBsysvinit\fP csomag forráskódját. .PP Amikor az \fBinit\fP\-től futási szint váltást kérünk, ez először egy figyelmeztető \s-1\fBSIGTERM\fP\s0 jelet küld minden processznek, ami nincs a cél futási szinten definiálva. Ez után vár 5 másodpercet, mielőtt erőszakkal megölné a szóban forgó processzeket a \s-1\fBSIGKILL\fP\s0 jellel. Megjegyzés: az \fBinit\fP feltételezi, hogy az összes szóban forgó processz (és a leszármazottaik is) ugyan abban a processz csoportban maradnak, amit az init eredetileg létrehozott nekik. Ha egy processz megváltoztatja a processz csoportját, a leszármazottai már nem kapják meg az init által küldött jeleket. Ezeket a processzeket külön kell leállítani. .\"}}} .\"{{{ telinit .SH TELINIT A \fB/sbin/telinit\fP a \fB/sbin/init\fP\-hez van kapcsolva (linkelve). Egy karakteres argumentumot adhatunk neki, és ő tobábbítja a megfelelő jeleket az init felé. A következő argumentumok irányadóak a \fBtelinit\fP\-nek: .IP "\fB0\fP,\fB1\fP,\fB2\fP,\fB3\fP,\fB4\fP,\fB5\fP vagy \fB6\fP" megmondja az \fBinit\fP\-nek, hogy váltson az adott futási szintre. .IP \fBa\fP,\fBb\fP,\fBc\fP megmondja az \fBinit\fP\-nek, hogy csak azokat a bejegyzéseket hajtsa végre a \fB/etc/inittab\fP fájlból amelyeknek \fBa\fP,\fBb\fP vagy \fBc\fP futási szintjük van. .IP "\fBQ\fP vagy \fBq\fP" megmondja az \fBinit\fP\-nek, hogy olvassa újra a \fB/etc/inittab\fP fájlt. .IP "\fBS\fP vagy \fBs\fP" megmondja az \fBinit\fP\-nek, hogy váltson "single user mode"\-ba. .IP "\fBU\fP or \fBu\fP" megmondja az \fBinit\fP\-nek, hogy induljon újra (megtartja az állapotát). Nem olvassa újra a \fB/etc/inittab\fP\-ot. A futási szint a következők egyike kell legyen: \fBSs12345\fP. Ettől eltérő esetben a kérést a program csendesen figyelmen kívül hagyja. .PP A \fBtelinit\fP megmondhatja az \fBinit\fP\-nek, hogy mennyit várjon a SIGTERM és SIGKILL jelek küldése között. Az alapértelmezett időintervallum 5 másodperc, de megváltoztatható a \fB-t sec\fP opcióval. .PP A \fBtelinit\fP\-et csak a megfelelő privilégiummal rendelkező felhasználók hívhatják meg. .PP Az \fBinit\fP binárisan ellenőrzi, hogy az \fBinit\fP vagy \fBtelinit\fP\-e, a \fIprocessz id\fP vizsgálatával; az igazi \fBinit\fP processz id-je mindig \fB1\fP. Ebből az következik, hogy a \fBtelinit\fP helyett meghívhatjuk egyszerűen az \fBinit\fP\-et. .\"}}} .\"}}} .SH KÖRNYEZET Az \fBinit\fP beállítja a következő környezeti változókat minden gyermekénél: .IP \fBPATH\fP \fI/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin\fP .IP \fBINIT_VERSION\fP A neve magáért beszél. Hasznos, ha meg akarjuk állapítani, hogy egy szkript egyenesen az \fBinit\fP\-től származik\-e. .IP \fBRUNLEVEL\fP A rendszer aktuális futási szintje. .IP \fBPREVLEVEL\fP Az előző futási szint (futási szint váltás után hasznos). .IP \fBCONSOLE\fP A rendszerkonzol. Ez általában a kerneltől öröklődik. Ha mégsincs beállítva, az \fBinit\fP alapértelmezésben \fB/dev/console\fP\-ra állítja. .SH OPCIÓK BOOTOLÁSKOR Bootoláskor át lehet adni, a boot monitoron keresztül (pl. LILO), az \fBinit\fP\-nek néhány opciót. Az \fBinit\fP a következő kapcsolókat fogadja el: .TP 0.5i .B S, single "Single user mode" boot. Ebben a módban az init megnézi a \fI/etc/inittab\fP\-ot és a bootoláskor futtatandó rc szkriptek végrehajtásra kerülnek a "single user mode"\-ba való lépés előtt. .PP .TP 0.5i .B 1-5 Bootolás után választott futási szint. .PP .TP 0.5i .B -b, emergency Egyenesen "single user"\-be jön fel ("single user" shell\-t indít). Nem futtat semmilyen induláskor egyébként lefutó szkriptet. .PP .SH INTERFÉSZ Az init egy \fIfifo\fP\-n keresztül fülel a /dev\-ben, \fI/dev/initctl\fP\-en, itt várja az üzeneteket. Ezt használja a \fBtelinit\fP amikor az inittel kommunikál. Az interfész nincs túl jól dokumentálva és fejlesztés alatt áll. Az érdeklődők az \fIinitreq.h\fP fájlt tanulmányozhatják az \fIinit\fP \fBsrc/\fP alkönyvtárában, a forrás tar archívumában. .SH JELEK (SIGNALS) Az init a következő jelekre reagál: .TP 0.5i .B SIGHUP Az init megnézi, hogy léteznek\-e a .I /etc/initrunlvl és .I /var/log/initrunlvl fájlok. Ha ezek közül az egyik létezik és egy ASCII runlevelt tartalmaz, az init bevált ebbe a runlevelbe. \fI Ez csak a visszafelé kompatibilitás miatt van így! \fP. Normális esetben (nem léteznek a fájlok) az init úgy viselkedik mint a \fB telinit q\fP. .PP .TP 0.5i .B SIGUSR1 Erre a jelre az init bezárja, majd újra megnyitja a vezérlő fifoját, \fB/dev/initctl\fP\-t. Hasznos bootszkriptek esetében amikor a /dev\-et újracsatlakoztatjuk (újramountoljuk). .TP 0.5i .B SIGINT Normális esetben a kernel akkor küldi ezt a jelet az initnek, ha megnyomjuk a CTRL-ALT-DEL gombokat. Ez aktiválja a \fIctrlaltdel\fP bejegyzést. .TP 0.5i .B SIGWINCH A kernel akkor küldi ezt a jelet amikor a \fIKeyboardSignal\fP gombot megnyomjuk. Ez aktiválja a \fIkbrequest\fP bejegyzést. \"{{{ Conforming to .SH KOMPATIBILITÁS Az \fBinit\fP kompatíbilis a System V inittel. Szorosan együttműködik a \fI/etc/init.d\fP és a \fI/etc/rc{runlevel}.d\fP könyvtárakban található szkriptekkel. Ha a rendszered ezt a konvenciót használja, kell hogy legyen a \fI/etc/init.d\fP könyvtárban egy \fIREADME\fP nevű fájl ami leírja, hogy hogy működnek ezek a szkriptek. .\"}}} .\"{{{ Files .SH FÁJLOK .nf /etc/inittab /etc/initscript /dev/console /etc/ioctl.save /var/run/utmp /var/log/wtmp /dev/initctl .fi .\"}}} .\"{{{ Warnings .SH FIGYELMEZTETÉSEK Az \fBinit\fP feltételezi, hogy a processzek és leszármazottjaik ugyanabban a processz csoportban maradnak, ami eredetileg nekik jött létre. Ha a processzek megváltoztatják a csoportjukat, az \fBinit\fP nem tudja megölni őket. A végeredmény lehet két, egy terminál vonalról olvasó processz. .\"}}} .\"{{{ Diagnostics .SH DIAGNOSZTIKA Ha az \fBinit\fP észreveszi, hogy folyamatosan újra létrehoz egy adott bejegyzést több mint 10\-szer 2 perc alatt, úgy fogja venni, hogy hiba van a megadott parancssorban. Generál egy hibaüzenetet a konzolra, és nem indítja újra a bejegyzésben szereplő programot 5 percig vagy addig, amíg nem kap egy jelet. Ezzel megelőzhető, hogy az \fBinit\fP rendszer erőforrásokat foglaljon le csak azért, mert valaki szintaktikai hibát ejtett a \fB/etc/inittab\fP fájlban, vagy mert a bejegyzésben szereplő programot törölték. .\"}}} .\"{{{ Author .SH SZERZŐK Miquel van Smoorenburg (miquels@cistron.nl), eredeti kéziköny oldalat írta Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de). .\"}}} .\"{{{ See also .SH "ÁSD MÉG .BR getty (1), .BR login (1), .BR sh (1), .BR who (1), .BR shutdown(8), .BR kill (1), .BR inittab (5), .BR initscript (5), .BR utmp (5) .\"}}} .SH MAGYAR FORDÍTÁS Kovács Emese