Ha Linuxot használ, akkor valószínűleg hallottál az init.d könyvtárról. De pontosan mit csinál ez a könyvtár? Végül egy dolgot csinál, de egy dolgot csinál az egész rendszer számára, tehát az init.d nagyon fontos. Az init.d könyvtár számos start / stop szkriptet tartalmaz a rendszer különféle szolgáltatásaihoz. A gyors és az x11 közönség közötti mindent ebből a könyvtárból vezéreljük. Természetesen nem egészen olyan egyszerű.
Ha megnézi az / etc könyvtárat, az rc # .d formátumú könyvtárakat talál (ahol # egy szám egy adott inicializálási szintet tükröz - 0-tól 6-ig). Ezen könyvtárak mindegyikében található számos más szkript, amely a folyamatokat vezérli. Ezek a szkriptek "K" vagy "S" betűkkel kezdődnek. Az összes "K" szkript az "S" szkriptek előtt fut. És attól függően, hogy a szkriptek hol helyezkednek el, meghatározzák, mikor kezdenek a szkriptek. A könyvtárak között a rendszerszolgáltatások úgy működnek, mint egy jól olajozott gép. De vannak olyan idők, amikor tiszta módon, a kill vagy a killall parancsok használata nélkül el kell indítania vagy le kell állítania a folyamatot. Itt hasznos az /etc/init.d könyvtár.
Most, ha olyan disztribúciót használ, mint a Fedora, akkor ezt a könyvtárat a /etc/rc.d/init.d könyvtárban találhatja meg. Helyétől függetlenül ugyanazt a célt szolgálja.
Az init.d parancsfájljai bármelyik kézi vezérléséhez root (vagy sudo) hozzáféréssel kell rendelkeznie. Minden szkriptet parancsként futtatunk, és a parancs felépítése a következőképpen néz ki:
/etc/init.d/command OPTION
Ahol a parancs a tényleges futtatáshoz használt parancs, és az OPTION a következők valamelyike lehet:
- Rajt
- állj meg
- reload
- újrakezd
- force-reload
Leggyakrabban az indítást, a leállítást vagy az újraindítást használja. Tehát ha meg akarja állítani a hálózatot, akkor kiadhatja a következő parancsot:
/etc/init.d/networking stop
Vagy ha módosít egy hálózatot, és újra kell indítania, akkor ezt a következő paranccsal teheti meg:
/etc/init.d/networking újraindítás
Ebben a könyvtárban a leggyakoribb init szkriptek vannak:
- hálózatba
- samba
- apache2
- ftpd
- sshd
- galambdúc
- mysql
Természetesen előfordulhat, hogy a könyvtárban gyakrabban használt szkriptek vannak - ez attól függ, hogy telepítette-e. A fenti lista egy Ubuntu Server 8.10 telepítéséből származik, így a szokásos asztali telepítéshez kevesebb hálózati típusú szkript lenne.
De mi van az /etc/rc.local-val?
Van egy harmadik lehetőség, amelyet szoktam használni. Ez az opció az /etc/rc.local szkript. Ez a fájl az összes többi init szintű szkript futtatása után fut, tehát biztonságos különféle parancsok megadása, amelyeket indításkor ki kellett adnia. Sokszor a szkriptbe illesztési utasításokat teszek például az nfs-re. Ez szintén jó hely a "hibaelhárítási" parancsfájlok beillesztésére. Például, amikor volt egy gépem, amely valamilyen okból úgy tűnt, hogy a samba nem akarja elindulni. Még utólagos ellenőrzés is, hogy megbizonyosodjon arról, hogy a Samba démon beállítva-e az indításkor történő inicializáláshoz. Tehát ahelyett, hogy az összes időmet ezzel előzőleg eltöltöttem volna, egyszerűen feltettem a sort:
/etc/init.d/samba start
az /etc/rc.local szkriptben és Samba úgy viselkedett, mint egy varázsa. Végül visszajövök, és gondot okozhatnék a kérdésről.
Végső gondolatok
A Linux rugalmas. A Linux annyira rugalmas, hogy szinte elkerülhetetlenül számos módon megoldható egyetlen probléma. A rendszerszolgáltatás indítása az egyik ilyen probléma. Az /etc/init.d rendszer (valamint az /etc/rc.local ) segítségével biztos lehet benne, hogy a szolgáltatás elindul.