Mi az upstart
A cikk megírásának eszméje majdnem ugyanabban az időben jelent meg meglepett pillantással a monitoron és egy bizonytalan zúgolódáson: "És hol van / etc / inittab?". Nem emlékszem pontosan, miért kellett tudnom, hogy az Ubuntu 7.10-es szintem - a Gutsy Gibbon betöltött. Nem találtam a hagyományos / etc / inittab-t, egy ideig kábult voltam. Csak akkor, amikor kiválasztottam a google-t, megtaláltam a választ az én, mint kiderült, egy egyszerű kérdés.
Hagyományos init
Általánosságban, ha megpróbálja leírni a Linux betöltésének folyamatát néhány szóval, akkor valami ilyesmit fog szólni. Miután bekapcsolta a számítógépet, a kernel betöltéséhez a memóriába, a root fájlrendszert, és inicializálja a mérőeszköz további átadása a vezérlés átadódik az operációs rendszer betöltése egy különleges démon init. Az init feladat minden egyéb, az operációs rendszer megfelelő működéséhez szükséges folyamat megkezdése. Elvileg az init kernel paramétert a kernel fut, amit szeretünk (néhány speciális Linux disztribúciók és kész), de szinte minden hagyományos disztribúció futtatni init daemon. Az ötlet nagyon egyszerű és klasszikus. Minek core alkalmazások elindítása szaros felhők, ha elég ellátás csak a dob egy folyamat, amely megoldja a további terhelés / üzemeltetés / stop rendszerrel.
A hagyományos init daemon 7 úgynevezett "futási szintet" határoz meg. Mindegyik ilyen szintre vonatkozóan meg kell határozni egy nagyon specifikus rendszer-szolgáltatáskészletet, amely a rendszerindításkor megkezdődik, parancsok fogadására a működés közben, és meg kell állítani a rendszer újraindítása vagy kikapcsolása során.
- 0 - a rendszer teljesen leállt
- 1 vagy S - egyfelhasználós mód
- 2. 5 - többfelhasználós módok
- 6 - indítsa újra a rendszert
Meg kell jegyezni, hogy a fent felsorolt lista csak hagyomány. Vagyis senki sem akadályozza meg minden szinten, hogy meghatározza a szolgáltatásait és élvezze a saját örömét.
Indítás után az init daemon elolvassa a konfigurációt az / etc / inittab fájlból, és ennek a konfigurációnak köszönhetően már elkezdődik a közvetlen tevékenység. Nagyjából elmondható, hogy az / etc / inittab fájl utasításokat tartalmaz arra vonatkozóan, hogy az init démon mit kell tennie minden szinten.
Egy időben az / etc / inittab fájl formátuma túl öregnek bizonyult, és leállította a fejlesztők által megkövetelt funkcionalitást, miután a /etc/init.d könyvtár megjelent Linux alatt, amely tartalmazza az /etc/init.d/rc fájlt
shell parancsfájlokat, amelyek futtatni mindent, amire szüksége van, és az / etc / initttab fájl elkezdte végrehajtani az alapértelmezett szintű szám tárolását és a /etc/init.d/rc fájl hívását a rendszer szintjének megváltoztatásakor.
A /etc/init.d könyvtár tartalmazza a rendszer szolgáltatások indítási / újraindítási / leállítási parancsfájljait. Mindezeket a parancsfájlokat különböző paraméterekkel lehet hívni, amelyek közül a paraméterek elindítása és leállítása kötelező. Például el kell indítanod az sshd kiszolgálót - csak a /etc/init.d/sshd parancsot adod meg, és a shell parancsfájl mindent megtesz a szolgáltatás elindításához. Meg kell állnod? Kérjük: /etc/init.d/sshd stop. Az init daemon maga nem működik közvetlenül a szkriptekkel, de a következő módon.
Számos könyvtár van /etc/rcX.d, ahol X a rendszer működési szintje. Mindegyik könyvtár szimbolikus hivatkozásokat tartalmaz a /etc/init.d könyvtárból származó szkriptekhez. Nagyon kényelmes, mert ha módosítani szeretné a szkriptet, akkor csak egy helyen.
A rendszer különböző szintjei közötti váltáshoz van egy telinit segédprogram, amely meg tudja mondani az init démonnak, hogy melyik szintre kell menni.
Tehát, elvben, egyszerű módon és a Linux operációs rendszer él az indulástól a leállításig. Előzetesen elnézést kérek az ívekről az anyag bemutatásának stílusáról. Az érdeklődők részletesebben megismerkednek az init démon témájával, amelyet az init (8), az inittab (5), a telinit (8), a futási szint (8) man oldalaira küldenek.
Mi az Upstart és mi a jobb?
Mielőtt továbblépnék, szeretném megjegyezni, hogy a Upstart terminológiájában két fogalom létezik: a szolgáltatás és a feladat. A legfontosabb különbség a szolgáltatás és a feladat között az, hogy a szolgáltatás hirtelen felmondása esetén újraindul, és a feladat nem. A Upstart főbb jellemzőinek rövid leírása a projekt honlapján:
- a feladatok és szolgáltatások indítása és leállítása események használatával történik
- A szolgáltatás vagy feladat indításának / leállításának pillanatában esemény keletkezik
- események a rendszer bármely folyamatából származhatnak
- amikor a szolgáltatás leesik, automatikusan újraindulhatnak
- a kétirányú adatcserét az init démonnál a futó szolgáltatások állapotainak lekérdezése, leállásának okainak feltárása és hasonlók.
Az olyan funkcióktól, amelyet csak az Upstart jövőbeli verzióiban terveztek meg a webhelyen, a következő pontokat figyelték meg:
- események generálása meghatározott időintervallumban, vagy ütemező használatával
- események generálása válaszként a fájlok / könyvtárak tartalmának megváltozására
- a démonok felügyelete és újraindítása, amelyek folyamatai elválnak a szüleiktől
- lehetőség a hátrányos helyzetű felhasználók számára saját szolgáltatásaik létrehozására és kezelésére
- kommunikáció az init démonnal a DBUS használatával
UpStart telepítés
Először is ellenőrizzük, hogy rendszerünk megfelel-e a követelményeknek:
Konfigurálja a forráskódot a fordításhoz:
Munka leírása
A Upstart sikeres telepítése után létre kell hoznia a munkameghatározásokat, hogy a rendszer indítható legyen. Más szóval, a feladat pontosan az, amit Upstart működtet a munkájában. Annak érdekében, hogy gyorsan megértsük, hogy ez hogyan történik, és hogy úgy mondjam, hogy megnézzük magunkat, letölthetünk egy mintafelvételi archívumot. Előfordulhat, hogy kicsit módosítani kell őket, hogy megfelelően működjenek a rendszerével, de a rendszer kezdeti konfigurációjára és a sikeres első futtatásra az archívumban példák. Minden példát kicsomagolni kell az /etc/event.d könyvtárban. Ebből fakad, hogy a Upstart mindent megtesz, amire szükséged van a munkára (az / etc / inittab-ról az összes barátságosan elfelejtett). A "Upstart on Other Distributions" részben ismertetett pontok kivételével az /etc/rcX.d könyvtárak összes szkriptje változatlan marad. mindenkinek meg kell keresnie.
Végső löket és újraindítás
Amikor minden készen áll, próbálhatja újraindítani a Linuxot és megnézni, hogy mit tettél. Az újraindítás előtt ne felejtsük el ellenőrizni a rendszermag által a bootloader által átadott init paraméter értékét, ha Upstart telepítette az init futtatható fájlt egy másik könyvtárba a / sbin könyvtárból. Általánosságban véve elvben javasoljuk, hogy először ne cserélje le a standard sysvinit init Upstart programot, hanem telepítse azt egy másik könyvtárba, és először alaposan tesztelje mindent az init kernel paraméterrel.
Feladatok írása
Azoknak, akiknek ki kell terjeszteniük a szabványos feladatokat, vagy csak azon gondolkodniuk kell, hogy mindez meg van írva és dolgozik.
Egyszerre felhívom a figyelmet arra a tényre, hogy eddig a Upstart munkájának fájlformátuma még mindig nyers, és a jövőben megváltozhat, amint arról a webhelyen is szerepel. Ezért készen áll arra, hogy merüljön el az új verziók dokumentációjának elolvasásához és a korábban írt feladatok igazításához.
Minden állomány az /etc/event.d könyvtárban található fájlokban található. A fájlneveknek meg kell egyezniük a munka nevével, és a fájlok maguk nem lehetnek végrehajthatók.
exec és script
Minden feladatnak script- vagy exec-rekordnak kell lennie. Ez a bejegyzés meghatározza a feladat futtatásának módját. exec parancsot akkor használjuk, amikor egy programot futtat a fájlrendszerből, és további paramétereket ad meg a hívott programnak.