Provided by:
manpages-hu_20010119-4_all 
NÉV
init, telinit - processz vezérlés inicializálása
ÁTTEKINTÉS
/sbin/init [ 0123456Ss ]
/sbin/telinit [ -t sec ] [ 0123456sSQqabcUu ]
LEÍRÁS
Init
Az init minden processz szülője. Az elsődleges szerepe, hogy
processzeket hozzon létre egy szkript alapján, amely a /etc/inittab
fájlban található (lásd inittab(5)). Ebben a fájlban találhatók azok a
bejegyzések amelyek hatására az init létrehoz gettyket 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.
FUTÁSI SZINTEK
A futsi szint egy szoftver konfiguráció, amely csak egy meghatározott
processz csoport létezését engedi meg. Az, hogy az init milyen
processzeket hozzon létre egy adott futási szinten a /etc/inittab
fájlban van definiálva. Az init nyolc futási szinten lehet: 0-6 és S
vagy s. Futási szintet úgy válthatunk, ha egy privilegizált
felhasználó futtatja a
telinit programot , amely elküldi a megfelelő jeleket az init-nek,
amiből ez utóbbi megtudja melyik futási szintre kell átváltania.
A 0, 1 és 6 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 S 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 shutdown(8) és inittab(5) kézikönyv
oldlakat.
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 S és s futási szintek igazából megegyeznek.
Belső aliaszokról van szó, amik ugyanarra a futási szintre mutatnak.
BOOTOLÁS
Miután az init meghívódik, a kernel boot szekvencia utolsó lépéseként,
megnézi a /etc/inittab fájlt, hogy van-e benne initdefault típusú
bejegyzés (lásd inittab(5)). Az initdefault bejegyzés határozza meg a
renszer alapértelmezett futási szintjét. Ha nincs ilyen bejegyzés (vagy
abszolut nincs /etc/inittab fájl), a futási szintet a konzolon kell
megadni.
Az S és s futási szintek "single user mode"-ba állítják a rendszert,
ilyenkor nem kell /etc/initttab fájl. "Single user mode"-ban az op.
renszer a /sbin/sulogin-t hívja meg a /dev/console-on.
"Single user mode"-ba való belépéskor az init leolvassa a konzol
ioctl(2) állapotát a /etc/ioctl.save fájlból. Ha nincs ilyen fájl, az
init inicializálja a vonalat 9600 baud-al és CLOCAL beállításokkal.
Amikor az init elhagyja a "single user mode"-ot, eltárolja a konzol
ioctl beállításait a már említett fájlba, így ezek újrahasználhatók a
leközelebbi alkalommal.
Amikor először lépünk "multi-user mode"-ba (több felhasználós módba),
az init végrehajtja a boot és a bootwait 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.
Amikor új processzt indít, az init megnézi, hogy létezik-e a
/etc/initscript fájl. Ha igen, ezt a szkriptet használja a processz
indításához.
Mindig amikor egy gyermek processz véget ér, az init rögzíti ezt a
tényt és a halál okát a /var/run/utmp és /var/log/wtmp fájlokba, ha
ezek léteznek.
FUTÁSI SZINT VÁLTÁS
Miután létrehozta az összes megadott processzt, az init várja, hogy
valamelyik leszármazott processze meghaljon, hogy elmenjen az áram
("powerfail" jel), vagy hogy a telinit 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 /etc/inittab fájlt. A fájlhoz adhatunk bármikor új
bejegyzéseket. Ettől függetlenül az init mindig a fent említett három
eset egyikére vár. Ha mi akarjuk előidézni a frissítést, a telinit Q
vagy q parancs felébresztheti az initet, hogy az újraolvassa a
/etc/inittab fájlt.
Ha az init nem "single user"-ben van, és áramkimaradást jelző jelet kap
(SIGPWR), elolvassa a /etc/powerstatus fájlt. Ekkor elindít egy
utasítást a már említett fájl tartalma alapján.
F(AIL) Az áram kimaradt, UPS (szünetmentes táp) adja az áramot.
Lefutnak a powerwait és powerfail bejegyzések.
O(K) Az áramszolgáltatás visszaállt. Lefutnak a powerokwait
bejegyzések.
L(OW) Az áram kimaradt és a szünetmentes akkumulátorai is lemerültek.
Lefutnak a powerfailnow bejegyzések.
Ha a /etc/powestatus nem létezik, vagy a F, O vagy L betűktől eltérő
értékeket tartalmaz, az init úgy viselkedik, mintha F betűt olvasott
volna.
A SIGPWR és a /etc/powerstatus használata nem javasolt. Ha valaki az
init-tel akar "beszélni" inkább a /dev/initctl vezérlő csatornát
használja - több dokumentációért lásd a sysvinit csomag forráskódját.
Amikor az init-től futási szint váltást kérünk, ez először egy
figyelmeztető SIGTERM 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 SIGKILL jellel.
Megjegyzés: az init 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
A /sbin/telinit a /sbin/init-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
telinit-nek:
0,1,2,3,4,5 vagy 6
megmondja az init-nek, hogy váltson az adott futási szintre.
a,b,c megmondja az init-nek, hogy csak azokat a bejegyzéseket hajtsa
végre a /etc/inittab fájlból amelyeknek a,b vagy c futási
szintjük van.
Q vagy q
megmondja az init-nek, hogy olvassa újra a /etc/inittab fájlt.
S vagy s
megmondja az init-nek, hogy váltson "single user mode"-ba.
U or u megmondja az init-nek, hogy induljon újra (megtartja az
állapotát). Nem olvassa újra a /etc/inittab-ot. A futási szint a
következők egyike kell legyen: Ss12345. Ettől eltérő esetben a
kérést a program csendesen figyelmen kívül hagyja.
A telinit megmondhatja az init-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 -t sec opcióval.
A telinit-et csak a megfelelő privilégiummal rendelkező felhasználók
hívhatják meg.
Az init binárisan ellenőrzi, hogy az init vagy telinit-e, a processz id
vizsgálatával; az igazi init processz id-je mindig 1. Ebből az
következik, hogy a telinit helyett meghívhatjuk egyszerűen az init-et.
KÖRNYEZET
Az init beállítja a következő környezeti változókat minden
gyermekénél:
PATH /usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin
INIT_VERSION
A neve magáért beszél. Hasznos, ha meg akarjuk állapítani, hogy
egy szkript egyenesen az init-től származik-e.
RUNLEVEL
A rendszer aktuális futási szintje.
PREVLEVEL
Az előző futási szint (futási szint váltás után hasznos).
CONSOLE
A rendszerkonzol. Ez általában a kerneltől öröklődik. Ha
mégsincs beállítva, az init alapértelmezésben /dev/console-ra
állítja.
OPCIÓK BOOTOLÁSKOR
Bootoláskor át lehet adni, a boot monitoron keresztül (pl. LILO), az
init-nek néhány opciót. Az init a következő kapcsolókat fogadja el:
S, single
"Single user mode" boot. Ebben a módban az init megnézi a
/etc/inittab-ot és a bootoláskor futtatandó rc szkriptek
végrehajtásra kerülnek a "single user mode"-ba való lépés előtt.
1-5 Bootolás után választott futási szint.
-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.
INTERFÉSZ
Az init egy fifo-n keresztül fülel a /dev-ben, /dev/initctl-en, itt
várja az üzeneteket. Ezt használja a telinit 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 initreq.h fájlt tanulmányozhatják az init
src/ alkönyvtárában, a forrás tar archívumában.
JELEK (SIGNALS)
Az init a következő jelekre reagál:
SIGHUP
Az init megnézi, hogy léteznek-e a /etc/initrunlvl és
/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.
Ez csak a visszafel kompatibilits miatt van gy! . Normális
esetben (nem léteznek a fájlok) az init úgy viselkedik mint a
telinit q.
SIGUSR1
Erre a jelre az init bezárja, majd újra megnyitja a vezérlő
fifoját, /dev/initctl-t. Hasznos bootszkriptek esetében amikor a
/dev-et újracsatlakoztatjuk (újramountoljuk).
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 ctrlaltdel
bejegyzést.
SIGWINCH
A kernel akkor küldi ezt a jelet amikor a KeyboardSignal gombot
megnyomjuk. Ez aktiválja a kbrequest bejegyzést.
KOMPATIBILITÁS
Az init kompatíbilis a System V inittel. Szorosan együttműködik a
/etc/init.d és a /etc/rc{runlevel}.d könyvtárakban található
szkriptekkel. Ha a rendszered ezt a konvenciót használja, kell hogy
legyen a /etc/init.d könyvtárban egy README nevű fájl ami leírja, hogy
hogy működnek ezek a szkriptek.
FÁJLOK
/etc/inittab
/etc/initscript
/dev/console
/etc/ioctl.save
/var/run/utmp
/var/log/wtmp
/dev/initctl
FIGYELMEZTETÉSEK
Az init 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 init nem tudja megölni
őket. A végeredmény lehet két, egy terminál vonalról olvasó processz.
DIAGNOSZTIKA
Ha az init é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 init rendszer
erőforrásokat foglaljon le csak azért, mert valaki szintaktikai hibát
ejtett a /etc/inittab fájlban, vagy mert a bejegyzésben szereplő
programot törölték.
SZERZŐK
Miquel van Smoorenburg (miquels@cistron.nl), eredeti kéziköny oldalat
írta Michael Haardt (u31b3hs@pool.informatik.rwth-aachen.de).
ÁSD MÉG
getty(1), login(1), sh(1), who(1), shutdown(8), kill(1), inittab(5),
initscript(5), utmp(5)
MAGYAR FORDÍTÁS
Kovács Emese <emese@eik.bme.hu>
1998. március 9. INIT(8)