logo

Linux Daemon

Mikä on demoni?

Daemon on eräänlainen ohjelma UNIX-tyyppisessä käyttöjärjestelmässä, joka suoritetaan taustalla huomaamattomasti, sen sijaan, että käyttäjä olisi suoraan käytettävissä. Se odottaa, että se laukaisee tietyn tilan tai tapahtuman.

Tyypillisesti UNIX-tyyppiset järjestelmät suorittavat lukuisia demoneja, ensisijaisesti palvelupyyntöjen vastaanottamiseksi verkon muiden järjestelmien kautta, laitteistotoiminnalle ja myös muille ohjelmille vastaamiseksi.

Esimerkkejä ehdoista tai toimista, jotka voivat aktivoida demoneja toimintaan, voivat olla tietty päivämäärä tai aika, kuvatun aikavälin kuluminen, tietystä viestintälinjasta luodun verkkopyynnön tai sähköpostin vastaanottaminen ja tiedoston saapuminen tiettyyn hakemistoon.

uri vs url

Ei ole pakollista, että tilan tai toiminnan tekijän tiedetään, että demoni kuuntelee.

Ohjelmat kuitenkin usein toteuttaisivat toiminnon vain siksi, että niiden tiedetään herättävän demonin implisiittisesti.

Daemonia kutsutaan myös taustaprosesseiksi. Se on UNIX- tai Linux-ohjelma, joka suoritetaan taustalla. Melkein jokainen demoni sisältää nimiä, jotka päättyvät d-kirjaimeen. Esimerkiksi sshd, tämä hallitsee SSH-etäkäyttöyhteyksiä tai httpd-demonia, joka hallitsee Apache-palvelinta. Usein Linux käynnistää demonit käynnistyshetkellä.

Erilaisia ​​shell-skriptejä on tallennettu hakemistoon /etc/init.d. Näitä skriptejä käytetään demonien käynnistämiseen ja pysäyttämiseen.

Linux-prosessit

Yleensä demonit instantoidaan prosesseina. Nämä prosessit ovat ohjelman käynnissä olevia tai suorittavia esiintymiä. Prosessia käsittelee ydin, joka on käyttöjärjestelmän ydin ja se antaa kaikki erityiset prosessin tunnistenumerot.

Linuxissa on pääasiassa kolme yleistä prosessityyppiä, jotka ovat seuraavat:

  • Erä
  • Interaktiivinen
  • Daemon

Eräprosessi lähetetään prosessijonon kautta, eikä se liity komentoriviin. Nämä prosessit sopivat hyvin toistuvien toimintojen suorittamiseen, jos järjestelmän käyttö on vähäistä.

Käyttäjä suorittaa interaktiivisen prosessin vuorovaikutteisesti komentorivillä.

Demonin tunnistaa järjestelmä, kuten ne prosessit, joiden emoprosessi sisältää PID:n yhden.

prologin kieli

Aina se määrittää prosessin aloituksen. Init-prosessi on ensimmäinen prosessi, joka aloitetaan, kun Linux-järjestelmä käynnistetään, ja se pysyy järjestelmän päällä, kunnes järjestelmä sammutetaan.

Init voi ottaa käyttöön minkä tahansa tyyppisen prosessin, jonka pääprosessi päättyy tai kuolee odottamatta aliprosessin tilaa.

Joten perustekniikka demonin käynnistämiseksi on jakaminen tai haarautuminen kahdesti tai kerran ja myös vanhempien prosessien mahdollistaminen lopettamiseen, kun aliprosessi alkaa toteuttaa yleistä toimintoaan.

Daemonien historia

System V:n init-skriptit julkaisevat muutamia demoneita. Nämä ovat komentosarjoja tai lyhyitä ohjelmia, jotka voidaan suorittaa automaattisesti järjestelmän käynnistyessä. Ne voidaan joko toistaa tietyin väliajoin tai säilyä koko istunnon ajan.

Nyt useita demoneja käynnistetään vain tarpeen mukaan ja yhdellä demonilla (xinetd) sen sijaan, että niitä suoritettaisiin jatkuvasti. Xinetd tunnetaan nimellä TCP/IP-superpalvelin.

bash-muuttuja

Se käynnistyy aloitushetkellä ja se myös kuuntelee erilaisia ​​portteja, jotka on määritetty konfiguraatiotiedoston sisällä luetelluille prosesseille, eli /etc/xinetd.conf tai /etc/inetd.conf.

Manuaalisesti voitiin myös käynnistää muutama demoni, jotta ne voidaan käynnistää sovellusohjelmissa ja käyttöjärjestelmässä. Kaikilla demoneilla on erillinen komentosarja useissa UNIX-tyyppisissä käyttöjärjestelmissä, mukaan lukien Linux, jolla se voidaan käynnistää uudelleen ja lopettaa.

Näiden skriptien hallinta toteutetaan ajotasojen mukaan. Ajotaso voidaan määritellä järjestelmän toiminta- tai konfigurointitilaksi, joka sallii vain joidenkin valittujen prosessien olevan käytettävissä. Erilliseltä ajotasolta aloittaminen voi tukea tiettyjen ongelmien tai ongelmien ratkaisemista, mukaan lukien järjestelmävirheiden korjaaminen.

Daemonien avainkohdat

Alla on selitetty joitakin tärkeitä Daemonien avainkohtia:

  • Sana daemon on otettu kreikkalaisesta metodologiasta daemon. Nämä olivat yliluonnollisia olentoja, jotka sijaitsevat kuolevaisten ja jumalien välissä ja joilla oli ainutlaatuinen voima tai tieto.
  • Vuonna 1963 termiä daemon käytettiin alun perin järjestelmäkontekstissa uraauurtavassa MAC-projektissa IBM 7094:n avulla.
  • Se sai inspiraationsa Maxwellin termodynamiikan ja fysiikan demonista, joka oli abstrakti aine, joka tuki erinopeuksisia molekyylejä ja työskenteli taustalla väsymättä.
  • Tämän jälkeen termiä käytettiin kuvaamaan taustan prosesseja, jotka työskentelivät työkonejärjestelmän töissä väsymättä.
  • Ensimmäinen demonitietokone oli ohjelma, joka loi nauhavarmuuskopiot automaattisesti.
  • Tätä termiä käytettiin tietokoneen käytössä. Se oli Disk and Execution MONitorin lyhyt muoto.
  • Useat ohjelmat kutsuivat palveluita demoneiksi Microsoft Windows -käyttöjärjestelmässä. Sanaa daemon käytetään kuitenkin joskus myös näissä järjestelmissä.

Demonien toteutus

Unix kuten Systems

Unix-tyyppisen järjestelmän prosessi on daemon, jos sen emoprosessi kuolee ja tämä demoni on nimetty aloitusprosessiksi (numero 1 prosessi) emoprosessiksi, eikä se sisällä tiukasti teknisellä tavalla ohjaavaa päätettä.

Daemon voi kuitenkin olla mikä tahansa taustaprosessi riippumatta siitä, onko aloitusprosessin lapsi tai ei.

Proseduurin perustekniikasta tulee demoni UNIX-tyyppisessä järjestelmässä, kun toiminto aloitetaan komentoriviltä tai käynnistyskomentosarjan, kuten System Starter -komentosarjan tai init-komentosarjan, kautta:

  • Tarpeettomien muuttujien poistaminen ympäristön kautta valinnaisesti.
  • Juokseminen taustatehtävänä poistumalla ja haarautumalla. Se sallii demonin (käynnistys- tai komentotulkkiprosessin) vanhemman vastaanottaa poistumisilmoitukset ja jatkaa normaalia suoritusta.
  • Irrottaminen kutsuosan kautta, yleensä yksittäisellä toiminnolla, setsid():
    • Dissosioituminen tty-ohjauksen kautta.
    • Uuden istunnon tekeminen ja istunnon johtajaksi ryhtyminen.
    • Prosessiryhmän johtajaksi ryhtyminen.
  • Jos demoni haluaa varmistaa, ettei se peri uutta tty-ohjausta, se saattaa poistua ja haarautua uudelleen. Se tarkoittaa, että se ei ole enää istunnon johtaja uudessa istunnossa eikä se voi periä mitään tty-ohjausta.
  • Nykyisen työhakemiston asettaminen juurihakemistoksi, jotta prosessi ei ota käyttöön yhtään hakemistoa, joka saattaa olla asennetun tiedostojärjestelmän yli.
  • Muutetaan umask arvoksi 0, jotta voidaan sallia create(), open() ja muut käyttöjärjestelmän kutsut helpottaaksesi niiden lupamaskia eikä luottaa kaikkiin kutsujan umaskiin.
  • Uudelleenohjataan standardivirtojen (stderr, stdout, stdin) tiedostokuvaajat 0, 1 ja 2 lokitiedostoon tai /dev/null-tiedostoon ja suljetaan kaikki muut pääprosessin kautta hankitut kuvaustiedostot.

Kun prosessi alkaa millä tahansa superpalvelimen demonilla, kuten systemd, launchd tai inetd, superpalvelin toteuttaa kyseiset toiminnot tälle prosessille, paitsi ne vanhan tyyliset demonit, joita ei ole muunnettu suoritettaviksi systemd:ssä ja joita kuvataan monisäikeisiksi ja Type=forking-tietosäikeisiksi palvelimiksi. kun inetd.

kevät ja kevät mvc

MS-DOS

Daemonin kaltainen ohjelma suoritettiin terminate and stay resident (lyhyesti TSR) ohjelmistona Microsoft DOS -alustan sisällä.

Windows NT

Windows-palveluina tunnetut ohjelmat toteuttavat näiden demonien toiminnot Microsoft Windows NT -järjestelmissä. Ne suoritetaan prosesseina eivätkä yleensä ole vuorovaikutuksessa hiiren, näppäimistön ja näytön kanssa. Ne voidaan käynnistää käyttöjärjestelmän avulla käynnistyksen yhteydessä.

Windows-palvelut pysäytetään, käynnistetään ja määritetään manuaalisesti ohjauspaneelin (omistettu konfigurointi-/hallintaohjelma), PowerShell-komentosarjajärjestelmän tai net stop- ja net start -komennon avulla, palvelunhallinnan palvelun ohjainelementti.

Mikä tahansa Windows-sovellus voi kuitenkin toteuttaa demonin velvollisuudet paitsi palveluna, ja muutamat Windows-daemonit sisältävät mahdollisuuden suorittaa normaalin prosessin.

Klassinen macOS ja Mac OS

Käynnistyksen yhteydessä ladatut tiedostot, jotka rakentavat uudelleen käyttöjärjestelmän klassiseen Mac OS:ään, helpottivat useiden valinnaisten palvelujen ja ominaisuuksien käyttöä.

Näitä kutsuttiin ohjauspaneeleiksi ja järjestelmälaajennuksiksi. Tavallisen Mac OS:n myöhemmät versiot laajensivat näitä täysin kehittyneillä kasvottomilla taustasovelluksilla.

Nämä sovellukset ovat tavallisia sovelluksia, jotka suoritetaan taustalla. Nämä määriteltiin edelleen käyttäjän tavallisiksi järjestelmälaajennuksiksi.

macOS on Unix-järjestelmä ja se käyttää demoneita. MacOS käyttää palvelun termiä määrittämään ohjelmistoja, jotka toteuttavat palveluvalikon kautta valittuja toimintoja sen sijaan, että käyttäisivät kyseistä termiä kuten Windows tekee demoneille.

Tyypillisiä demonitoimintoja

  • Suorita ajoitetut toiminnot, kuten cron.
  • Tarkkaile järjestelmiä, kuten RAID-ryhmää tai kiintolevyn kuntoa.
  • Vastaa verkon pyyntöön ja avaa verkkoportti (kuten portti 80).

Kuinka käynnistämme, käynnistämme uudelleen tai pysäytämme demonit komentotulkkikehotteelle?

Meidän on käytettävä heidän palvelukomentojaan, kuten alla:

 service daemon-name-here start service daemon-name-here stop service daemon-name-here restart 

Seuraavassa esimerkissä tähdet, uudelleenkäynnistys ja pysäytys.

 service httpd start service httpd stop service httpd restart 

Kuinka tarkistamme jokaisen käynnissä olevan demonin luettelon?

Tarkista jokaisen asennetun demonin tila kirjoittamalla:

 service - -status-all 

Suunnittelemme Daemoniamme

Mitä demoni aikoo tehdä?

Daemonin on toteutettava yksi asia ja toteutettava se hyvin. Tämä yksittäinen asia saattaa olla yhtä monimutkaista kuin useiden postilaatikoiden käsitteleminen useammassa kuin yhdessä verkkotunnuksessa tai yhtä helppoa kuin soittaminen sendmailiin lähettääksesi sen järjestelmänvalvojalle ja määrittääksesi raportin.

Meillä täytyy olla parempi käsitys siitä, mitä demonin on joka tapauksessa tehtävä. Se tulee olemaan vuorovaikutuksessa muutamien muiden demonien kanssa, jotka voimme määrittää tai emme. Se on myös muuta tutkittavaa.

jvm

Vuorovaikutus

Daemonit eivät saa koskaan olla yhteydessä käyttäjän kanssa suoraan päätelaitteen kautta. Jokainen viestintä kulkee muutaman käyttöliittymälajin kautta (jotka meidän ei ehkä tarvitse määrittää), mikä voi olla yhtä monimutkaista kuin GUI+GTK tai yhtä helppoa kuin yksittäinen joukko.

Daemonin perusrakenne

Daemonin on suoritettava muutama matalatasoinen kotityö, jotta se voi valmistautua oikeaan työhön sen käynnistyessä. Se sisältää joitakin vaiheita, jotka ovat seuraavat:

  • Lopeta superprosessi (emoprosessi)
  • Muokkaa tiedostotilan maskia (umask)
  • Avaa lokit kirjoittamista varten
  • Tee erityinen istuntotunnus (lyhyesti SID)
  • Muuta työhakemisto (nykyinen) turvalliseen paikkaan
  • Sulje tiedoston luokittelukuvaajat
  • Syötä alkuperäinen demon-koodi

Luettelo demonipalveluista Unixin ja Linuxin kaltaisille järjestelmille

    anakroni:Se suorittaa viivästetyt cron-toiminnot käynnistyshetkellä.amd:Se tarkoittaa Auto Mount Daemonia.jne:Se suorittaa työt jonossa käyttämällä työkalua.apmd:Se tulee sanoista Advanced Power Management Daemon.crond:Se on tehtävien ajoituksen daemon.autofs:Se auttaa automounter-demonia mahdollistamaan laitteiden irrottamisen ja liittämisen tarpeen mukaan.dhcpd:Se tarkoittaa Dynamic Host Configuration Protocol -protokollaa. Lisäksi se on Internet Bootstrap Protocol Server.cupsd:Se tarkoittaa CUPS-kirjoitindemonia.ftpd:Se tulee sanoista FTP Server Daemon.httpd:Se on Web Server Daemon.aidattu:Se voi reitittää demonit, jotka korvaavat egpupin ja routedin, ja hallita useampaa kuin yhtä reititysprotokollaa.lpd:Se tulee sanoista Line Printer Daemon.imapd:Se on imap-palvelimen demoni.inetd:Se tulee sanoista Internet Superserver Daemon.memchached:Se on muistissa hajautettu objektin välimuistiin tallentava demoni.mysql:Se on tietokantapalvelimen demoni.asennettu:Se on mount daemon.nfsd:Se tulee sanoista Network File Sharing Daemon.nimeltä:Se on DNS-palvelimen demoni.nflock:Sitä käytetään nfs-tiedostojen lukituspalvelujen käynnistämiseen ja pysäyttämiseen.ntpd:Se tarkoittaa Network Time Protocol -palveludaemonia.nmbd:Se tulee sanoista Network Message Block Daemon.postgresql:Se on tietokantapalvelimen demoni.postfix:Se on postin kuljetusagentti ja sitä käytetään Sendmailin korvikkeena.rpcbind:Se tulee sanoista Remote Procedure Call Bind Daemon.reititetty:Se käsittelee reititystaulukoita.smbd:Se on Samba Daemon.Lähetä postia:Se on postinsiirtoagenttidaemon.smtpd:Se tulee sanoista Simple Mail Transfer Protocol Daemon.kalmari:Se on web-sivujen välimuistipalvelimen demoni.snmpd:Se tulee sanoista Simple Network Management Protocol Daemon.synkronointi:Se voi pitää eri tiedostojärjestelmät synkronoituina järjestelmämuistin kanssa.sshd:Se on Secure Shell Server Daemon.syslogd:Se tarkoittaa järjestelmän lokipalvelua.telnetd:Se on Telnet Server Daemon.tcpd:Siinä on palvelukääre, joka voi rajoittaa valtuutuksen inetd-pohjaisiin palveluihin hosts.deny- ja hosts.allow-palveluista.vsftpd:Se tulee sanoista Very Secure FTP Daemon.webmin:Se on web-pohjainen hallintapalvelindaemon.xntd:Se on Network Time Server Daemon.xinetd:Se on Enhanced Internet Superserver Daemon.