logo

Linux Daemon

Ce este un demon?

Un daemon este un fel de program peste sistemul de operare UNIX care se execută în fundal fără a fi obținute, în loc de accesul direct al unui utilizator. Așteaptă să fie declanșat de apariția unei anumite stări sau eveniment.

În mod obișnuit, sistemele de tip UNIX execută numeroase demoni, în primul rând pentru a satisface cererile de servicii prin alte sisteme din rețea, pentru activitatea hardware și pentru a răspunde și la alte programe.

Exemple de condiții sau acțiuni care ar putea activa demoni în activitate pot fi o anumită dată sau oră, trecerea unui interval de timp descris, primirea unei cereri web sau a unui e-mail creat dintr-o linie de comunicare specifică și un fișier care ajunge într-un anumit director.

static în c

Nu este obligatoriu ca un autor al unei condiții sau acțiuni să fie cunoscut că demonul îl ascultă.

Cu toate acestea, programele ar implementa frecvent o acțiune doar pentru că se știe că ar trezi implicit un demon.

Un demon mai este numit și procese de fundal. Este un program UNIX sau Linux care se execută în fundal. Aproape fiecare demon conține nume care se termină cu „d” litera. De exemplu, sshd, acesta gestionează conexiunile de acces la distanță SSH sau demonul httpd care gestionează serverul Apache. Adesea, Linux începe demonii la momentul pornirii.

Diverse scripturi shell sunt salvate în directorul care este /etc/init.d. Aceste scripturi sunt folosite pentru pornirea și oprirea demonilor.

Procese Linux

De obicei, demonii sunt instanțiați ca procese. Aceste procese sunt instanțele de rulare sau de execuție ale unui program. Un proces este gestionat de nucleul care este nucleul sistemului de operare și atribuie toate numerele speciale de identificare a procesului.

În Linux, există în principal trei tipuri comune de procese, care sunt după cum urmează:

  • Lot
  • Interactiv
  • Daemon

Procesul batch este transmis printr-o coadă de procese și nu are legătură cu linia de comandă. Aceste procese sunt potrivite pentru a efectua operațiuni recurente dacă utilizarea sistemului este redusă.

Procesul interactiv este executat interactiv de către utilizator pe linia de comandă.

Daemonul este identificat de un sistem ca acele procese al căror proces părinte conține un PID de unul.

Întotdeauna, definește procesul init. Procesul de pornire este procesul inițial care începe atunci când un sistem Linux este pornit și rămâne peste sistem până când sistemul este oprit.

css centrarea unei imagini

Init poate adopta orice tip de proces al cărui proces părinte se încheie sau moare fără a aștepta starea procesului copil.

Deci, tehnica de bază pentru lansarea demonului este împărțirea sau bifurcarea de două ori sau o dată și, de asemenea, să permită proceselor părinte să se termine în timp ce procesul copil începe să-și implementeze funcția generală.

Istoria Daemonilor

Câțiva daemoni sunt publicate de scripturile init ale Sistemului V. Acestea sunt scripturi sau programe scurte care pot fi executate automat dacă sistemul pornește. Acestea pot fi fie reproduse la intervale, fie să supraviețuiască pe durata sesiunii.

Acum, mai mulți demoni sunt porniți numai după cum este necesar și de către un demon (xinetd) în loc să se execute continuu. Xinetd este cunoscut ca super server TCP/IP.

Este pornit la momentul pornirii și, de asemenea, ascultă diferite porturi care sunt alocate acelor procese listate în fișierul de configurare, adică /etc/xinetd.conf sau /etc/inetd.conf.

iarnă triplă

Manual, câțiva daemoni ar putea fi, de asemenea, porniți în includere pentru a fi lansat de către programele de aplicație și sistemul de operare. Toți demonii au un script individual în mai multe sisteme de operare asemănătoare UNIX, inclusiv Linux, cu care ar putea fi repornit și terminat.

Managementul acestor script-uri este implementat conform nivelurilor de rulare. Nivelul de execuție poate fi definit ca o stare de funcționare sau de configurare a unui sistem care permite doar anumite procese selectate să fie disponibile. Începerea cu un nivel de execuție distinct poate sprijini rezolvarea anumitor probleme sau probleme, inclusiv rectificarea erorilor de sistem.

Punctele cheie ale demonilor

Câteva puncte cheie importante ale Daemons sunt explicate mai jos:

  • Cuvântul demon este preluat din metoda greacă demon. Acestea erau ființe supranaturale care se află între muritori și zei și care posedau o putere sau cunoștințe unice.
  • În 1963, termenul demon a fost aplicat inițial în contextul unui sistem pe proiectul de pionierat MAC cu ajutorul IBM 7094.
  • A fost inspirat de demonul termodinamicii și fizicii lui Maxwell, care a fost un agent abstract care a susținut molecule de sortare cu viteze distincte și a lucrat în fundal neobosit.
  • După aceea, termenul a fost folosit pentru a descrie procesele de fundal care au funcționat, implementează neobosit treburile sistemului.
  • Primul computer demon a fost un program care crea backup-uri pe bandă automat.
  • Acest termen a fost folosit pentru utilizarea computerului. A fost o formă scurtă pentru Disk and Execution MONitor.
  • Diverse programe numite servicii funcționează demonii pe sistemul de operare Microsoft Windows. Cu toate acestea, cuvântul demon este uneori aplicat cu acele sisteme.

Implementarea Daemons

Unix ca sistemele

Procesul unui sistem asemănător Unix este un daemon dacă procesul său părinte moare și acest demon este numit procesul init (procesul numărul 1) ca proces părinte și nu conține niciun terminal de control în mod strict tehnic.

Un demon ar putea fi totuși orice proces de fundal, indiferent dacă este sau nu copilul procesului init.

Tehnica de bază pentru o procedură devine un demon pe sistemul UNIX atunci când procedura este începută prin linia de comandă sau scripturi de pornire, cum ar fi scriptul System Starter sau scriptul init, implică:

  • Ștergerea variabilelor inutile prin mediu opțional.
  • Rularea ca sarcină de fundal prin ieșire și bifurcare. Permite părintelui demonului (proces de pornire sau shell) să primească notificări de ieșire și să continue execuția normală.
  • Detașarea prin secțiunea de invocare, realizată de obicei printr-o operație individuală, setsid():
    • Disocierea prin controlul tty.
    • Faceți o sesiune mai nouă și deveniți liderul sesiunii respective.
    • A deveni liderul grupului de proces.
  • Dacă demonul dorește să se asigure că nu va moșteni un nou control tty, ar putea ieși și bifurca din nou. Înseamnă că nu mai este nici un lider de sesiune din noua sesiune și nu mai poate moșteni niciun control tty.
  • Setarea directorului de lucru curent ca director rădăcină, astfel încât procesul să nu ia niciun director în uz care ar putea fi peste un sistem de fișiere montat.
  • Modificarea umask-ului la 0 pentru a permite create(), open() și alte apeluri ale sistemului de operare pentru a facilita masca lor de permisiune și pentru a nu se baza pe toate umask apelantului.
  • Redirecționarea descriptorilor de fișiere 0, 1 și 2 pentru fluxurile standard (stderr, stdout, stdin) către un fișier jurnal sau /dev/null și închiderea fiecărui alt fișier descriptor achiziționat prin procesul părinte.

Când procesul începe de către orice daemon de super server, cum ar fi systemd, launchd sau inetd, super serverul va implementa acele funcții pentru acest proces, cu excepția acelor demoni de stil vechi care nu au fost transformați în execuție sub systemd și descriși ca servere multithreaded și Type=forking. pe inetd.

mysql schimba tipul de coloană

MS-DOS

Programul asemănător demonului a fost executat ca software terminat and stay rezident (pe scurt TSR) în cadrul platformei Microsoft DOS.

Windows NT

Programele cunoscute ca servicii Windows implementează funcțiile acestor demoni pe sistemele Microsoft Windows NT. Ele se execută ca procese și, de obicei, nu interacționează cu mouse-ul, tastatura și monitorul. Ele ar putea fi lansate cu ajutorul sistemului de operare la momentul pornirii.

Serviciile Windows sunt oprite, pornite și configurate manual de către Panoul de control (un program de configurare/control dedicat), sistemul de scripturi PowerShell sau comenzile net stop și net start, elementul controler de serviciu al managerului de control al serviciului.

Cu toate acestea, orice aplicație Windows poate implementa responsabilitățile unui demon nu doar ca un serviciu, iar câțiva demoni Windows conțin opțiunea de a se executa ca proces normal.

MacOS clasic și Mac OS

Diverse servicii și caracteristici opționale au fost facilitate de acele fișiere încărcate la momentul pornirii care reconstruiesc sistemul de operare pe clasicul Mac OS.

Acestea au fost numite panouri de control și extensii de sistem. Versiunile ulterioare ale Mac OS standard le-au mărit cu aplicații de fundal fără chip complet.

Aceste aplicații sunt aplicații obișnuite care se execută în fundal. Acestea au fost încă specificate ca extensii obișnuite de sistem pentru utilizator.

macOS este un sistem Unix și folosește demoni. MacOS aplică termenul serviciului pentru desemnarea software-ului care implementează funcții alese prin meniul de servicii, în loc să aplice acel termen așa cum o face Windows pentru demoni.

Funcții tipice ale demonilor

  • Executați acțiuni programate precum cron.
  • Monitorizați sisteme precum matricea RAID sau starea de sănătate a hard diskului.
  • Răspundeți la cererea rețelei și deschideți portul de rețea (cum ar fi portul 80).

Cum pornim, repornim sau oprim demonii pentru un prompt de shell?

Trebuie să le aplicăm comenzile de serviciu ca mai jos:

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

În exemplul următor, stele, reporniți și opriți.

 service httpd start service httpd stop service httpd restart 

Cum verificăm lista fiecărui demon care rulează?

Pentru a verifica starea fiecărui demon instalat, tastați:

 service - -status-all 

Planificând Daemonul nostru

Ce demon va face?

Demonul trebuie să implementeze un lucru și să îl implementeze bine. Acel singur lucru ar putea fi la fel de complicat ca gestionarea multor cutii poștale pe mai mult de un domeniu sau la fel de ușor ca apelarea sendmail pentru a-l trimite prin poștă către un administrator și a specifica un raport.

Trebuie să avem o idee mai bună despre ce trebuie să facă un demon în orice caz. Va interacționa cu alți câțiva demoni pe care i-am putea specifica sau nu. Este, de asemenea, altceva de examinat.

numerotati alfabetul

Interacţiune

Demonii nu trebuie să aibă niciodată nicio comunicare cu utilizatorul direct printr-un terminal. Fiecare comunicare trece prin câteva tipuri de interfețe (pe care ar putea sau nu trebuie să le specificăm), care ar putea fi la fel de complicate ca GUI+GTK sau la fel de ușor ca un set individual.

Structura de bază a demonului

Daemon trebuie să implementeze câteva treburi casnice de nivel scăzut pentru a se pregăti pentru munca reală atunci când pornește. Acesta implică câțiva pași care sunt după cum urmează:

  • Dezactivați un super proces (proces părinte)
  • Modificați masca modului fișier (umask)
  • Deschideți jurnalele pentru a scrie
  • Creați un ID de sesiune special (pe scurt SID)
  • Modificați directorul de lucru (actual) într-un loc sigur
  • Închideți descriptorii de clasificare ai fișierului
  • Introduceți codul demon original

Lista de servicii daemon pentru sisteme similare Unix și Linux

    anacron:Rulează acțiuni cron întârziate la momentul pornirii.amd:Aceasta înseamnă Auto Mount Daemon.etc:Execută lucrări puse în coadă aplicând la instrument.apmd:Aceasta înseamnă Advanced Power Management Daemon.crond:Este un demon de planificare a sarcinilor.autofs:Ajută demonul automounter permițând demontarea și montarea dispozitivelor la cerere.dhcpd:Acesta reprezintă Protocolul de configurare dinamică a gazdei. De asemenea, este un Internet Bootstrap Protocol Server.cupsd:Acesta reprezintă demonul imprimantei CUPS.ftpd:Aceasta înseamnă FTP Server Daemon.httpd:Este un daemon server web.închis:Poate ruta demonii care înlocuiesc egpup și rutat și poate gestiona mai mult de un protocol de rutare.lpd:Aceasta înseamnă Line Printer Daemon.imapd:Este demonul serverului imap.inetd:Aceasta înseamnă Internet Superserver Daemon.memchached:Este un daemon de stocare în cache a obiectelor distribuite în memorie.mysql:Este un daemon de server de baze de date.mountd:Este un demon de munte.nfsd:Aceasta înseamnă Network File Sharing Daemon.numit:Este un daemon de server DNS.nflock:Se aplică pentru pornirea și oprirea serviciilor de blocare a fișierelor nfs.ntpd:Acesta reprezintă demonul serviciului Network Time Protocol.nmbd:Aceasta înseamnă Network Message Block Daemon.postgresql:Este un daemon de server de baze de date.postfix:Este un agent de transport de corespondență și este folosit ca substituție pentru Sendmail.rpcbind:Aceasta înseamnă Remote Procedure Call Bind Daemon.direcționat:Se ocupă de tabelele de rutare.smbd:Este un Samba Daemon.trimite mail:Este un daemon agent de transfer de e-mail.smtpd:Aceasta înseamnă Daemon Simple Mail Transfer Protocol.calmar:Este un daemon de server proxy de stocare în cache a paginii web.snmpd:Aceasta înseamnă Simple Network Management Protocol Daemon.sincronizare:Poate menține diverse sisteme de fișiere sincronizate împreună cu memoria sistemului.sshd:Este un Secure Shell Server Daemon.syslogd:Acesta reprezintă demonul de înregistrare a sistemului.telnetd:Este un server Telnet Daemon.tcpd:Are un pachet de servicii care poate restricționa autorizarea la serviciile bazate pe inetd de la hosts.deny și hosts.allow.vsftpd:Aceasta înseamnă Very Secure FTP Daemon.webmin:Este un daemon de server de administrare bazat pe web.xntd:Este un demon Network Time Server.xinetd:Este un daemon de superserver Internet îmbunătățit.