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.
x vagy c++
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.
bináris fa postorder bejárása
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.
tömblistát rendezni
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.
c program kétdimenziós tömbhöz
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.
string tömbhöz java
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