Linux démon
Mi az a démon?
A démon egyfajta program UNIX-szerű operációs rendszeren, amely a háttérben, észrevétlenül fut, ahelyett, hogy a felhasználó közvetlenül hozzáférne. Megvárja, hogy egy adott állapot vagy esemény megjelenése kiváltsa.
A UNIX-szerű rendszerek jellemzően számos démont hajtanak végre, elsősorban a hálózat más rendszerein keresztüli szolgáltatáskérések fogadására, hardveres tevékenységre, valamint más programokra való reagálásra.
Példák azokra a feltételekre vagy műveletekre, amelyek aktiválhatják a démonokat a tevékenységben, lehet egy adott dátum vagy időpont, egy leírt időintervallum áthaladása, egy adott kommunikációs vonalról létrehozott webes kérés vagy e-mail fogadása, valamint egy adott könyvtárba kerülő fájl.
Nem kötelező egy állapot vagy cselekvés elkövetőjének tudnia, hogy a démon figyel.
A programok azonban gyakran csak azért hajtanak végre egy műveletet, mert tudják, hogy az implicit módon felkelti a démont.
A démont háttérfolyamatoknak is nevezik. Ez egy UNIX vagy Linux program, amely a háttérben fut. Szinte minden démon tartalmaz olyan neveket, amelyek „d” betűvel végződnek. Például az sshd, ez kezeli az SSH távoli elérési kapcsolatokat, vagy az Apache szervert kezelő httpd démon. A Linux gyakran az induláskor elindítja a démonokat.
A /etc/init.d könyvtárban különféle shell-szkriptek vannak elmentve. Ezeket a szkripteket démonok indítására és leállítására használják.
Linux folyamatok
Általában a démonokat folyamatként példányosítják. Ezek a folyamatok egy program futó vagy végrehajtó példányai. A folyamatokat az operációs rendszer magját képező kernel kezeli, és hozzárendeli az összes speciális folyamatazonosító számot.
A Linuxban főként három általános folyamattípus létezik, amelyek a következők:
- Batch
- Interaktív
- Démon
A kötegelt folyamat folyamatsoron keresztül történik, és nem kapcsolódik a parancssorhoz. Ezek a folyamatok kiválóan alkalmasak ismétlődő műveletek elvégzésére, ha a rendszer kihasználtsága alacsony.
Az interaktív folyamatot a felhasználó interaktívan hajtja végre a parancssorban.
A démont egy olyan rendszer azonosítja, mint azok a folyamatok, amelyek szülőfolyamata egy PID-t tartalmaz.
Mindig ez határozza meg a folyamat beindítását. Az init folyamat az a kezdeti folyamat, amely egy Linux rendszer indításakor indul el, és a rendszer felett marad a rendszer leállításáig.
Az init bármilyen típusú folyamatot elfogadhat, amelynek szülőfolyamata leáll vagy elhal anélkül, hogy megvárná az utódfolyamat állapotát.
Tehát a démon indításának alapvető technikája a kétszeri vagy egyszeri osztás vagy elágazás, valamint lehetővé teszi a szülő folyamatok leállását, miközben a gyermekfolyamat elkezdi végrehajtani általános funkcióját.
A démonok története
Néhány démont a System V init szkriptjei tesznek közzé. Ezek olyan szkriptek vagy rövid programok, amelyek automatikusan végrehajthatók, ha a rendszer elindul. Időközönként reprodukálhatók, vagy fennmaradhatnak a munkamenet időtartama alatt.
Most több démon csak szükség szerint indul el, és egy démon (xinetd) által a folyamatos végrehajtás helyett. A xinetd TCP/IP szuperkiszolgálóként ismert.
Az induláskor elindul, és figyel a konfigurációs fájlban felsorolt folyamatokhoz, például az /etc/xinetd.conf vagy /etc/inetd.conf különböző portokra.
Manuálisan is elindítható néhány démon, amelyeket az alkalmazási programok és az operációs rendszer indít el. Minden démonnak van egy egyedi parancsfájlja több UNIX-szerű operációs rendszerben, beleértve a Linuxot is, amellyel újraindítható és leállítható.
Ezeknek a szkripteknek a kezelése futási szintek szerint történik. A futási szint egy rendszer működési vagy konfigurációs állapotaként definiálható, amely csak néhány kiválasztott folyamatot tesz lehetővé. Egy külön futási szintről való indulás segíthet bizonyos problémák vagy problémák megoldásában, beleértve a rendszerhibák kijavítását.
A démonok kulcspontjai
A démonok néhány fontos kulcspontját az alábbiakban ismertetjük:
- A démon szó a görög módszertani démon szóból származik. Ezek olyan természetfeletti lények voltak, amelyek halandók és istenek között fekszenek, és egyedülálló hatalommal vagy tudással rendelkeztek.
- 1963-ban a démon kifejezést kezdetben rendszerkontextusban használták az úttörő MAC projektben, az IBM 7094 segítségével.
- Maxwell termodinamika és fizika démonja ihlette, amely egy absztrakt ágens volt, amely különböző sebességű molekulákat támogat, és fáradhatatlanul dolgozott a háttérben.
- Ezt követően a kifejezést a háttér folyamatainak leírására használták, amelyek fáradhatatlanul dolgoztak az implementációs rendszer munkájában.
- Az első démon számítógép egy olyan program volt, amely automatikusan szalagos biztonsági másolatot készített.
- Ezt a kifejezést a számítógépes használatra használták. Ez a Disk and Execution MONitor rövid formája volt.
- A Microsoft Windows operációs rendszeren különféle programok démonoknak hívják a szolgáltatásokat. Azonban néha a démon szót is alkalmazzák ezekkel a rendszerekkel.
Démonok megvalósítása
Unix, mint a Systems
A Unix-szerű rendszer folyamata démon, ha a szülő folyamata meghal, és ezt a démont az init folyamatnak (1. számú folyamat) nevezik ki szülőfolyamatnak, és szigorúan technikai módon nem tartalmaz vezérlő terminált.
A démon azonban bármilyen háttérfolyamat lehet, függetlenül attól, hogy az init folyamat gyermeke vagy sem.
Az eljárás alapvető technikája démonná válik a UNIX-szerű rendszeren, amikor az eljárást a parancssoron keresztül vagy olyan indító szkripteken keresztül indítják el, mint a System Starter szkript vagy az init szkript, amely magában foglalja:
- A szükségtelen változók törlése a környezeten keresztül opcionálisan.
- Futás háttérfeladatként kilépéssel és elágazással. Lehetővé teszi a démon szülőjének (indítási vagy shell-folyamat) a kilépési értesítések fogadását és a normál végrehajtás folytatását.
- Leválasztás a meghívó szakaszon keresztül, általában egyedi művelettel, setsid():
- Disszociáció a tty vezérlésen keresztül.
- Újabb munkamenet készítése és a munkamenet vezetőjévé válás.
- A folyamatcsoport vezetőjévé válás.
- Ha a démon meg akar bizonyosodni arról, hogy nem örököl egy új tty vezérlést, akkor kiléphet és újra elágazhat. Ez azt jelenti, hogy az új szekcióban már nem lesz munkamenet-vezér, és nem örökölhet semmilyen tty-vezérlést.
- Az aktuális munkakönyvtár beállítása gyökérkönyvtárként, hogy a folyamat ne vegyen fel olyan használatban lévő könyvtárat, amely esetleg egy csatlakoztatott fájlrendszeren található.
- Az umask 0-ra történő módosítása a create(), az open() és az operációs rendszer egyéb hívásainak engedélyezéséhez, hogy megkönnyítse az engedélymaszkjukat, és ne hagyatkozzon az összes hívó umask-ra.
- A szabványos adatfolyamok (stderr, stdout, stdin) 0, 1 és 2 fájlleíróinak átirányítása egy naplófájlba vagy a /dev/null fájlba, és a szülőfolyamaton keresztül beszerzett összes többi leíró fájl bezárása.
Amikor a folyamatot bármely szuperkiszolgáló démon elindítja, például a systemd, a launchd vagy az inetd, a szuperszerver végrehajtja ezeket a funkciókat ehhez a folyamathoz, kivéve azokat a régi típusú démonokat, amelyek nem alakultak át a systemd alatti végrehajtásra, és amelyeket többszálú és Type=forking datagram szerverként írnak le. inetd esetén.
MS-DOS
A démonszerű program terminate and stay rezidens (röviden TSR) szoftverként futott a Microsoft DOS platformon belül.
Windows NT
A Windows szolgáltatások néven ismert programok ezeknek a démonoknak a funkcióit valósítják meg a Microsoft Windows NT rendszereken. Folyamatként futnak, és általában nem működnek együtt az egérrel, a billentyűzettel és a monitorral. Előfordulhat, hogy az operációs rendszer segítségével indíthatók el a rendszerindításkor.
A Windows-szolgáltatásokat manuálisan állítja le, indítja el és konfigurálja a Vezérlőpult (dedikált konfigurációs/vezérlőprogram), a PowerShell parancsfájlrendszer, vagy a net stop és net start parancsok, a szolgáltatásvezérlő-kezelő szolgáltatásvezérlő eleme.
Bármely Windows-alkalmazás azonban nem csak szolgáltatásként képes végrehajtani a démonok feladatait, és néhány Windows-démon tartalmazza a normál folyamatként történő végrehajtás lehetőségét.
Klasszikus macOS és Mac OS
A különféle választható szolgáltatásokat és szolgáltatásokat megkönnyítették azok a rendszerindításkor betöltött fájlok, amelyek újraépítik az operációs rendszert a klasszikus Mac OS rendszeren.
Ezeket vezérlőpaneleknek és rendszerbővítményeknek hívták. A szabványos Mac OS későbbi verziói ezeket kibővítették teljesen kifinomult arctalan háttéralkalmazásokkal.
Ezek az alkalmazások normál alkalmazások, amelyek a háttérben futnak. Ezeket továbbra is rendszeres rendszerbővítményekként határozták meg a felhasználó számára.
A macOS egy Unix rendszer, és démonokat használ. A macOS a szolgáltatás kifejezését alkalmazza a szolgáltatások menüben kiválasztott funkciókat megvalósító szoftverek kijelölésére, ahelyett, hogy ezt a kifejezést alkalmazná, ahogyan a Windows a démonok esetében teszi.
Tipikus démonfüggvények
- Ütemezett műveletek végrehajtása, például a cron.
- Figyelemmel kíséri a rendszereket, például a RAID-tömböt vagy a merevlemez állapotát.
- Válaszoljon a hálózat kérésére, és nyissa meg a hálózati portot (például a 80-as portot).
Hogyan indítsuk el, indítsuk újra vagy állítsuk le a démonokat egy shell prompt esetén?
Alkalmaznunk kell a szolgáltatási parancsaikat, az alábbiak szerint:
service daemon-name-here start service daemon-name-here stop service daemon-name-here restart
A következő példában csillagok, újraindítás és leállítás.
service httpd start service httpd stop service httpd restart
Hogyan ellenőrizzük az egyes futó démonok listáját?
Minden telepített démon állapotának ellenőrzéséhez írja be:
service - -status-all
Démonunk tervezése
Milyen démon fog csinálni?
A démonnak egy dolgot kell megvalósítania, és azt jól kell végrehajtania. Ez az egyetlen dolog lehet olyan bonyolult, mint sok postafiók kezelése egynél több domainen, vagy olyan egyszerű, mint a sendmail felhívása az adminisztrátornak való postázáshoz és a jelentés megadásához.
Jobb elképzelésünk van arról, mit kell tennie egy démonnak. Néhány másik démonnal fog kölcsönhatásba lépni, amelyeket megadhatunk vagy sem. Ez is valami más, amit meg kell vizsgálni.
Kölcsönhatás
A démonok soha nem kommunikálhatnak közvetlenül a felhasználóval terminálon keresztül. Minden kommunikáció néhány interfész-soron megy keresztül (amit lehet, hogy nem kell megadnunk), ami lehet olyan bonyolult, mint a GUI+GTK, vagy olyan egyszerű, mint egy egyedi készlet.
A démon alapvető felépítése
A Daemonnak végre kell hajtania néhány alacsony szintű házimunkát, hogy felkészítse magát az igazi munkára, amikor elindul. Ez magában foglal néhány lépést, amelyek a következők:
- Szuperfolyamat leállítása (szülőfolyamat)
- Fájl mód maszkjának módosítása (umask)
- Nyissa meg a naplókat az íráshoz
- Készítsen egy speciális munkamenet-azonosítót (röviden SID)
- Módosítsa a munkakönyvtárat (aktuális) biztonságos helyre
- Zárja be a fájl osztályozási leíróit
- Írja be az eredeti démon kódot