Alapjai írása rc
Ismeretek gyakorlati alkalmazása a alrendszer rc.d. származó BSD hivatalos dokumentáció nem mindig egyszerű dolog egy kezdő számára. Ebben a cikkben megnézzük néhány gyakori módja, hogy indítsa el a forgatókönyvet, megmutatja, hogyan kell használni a lehetőségeket rc.d Minden ilyen esetben, és beszéljétek meg, hogyan működik. A felülvizsgálat megadja a nyugalom az rc.d alrendszer további eredményes fejlődését.
Egyszer BSD volt szilárd startup script / etc / rc. Az úgynevezett init (8) a rendszer indításakor, és a szkript minden feladatot a felhasználói szinten (userspace) szükséges többfelhasználós: ellenőrzése és szerelési fájlrendszerek, hálózati konfiguráció, az induló démonok és hasonlók. De a feladatok listáját nem azonos a különböző rendszerekben, rendszergazdák kell egy finomhangolást. Kivéve bizonyos pillanatokban, / etc / rc-ben könnyen módosítható, és nagyon lelkes emberek gyakran szívesen módosíthatja.
A fő probléma az e monolitikus megoldás az volt, hogy nem nyújt semmilyen mechanizmus szabályozza az egyes komponensek futtatni a szkriptet / etc / rc. Például a / etc / rc nem kezdhette újra külön szolgáltatás. A rendszergazda kézzel kellett találni a folyamat azonosítóját, hogy megöli a folyamat, várja meg a tényleges befejezését a folyamat, hogy megtalálják a / etc / rc paramétereket, amelyekkel a folyamat elkezdődött, manuálisan indítsa el a folyamatot a parancssorból. Ez műveletsornak még zavaros és bonyolult, ha indítsa újra a szolgáltatást vezetett több folyamat vagy további lépéseket igényelnek az indítás során. Dióhéjban, a monolit startup script nem tudja végrehajtani az alapvető feladata, hogy a szkriptek -, hogy rendszergazda életét.
Később kísérletet tettek, hogy ossza meg a / etc / rc részéről a céllal, hogy néhány, a legfontosabb eleme. Egy csodálatos példa erre - a script / etc / netstart. hálózatinicializáció munkát. Ez a script lehetővé teszi, hogy futtatni a hálózati egyfelhasználós módban, de ez nem lehet teljesen integrálódott a rendszer indításakor, részeként a kódot, amelyek relevánsak a hálózathoz kell váltogatni alkatrészek nem tartoznak a hálózathoz. Emiatt a script / etc / netstart végül mutálódott /etc/rc.network. Az utolsó már nem teljesen független script, áll a nagy, egymással összefüggő feladatokat írt sh (1). amely viszont, az úgynevezett A / etc / rc különböző szakaszaiban rendszer indításakor. Ugyanakkor mivel a start-up szkript válik közöttük voltak komplex kapcsolatok „” kvázi-moduláris 'dob rendszer még bonyolultabb lett, mint egy monolit script / etc / rc.
Anélkül, hogy egyszerű és átlátható alrendszer indítószkriptekkel még kevesebben vannak igényeinek kielégítésére a gyorsan fejlődő BSD-rendszerek. Nyilvánvalóvá vált, hogy szükség van az alapvető lépéseket, amelyek a modularitás és a rugalmasság rc rendszer indításakor. Emiatt, valamint a BSD rc.d Start rendszert hoztak létre Felismerte Luke Myubern vált szülőket (Lukács Mewburn) és a közösség NetBSD. Később, a rendszer behozott FreeBSD. Neve arra utal, hogy a helyét a rendszer szkriptek egyes szolgáltatások, amelyek székhelye /etc/rc.d. Egy kicsit később nézzük meg az egyes komponensek a rc.d rendszer, és hogyan az egyes szkriptek futnak.
Az általános elképzelés mögött BSD rc.d Start rendszer moduláris és újrahasznosítható kódot. A nagyfokú modularitás azt jelenti, hogy minden egyes „” „” szolgáltatás, például egy démont, vagy egyszerű feladatok segítségével a saját script írt sh (1). hogy elindíthatja, leállíthatja, indítsa újra a szolgáltatást, és ellenőrizze annak állapotát. Az alapértelmezett művelet van kiválasztva egy script parancs sorokat. / Etc / rc valamint mielőtt a fő boot szkript, de most már nem teljesíti az összes feltöltési folyamatot és okozhat némi szkriptek a kezdet. Ugyanilyen egyszerűen a rendszer leáll - fut ugyanazokat a script, de a stop érv. Ez a művelet hajtódik végre a vezérlő script /etc/rc.shutdown. Figyeljük meg, hogy mennyire jól a rendszer fut megfelelően a hagyományos Unix elve -, hogy egy sor kis speciális eszközök, amelyek mindegyike célja, hogy megoldja egy adott feladatot. Kód újrafelhasználásának olyan megközelítés, ami azt jelenti, hogy a gyakran használt műveleteket hajtják végre, mint a funkciókat a sh (1) és integrálni kell az / etc / rc.subr. Most egy tipikus forgatókönyvet állhat csak néhány sornyi kódot a sh (1). És végül egy nagyon fontos része a rc.d alrendszer - rcorder program (8). hogy ami a script / etc / rc futtatni az egyes szkriptek egy adott sorrendben alapuló függőségeket közöttük. Különösen ez is segít a forgatókönyvet /etc/rc.shutdown. mert a megfelelő sorrendben a befejezése az ellenkező sorrendben a rendszer indításakor.
Számos követelmények teljes megértése a bemutatott anyag. Először is meg kell ismernie a programozás programozási nyelv sh (1). Másodszor, meg kell érteni, hogy a rendszer végzi el a kezdő és záró akciók a felhasználói térben leírt rc (8).
Csak egy gyors megjegyzés előtt. Ne félj a környezeti változó $ szerkesztő.
Annak érdekében, hogy írni minőségi rc.d szkriptek rendszer szolgáltatásai, amit meg kell válaszolni az alábbi kérdésekre:
Ez a szolgáltatás kötelező, vagy nem?
A szkript fogja szolgálni csak egy program (démon), vagy elvégzi komplexebb feladatokat?