Antalet och typen av demoner laddade i minnet och körs av kärnan på ett visst system definieras av ett komplext samspel mellan flera faktorer:
1. Systemets initialiseringssystem (init): Detta är den primära föraren. Init -systemet (t.ex. Systemd, Sysvinit, Runit) är ansvarig för att starta, stoppa och hantera demoner. Den läser konfigurationsfiler (som `/etc/inittab` för sysvinit- eller systemd -enhetsfiler) som anger vilka demoner som ska startas vid starttid och under vilka förhållanden. Olika init -system har olika konfigurationsmetoder och filosofier.
2. Konfigurationsfiler: Dessa filer beskriver som Daemons to Run, deras exekveringsparametrar (som kommandoradsargument), beroenden mellan demonerna (som måste starta före andra) och köra nivåer (Sysvinit) eller måltillstånd (systemd). Dessa konfigurationer definierar den grundläggande uppsättningen av demoner.
3. runvevels/målstater: (Främst relevant för Sysvinit) Olika runvevels representerar olika systemtillstånd (t.ex. enkelanvändarläge, flera användarläge). Init -systemet laddar en annan uppsättning av demoner beroende på den aktiva runnel. SystemD använder "mål" som är mer flexibla och kraftfulla än runvevels.
4. Beroenden mellan demonerna: Daemoner förlitar sig ofta på att andra demoner är aktiva. Till exempel kan en webbserverdemon bero på att en nätverksdemon körs. Init -systemet säkerställer att beroenden uppfylls innan du startar en demon.
5. on-demand-tjänster: Vissa demoner kanske inte laddas vid starttid utan började snarare dynamiskt vid behov. Dessa utlöses ofta av användarförfrågningar eller andra systemhändelser. Nätverkstjänster börjar till exempel bara lyssna på en port när en anslutning försöks.
6. Automatiska startskript: Vissa applikationer eller programvarupaket installerar sina egna startskript som får Init -systemet att starta tillhörande demoner vid start eller vid behov.
7. Användarinitierade processer: Även om de inte strikt demoner i traditionell mening, kan användare starta processer som körs i bakgrunden och effektivt agera som demoner (även om de saknar några av egenskaperna hos korrekt utformade demoner).
8. kärnmoduler: Även om det inte strikt demoner, kan kärnmoduler (som förlänger kärnfunktionalitet) utlösa skapandet eller modifieringen av Daemons beteende. Ett nytt nätverksgränssnitt kan kräva att starta nya nätverksrelaterade demoner.
Sammanfattningsvis är det inte ett enda element utan en samarbetsinsats mellan init -systemets konfiguration, dess förståelse av beroenden och eventuellt dynamisk start som utlöses av andra händelser som bestämmer den exakta uppsättningen av demoner som körs på ett givet system. Komplexiteten uppstår från nödvändigheten av att hantera en mångfaldig uppsättning systemtjänster effektivt och robust.