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

Démonszolgáltatások listája Unix és Linux rendszerekhez

    anakron: Indításkor késleltetett cron műveleteket hajt végre. amd: Az Auto Mount Daemon rövidítése. stb: A sorban lévő feladatokat hajtja végre az eszköz alkalmazásával. apmd: Az Advanced Power Management Daemon rövidítése. crond: Ez egy feladatütemező démon. autofs: Segít az automounter démonnak, lehetővé téve az eszközök leválasztását és igény szerinti csatlakoztatását. dhcpd: A Dynamic Host Configuration Protocol rövidítése. Ezenkívül ez egy Internet Bootstrap Protocol Server. cupsd: A CUPS nyomtatódémon rövidítése. ftpd: Az FTP Server Daemon rövidítése. httpd: Ez egy webszerver démon. kapuzott: Képes irányítani az egpup és a routed-ot helyettesítő démonokat és egynél több útválasztási protokollt kezelni. lpd: A Line Printer Daemon rövidítése. imapd: Ez az imap szerver démon. inetd: Az Internet Superserver Daemon rövidítése. memchached: Ez egy memórián belüli elosztott objektum-gyorsítótár démon. mysql: Ez egy adatbázis-kiszolgáló démon. szerelve: Ez egy mount démon. nfsd: A Network File Sharing Daemon rövidítése. nevezett: Ez egy DNS-kiszolgáló démon. nflock: Az nfs fájlok zárolási szolgáltatásainak elindítására és leállítására szolgál. ntpd: A Network Time Protocol szolgáltatás démon rövidítése. nmbd: A Network Message Block Daemon rövidítése. postgresql: Ez egy adatbázis-kiszolgáló démon. postfix: Ez egy levéltovábbítási ügynök, és a Sendmail helyettesítésére szolgál. rpcbind: A Remote Procedure Call Bind Daemon rövidítése. irányítva: Kezeli az útválasztó táblákat. smbd: Ez egy Samba démon. levél küldés: Ez egy levéltovábbítási ügynök démon. smtpd: A Simple Mail Transfer Protocol Daemon rövidítése. tintahal: Ez egy weboldal gyorsítótárazó proxyszerver-démon. snmpd: A Simple Network Management Protocol Daemon rövidítése. szinkronizálás: Különféle fájlrendszereket képes szinkronizálni a rendszermemóriával együtt. sshd: Ez egy Secure Shell Server démon. syslogd: A rendszernaplózó démon rövidítése. telnetd: Ez egy Telnet szerver démon. tcpd: Van egy szolgáltatásburkolója, amely korlátozhatja a jogosultságot a hosts.deny és a hosts.allow inetd-alapú szolgáltatásokra. vsftpd: A Very Secure FTP Daemon rövidítése. webmin: Ez egy webalapú adminisztrációs szerver démon. xntd: Ez egy hálózati időkiszolgáló démon. xinetd: Ez egy továbbfejlesztett internetes szuperkiszolgáló démon.