Wat is een daemon?
Een daemon is een soort programma over een UNIX-achtig besturingssysteem dat onopvallend op de achtergrond wordt uitgevoerd, in plaats van na directe toegang van een gebruiker. Het wacht totdat het wordt geactiveerd door de verschijning van een bepaalde aandoening of gebeurtenis.
Doorgaans voeren UNIX-achtige systemen talloze daemons uit, voornamelijk voor het accommoderen van verzoeken om diensten via andere systemen op het netwerk, voor hardware-activiteit, en ook voor het reageren op andere programma's.
Voorbeelden van omstandigheden of acties die daemons in de activiteit kunnen activeren, kunnen een bepaalde datum of tijd zijn, het verstrijken van een beschreven tijdsinterval, de ontvangst van een webverzoek of e-mail gemaakt via een specifieke communicatielijn, en een bestand dat in een specifieke map terechtkomt.
vervang alles
Het is niet verplicht dat bij een dader van een aandoening of handeling bekend is dat de daemon luistert.
Programma's voerden echter vaak een actie uit alleen maar omdat ze wisten dat deze impliciet een daemon zou activeren.
Een daemon wordt ook wel achtergrondprocessen genoemd. Het is een UNIX- of Linux-programma dat op de achtergrond wordt uitgevoerd. Bijna elke daemon bevat namen die eindigen met de letter 'd'. Bijvoorbeeld sshd, dit beheert verbindingen van SSH externe toegang, of de httpd-daemon die de Apache-server beheert. Vaak begint Linux met daemons op de starttijd.
Verschillende shellscripts worden opgeslagen in de map /etc/init.d. Deze scripts worden gebruikt voor het starten en stoppen van daemons.
Linux-processen
Meestal worden daemons als processen geïnstantieerd. Deze processen zijn de actieve of uitvoerende exemplaren van een programma. Een proces wordt afgehandeld door de kernel, de kern van het besturingssysteem, en kent alle speciale procesidentificatienummers toe.
In Linux zijn er hoofdzakelijk drie veelvoorkomende soorten processen:
- Partij
- Interactief
- Demon
Het batchproces wordt ingediend via een proceswachtrij en is niet gerelateerd aan de opdrachtregel. Deze processen zijn zeer geschikt om terugkerende bewerkingen uit te voeren als het gebruik van het systeem laag is.
lang naar int java
Het interactieve proces wordt interactief uitgevoerd door de gebruiker op de opdrachtregel.
De daemon wordt geïdentificeerd door een systeem zoals de processen waarvan het ouderproces een PID van één bevat.
Het definieert altijd het begin van het proces. Het init-proces is het initiële proces dat wordt gestart wanneer een Linux-systeem wordt opgestart en dat over het systeem blijft totdat het systeem wordt afgesloten.
De init kan elk type proces overnemen waarvan het ouderproces eindigt of sterft zonder te wachten op de status van het onderliggende proces.
De basistechniek om de daemon te starten is dus het tweemaal of één keer splitsen of forken en ook het mogelijk maken dat de bovenliggende processen worden beëindigd terwijl het onderliggende proces zijn algemene functie begint te implementeren.
Geschiedenis van Daemonen
Een aantal daemons worden gepubliceerd door init-scripts van Systeem V. Dit zijn scripts of korte programma's die automatisch kunnen worden uitgevoerd als het systeem opstart. Ze kunnen met tussenpozen worden gereproduceerd of gedurende de sessieduur overleven.
Nu worden verschillende daemons alleen gestart als dat nodig is en door één daemon (xinetd) in plaats van continu te worden uitgevoerd. De xinetd staat bekend als TCP/IP-superserver.
Het begint op de starttijd en luistert ook naar verschillende poorten die zijn toegewezen aan de processen die in het configuratiebestand staan vermeld, d.w.z. /etc/xinetd.conf of /etc/inetd.conf.
Handmatig kunnen ook enkele daemons worden gestart om te worden gelanceerd door de applicatieprogramma's en het besturingssysteem. Alle daemons hebben een individueel script in verschillende UNIX-achtige besturingssystemen, waaronder Linux, waarmee het opnieuw kan worden gestart en beëindigd.
Het beheer van deze scrips wordt uitgevoerd volgens runlevels. Het runlevel kan worden gedefinieerd als een bedrijfs- of configuratiestatus van een systeem dat slechts enkele geselecteerde processen beschikbaar stelt. Het starten van een apart runlevel kan het oplossen van bepaalde problemen of kwesties ondersteunen, inclusief het herstellen van systeemfouten.
Belangrijkste punten van Daemons
Enkele belangrijke kernpunten van Daemons worden hieronder uitgelegd:
- Het woord daemon is ontleend aan de Griekse methodologie daemon. Dit waren bovennatuurlijke wezens die tussen stervelingen en goden in lagen en die over unieke macht of kennis beschikten.
- In 1963 werd de term daemon aanvankelijk toegepast binnen een systeemcontext op het baanbrekende project MAC met behulp van IBM 7094.
- Het werd geïnspireerd door de daemon van de thermodynamica en natuurkunde van Maxwell, een abstract middel dat soort moleculen met verschillende snelheden ondersteunde en onvermoeibaar op de achtergrond werkte.
- Daarna werd de term gebruikt voor het beschrijven van de achtergrondprocessen die werkten om onvermoeibaar systeemklussen uit te voeren.
- De eerste daemoncomputer was een programma dat automatisch tapeback-ups maakte.
- Deze term werd gebruikt voor computergebruik. Het was een afkorting voor Disk and Execution MONitor.
- Verschillende programma's genaamd services de daemons functioneren op het Microsoft Windows-besturingssysteem. Bij deze systemen wordt echter soms ook het woord daemon gebruikt.
Implementatie van Daemons
Unix-achtige systemen
Het proces van een Unix-achtig systeem is een daemon als het bovenliggende proces sterft en deze daemon het init-proces (proces nummer 1) als het bovenliggende proces heeft gekregen en op strikt technische wijze geen controlerende terminal bevat.
Een daemon kan echter elk achtergrondproces zijn, ongeacht of het een kind van het init-proces is of niet.
veerlaarsarchitectuur
De basistechniek voor een procedure wordt een daemon op een UNIX-achtig systeem wanneer de procedure wordt gestart via de opdrachtregel of opstartscripts zoals het System Starter-script of het init-script, en omvat:
- Optioneel verwijderen van onnodige variabelen via de omgeving.
- Uitvoeren als achtergrondtaak door af te sluiten en te forken. Hiermee kan de ouder van de daemon (opstart- of shell-proces) afsluitmeldingen ontvangen en de normale uitvoering voortzetten.
- Ontkoppelen via de aanroepsectie, gewoonlijk bereikt door een individuele bewerking, setsid():
- Dissociëren via de tty-controle.
- Een nieuwere sessie maken en de sessieleider van die sessie worden.
- Leider worden van de procesgroep.
- Als de daemon er zeker van wil zijn dat hij geen nieuwe tty-controlling erft, kan hij afsluiten en opnieuw forken. Het betekent dat het niet langer een sessieleider is binnen de nieuwe sessie en geen enkele tty-controle kan overnemen.
- Het instellen van de huidige werkmap als de hoofdmap, zodat het proces geen enkele map in gebruik neemt die zich mogelijk boven een aangekoppeld bestandssysteem bevindt.
- Het wijzigen van het umask naar 0 voor het toestaan van create(), open() en andere aanroepen van het besturingssysteem om hun toestemmingsmasker te vergemakkelijken en niet te vertrouwen op het hele umask van de beller.
- Het omleiden van de bestandsdescriptors 0, 1 en 2 voor de standaardstreams (stderr, stdout, stdin) naar een logbestand of /dev/null, en het sluiten van elk ander descriptorbestand dat via het bovenliggende proces is verkregen.
Wanneer het proces begint door een superserver-daemon zoals systemd, launchd of inetd, zal de superserver deze functies voor dit proces implementeren, behalve de ouderwetse daemons die niet zijn omgezet in uitvoering onder systemd en die worden beschreven als multithreaded en Type=forking datagramservers bij inetd.
iskcon volledige vorm
MS-DOS
Het daemon-achtige programma werd uitgevoerd als 'terminate and stay resident' (kortweg TSR) software binnen het Microsoft DOS-platform.
Windows NT
Programma's die bekend staan als Windows-services implementeren de functies van deze daemons op de Microsoft Windows NT-systemen. Ze worden uitgevoerd als processen en hebben meestal geen interactie met de muis, het toetsenbord en de monitor. Ze kunnen tijdens het opstarten worden gestart met behulp van het besturingssysteem.
Windows-services worden handmatig gestopt, gestart en geconfigureerd door het Configuratiescherm (een speciaal configuratie-/besturingsprogramma), het PowerShell-scriptingsysteem of de net stop- en net start-opdrachten, het servicecontroller-element van de service control manager.
Elke Windows-applicatie kan echter de verantwoordelijkheden van een daemon implementeren, niet alleen als een service, en een paar Windows-daemons bevatten de mogelijkheid om deze als het normale proces uit te voeren.
Klassiek macOS en Mac OS
Verschillende optionele diensten en functies werden mogelijk gemaakt door de bestanden die tijdens het opstarten werden geladen en waarmee het besturingssysteem op het klassieke Mac OS opnieuw werd opgebouwd.
Dit werden bedieningspanelen en systeemuitbreidingen genoemd. De latere versies van het standaard Mac OS hebben deze uitgebreid met volwaardige anonieme achtergrondtoepassingen.
Deze applicaties zijn reguliere applicaties die op de achtergrond worden uitgevoerd. Deze werden nog steeds gespecificeerd als de reguliere systeemextensies voor de gebruiker.
macOS is een Unix-systeem en maakt gebruik van daemons. MacOS past de term van de service toe voor het aanwijzen van software die functies implementeert die zijn gekozen via het servicesmenu, in plaats van die term toe te passen zoals Windows doet voor daemons.
Typische daemonfuncties
- Voer geplande acties uit, zoals cron.
- Bewaak systemen zoals RAID-array of de gezondheid van de harde schijf.
- Reageer op het verzoek van het netwerk en open de netwerkpoort (zoals poort 80).
Hoe starten, herstarten of stoppen we daemons voor een shell-prompt?
We moeten hun serviceopdrachten toepassen, zoals hieronder:
service daemon-name-here start service daemon-name-here stop service daemon-name-here restart
In het volgende voorbeeld, sterren, opnieuw opstarten en stoppen.
service httpd start service httpd stop service httpd restart
Hoe controleren we de lijst van elke actieve daemon?
Om de status van elke geïnstalleerde daemon te controleren, typt u:
service - -status-all
Onze daemon plannen
Welke daemon gaat doen?
De daemon moet één ding implementeren, en het goed implementeren. Dat ene ding kan zo ingewikkeld zijn als het verwerken van een heleboel mailboxen over meer dan één domein, of zo eenvoudig als het bellen van sendmail om het naar een beheerder te mailen en een rapport op te geven.
We moeten een beter idee krijgen van wat een daemon in ieder geval moet doen. Het gaat communiceren met een paar andere daemons die we wel of niet kunnen specificeren. Het is ook iets anders om te onderzoeken.
lijst op Java
Interactie
Daemons mogen nooit rechtstreeks via een terminal met de gebruiker communiceren. Elke communicatie verloopt via een aantal interfacesoorten (die we wel of niet moeten specificeren), die zo ingewikkeld kunnen zijn als de GUI+GTK of zo eenvoudig als een individuele set.
De basisstructuur van daemon
Daemon moet wat huishoudelijk werk op laag niveau uitvoeren om zich klaar te maken voor de echte klus wanneer het opstart. Het omvat enkele stappen die als volgt zijn:
- Een superproces afsplitsen (bovenliggend proces)
- Masker van bestandsmodus wijzigen (umask)
- Open logboeken om te schrijven
- Maak een speciale sessie-ID (kortweg SID)
- Wijzig de werkmap (huidige) naar een veilige plaats
- Sluit de classificatiedescriptors van het bestand
- Voer de originele daemoncode in