| Het aantal en type daemons dat in het geheugen wordt geladen en door de kernel op een bepaald systeem wordt uitgevoerd, wordt bepaald door een complex samenspel van verschillende factoren:
1. Het initialisatiesysteem van het systeem (init): Dit is de voornaamste drijfveer. Het init-systeem (bijvoorbeeld systemd, SysVinit, runit) is verantwoordelijk voor het starten, stoppen en beheren van daemons. Het leest configuratiebestanden (zoals `/etc/inittab` voor SysVinit of systemd unit-bestanden) die specificeren welke daemons moeten worden gestart tijdens het opstarten en onder welke omstandigheden. Verschillende init-systemen hebben verschillende configuratiemethoden en filosofieën.
2. Configuratiebestanden: Deze bestanden geven gedetailleerd weer welke daemons moeten worden uitgevoerd, hun uitvoeringsparameters (zoals opdrachtregelargumenten), afhankelijkheden tussen daemons (die vóór andere moeten starten) en uitvoeringsniveaus (SysVinit) of doelstatussen (systemd). Deze configuraties definiëren de fundamentele set daemons.
3. Runlevels/doelstatussen: (Voornamelijk relevant voor SysVinit) Verschillende runlevels vertegenwoordigen verschillende systeemstatussen (bijvoorbeeld modus voor één gebruiker, modus voor meerdere gebruikers). Het init-systeem laadt een andere set daemons, afhankelijk van het actieve runlevel. Systemd gebruikt "doelen" die flexibeler en krachtiger zijn dan runlevels.
4. Afhankelijkheden tussen daemons: Daemons zijn er vaak afhankelijk van dat andere daemons actief zijn. Een webserverdaemon kan bijvoorbeeld afhankelijk zijn van een actieve netwerkdaemon. Het init-systeem zorgt ervoor dat aan de afhankelijkheden wordt voldaan voordat een daemon wordt gestart.
5. Services op aanvraag: Sommige daemons worden mogelijk niet geladen tijdens het opstarten, maar worden dynamisch gestart wanneer dat nodig is. Deze worden vaak geactiveerd door gebruikersverzoeken of andere systeemgebeurtenissen. Netwerkdiensten luisteren bijvoorbeeld vaak pas op een poort als er verbinding wordt gemaakt.
6. Automatische opstartscripts: Sommige applicaties of softwarepakketten installeren hun eigen opstartscripts die ervoor zorgen dat het init-systeem de bijbehorende daemons start tijdens het opstarten of indien nodig.
7. Door de gebruiker geïnitieerde processen: Hoewel dit strikt genomen geen daemons in de traditionele zin zijn, kunnen gebruikers processen starten die op de achtergrond draaien en zich effectief als daemons gedragen (hoewel ze enkele kenmerken van goed ontworpen daemons missen).
8. Kernelmodules: Hoewel het strikt genomen geen daemons zijn, kunnen kernelmodules (die de kernelfunctionaliteit uitbreiden) de creatie of wijziging van het gedrag van daemons activeren. Een nieuwe netwerkinterface kan het starten van nieuwe netwerkgerelateerde daemons noodzakelijk maken.
Samenvattend is het niet een enkel element, maar een gezamenlijke inspanning tussen de configuratie van het init-systeem, het begrip van de afhankelijkheden en mogelijk een dynamisch opstarten veroorzaakt door andere gebeurtenissen, die de precieze set daemons bepaalt die op een bepaald systeem draaien. De complexiteit komt voort uit de noodzaak om een diverse set systeemdiensten efficiënt en robuust te beheren. |