|
Fontos, hogy kövessük a rendszerlezárás helyes módját, ha leállítunk
egy Linux rendszert. Ha nem tesszük meg, a fájlrendszerek sérülhetnek,
mivel a Linux csak időnként hozza szinkronba a lemez cache és a lemez
tényleges tartalmát. Ez ugyan nagyon megjavítja a rendszer
teljesítményét működés közben, de azt is jelenti, hogy egy rossz
rendszerleállás (pl. hirtelen lekapcsoljuk a főkapcsolót)
adatvesztést és rendszersérülést okozhat.
Egy másik ok az egyszerű kikapcsolás ellen, hogy egy többfeladatos
(multitaskig) rendszerben sok processz mehet a háttérben, és ezekre az
áram lekapcsolása szörnyű hatással lehet. A megfelelő rendszerlezárási
(shutdown) eljárás esetén ezek el tudják menteni adataikat, nem csak
meghalnak egy pillanat alatt.
A Linux rendszerekben a shutdown parancs végzi a helyes
rendszerlezárást. Általában két módon szokás használni.
Ha olyan rendszert futtatsz, ahol te vagy az egyetlen felhasználó, a
shutdown használatának szokásos módja az, hogy kilépsz minden
futó progrmaból, kijelentkezel minden virtuális konzolról, valahol
bejelentkezel root-ként, majd kiadod a
shutdown -h now parancsot. Itt a now
azt jelenti, hogy a rendszerleállás azonnali. (Egy felhasználó esetén
ez így rendben van.)
Ezzel szemben, ha a rendszeren több felhasználó is van, a
shutdown -h +time message használata célszerű, ahol
time az az idő percekben mérve, amennyi múlva a rendszer
leáll, a message pedig egy üzenet, amely a leállás okát
magyarázza. Nézzük a következő példát:
# shutdown -h +10 'Új lemezt installálunk. A rendszer 3 óra múlva
> indul újra.'
#
Ez mindenkit figylemeztet, hogy 10 perc múlva leáll a rendszer, és még
az üzenetet is megkapják a felhasználók minden terminálon, melyen
valaki bejelentkezett, és minden xterm ablakban is:
Broadcast message from root (ttyp0) Wed Aug 2 01:03:25 1995...
Új lemezt installálunk. A rendszer 3 óra múlva indul újra.
The system is going DOWN for system halt in 10 minutes !!
A figyelmeztetés automatikusan megismétlődik a leállás előtt
néhányszor, egyre gyakrabban, ahogy annak ideje közeledik.
Amikor a rendszerleállás ténylegesen elindul, a gyökér kivételével
minden fájlrendszer lecsatolódik, a felhasználók processzeit (ha még
létezik olyan) megszakítja a rendszer, a démonok leállnak, minden
fájlrendszer lecsatolódik, és általában minden leáll. Amikor ez kész
van, az init kiír egy üzenetet, hogy most már lekapcsolható a
számítógép. Ekkor, és csakis ekkor szabad a kapcsoló után nyúlni.
Néha még jól karbantartott rendszerekkel is megesik, hogy nem lehet
megfelelően leállítani a rendszert. Például ha a kernel pánikol, vagy
valahogy rosszul viselkedik, lehetetlen további parancsokat kiadni,
így a rendszerleállási folyamat sem fog lefutni. Ekkor csak
reménykedni lehet, hogy semmi sem sérül komolyan, majd lekapcsolni az
áramot. Ha a probléma nem ennyire súlyos (pl. valaki egy fejszével
szétverte a billentyűzetet), és a kernel, valamint az update
rendesen fut, érdemes várni pár percet, hogy a cache puffer és a lemez
tartalma szinkronba kerülhessen, majd azután lekapcsolni az áramot.
Néhány ember a rendszerleállást a sync paranccsal szereti
elvégezni, amely a cache puffert kiírja a lemezre. Az általános
elgondolás az, hogy háromszor kiadva a sync -et, majd megvárva,
hogy minden lemezművelet befejeződjön, biztonsággal lekapcsolható a
számítógép. Ha nincsenek futó programok, ez majdnem egyenértékű a
shutdown -nal. Igaz, ekkor a fájlrendszerek nem lesznek
lecsatolva, ami problémát okozhat az ext2 rendszer ''clean
filesystem'' bitjénél. Ezen kívül az esetleges elfelejtett
felhasználók és processzek sem tudnak szépen kilépni. Ezért a
''tripla sync'' módszer nem ajánlott.
(Ha érdekel: annak oka, hogy háromszor kell kiadni a
sync-et az, hogy a korai UNIX rendszerek esetében a parancs
háromszori begépelése általában elegendő időt adott a lemeznek a
műveletek befejezésére.)
|