Vad är en daemon? Bakgrundsprocesser i Unix och andra operativsystem

Upptäck vad en daemon är — bakgrundsprocesser i Unix och andra operativsystem. Lär dig funktioner, vanliga exempel (httpd, sshd) och hur de sköter systemtjänster.

Författare: Leandro Alegsa

I Unix, och i andra multitasking-operativsystem för datorer, är en daemon (uttalas /ˈdiːmən/ eller /ˈdeɪmən/) ett datorprogram som körs som en bakgrundsuppgift. Många daemoner har namn som slutar på bokstaven "d": till exempel syslogd, daemon som hanterar systemloggen, httpd, daemon som hanterar webbförfrågningar, eller sshd, som tar hand om inkommande SSH-anslutningar.

 

Vad är en daemon och varför används de?

En daemon är ett program som körs i bakgrunden utan att direkt interagera med en användares terminal. Daemoner tillhandahåller tjänster som nätverksåtkomst, schemaläggning, logghantering och hårdvaruhantering. Genom att köra som bakgrundsprocess kan dessa tjänster vara tillgängliga kontinuerligt, oberoende av enskilda användarsessioner.

Hur fungerar daemoner rent tekniskt?

  • Avkoppling från terminal: En traditionell metod för att göra ett program till en daemon är att dubbel-forka (double-fork) för att bli av med controlling terminal och session. Det gör att processen inte avslutas när användarens session sluter.
  • Arbetskatalog och filmask: En daemon brukar byta arbetskatalog till / och sätta umask för att undvika att hålla kataloger låsta och för att kontrollera skapade filers rättigheter.
  • PID: Daemoner får en processidentifierare (PID). Många skriver sin PID till en fil (PID-fil) så andra verktyg kan stoppa eller signalera processen.
  • Signalhantering: Daemoner reagerar på signaler (t.ex. SIGTERM, SIGHUP) för att avsluta, läsa om konfiguration eller rotera loggar.
  • Loggning: Eftersom de saknar terminal använder daemoner ofta systemlogg (t.ex. syslog) eller egna loggfiler.

Start, stopp och övervakning

Historiskt startades daemoner via init-skript (t.ex. SysV init) eller rc-system. Moderna Linux-distributioner använder ofta systemd, som sköter startsekvenser, beroenden och övervakning av tjänster genom enhetliga enhetsfiler (unit files). Vanliga verktyg för hantering är:

  • systemctl start|stop|restart namn.service (systemd)
  • service namn start|stop (bakåtkompatibelt på många system)
  • rc.d-skript eller /etc/init.d/ på äldre system

Det finns även processövervakare och supervisors som runit, s6, supervisord och monit som kan starta om daemoner automatiskt vid fel och samla loggar.

Exempel på vanliga daemoner

  • sshd – tar emot inkommande SSH-anslutningar.
  • httpd eller nginx – webbservrar.
  • cron – schemalägger uppgifter.
  • syslogd – samlar systemloggar.

Säkerhet och begränsningar

  • Principen om minst privilegium: Daemoner bör köras med så få rättigheter som möjligt. Om möjligt, använd en dedicerad användare/grupp för tjänsten.
  • Isolering: Containrar eller sandboxing (t.ex. SELinux, AppArmor, namespaces) kan begränsa skada vid kompromettering.
  • Uppdateringar: Eftersom daemoner ofta körs länge är det viktigt att hålla dem uppdaterade för att åtgärda sårbarheter.

Skillnad mot Windows-tjänster och macOS

I Windows motsvaras daemoner av services (Windows Services). macOS använder launchd för att hantera system- och användartjänster. Konceptet är liknande – bakgrundsprocesser som erbjuder tjänster – men implementationsdetaljer och verktyg skiljer sig mellan plattformarna.

Att skriva en daemon — bästa praxis

  • Hantera signaler korrekt (SIGTERM för stängning, SIGHUP för att läsa om konfiguration).
  • Undvik fasta sökvägar: Gör konfigurationsvägar konfigurerbara och använd standardiserade loggmekanismer.
  • Init-systemintegration: Skriv en korrekt unit- eller init-skript (systemd unit) så tjänsten kan hanteras av värdsystemet.
  • Styr rättigheter: drop privileges efter bind till portar under 1024, använd chroot eller namespaces vid behov.
  • Hälsokontroller: exponera en status- eller hälsokontrollpunkt så övervakningssystem enkelt kan kontrollera att daemonen fungerar.

Felsökning

  • Kolla loggar (systemlogg eller daemonens egna loggfiler).
  • Använd ps, ss/netstat, och strace/lsof för att inspektera processer och öppna resurser.
  • Med systemd kan journalctl -u namn.service visa loggar för en specifik tjänst.

Sammanfattning

En daemon är en bakgrundsprocess som tillhandahåller systemtjänster i Unix-liknande miljöer. De är designade för att köras kontinuerligt, hanteras av init- eller servicehanterare och följa best practices för säkerhet, loggning och övervakning. Moderna system erbjuder fler verktyg (t.ex. systemd och supervisors) som förenklar hantering och förbättrar tillförlitligheten för daemoner.

Relaterade sidor

 

Frågor och svar

F: Vad är en daemon i datorprogram?


S: En daemon är ett datorprogram som körs som en bakgrundsuppgift i Unix och andra multitasking-operativsystem.

F: Hur uttalas daemon?


S: Daemon kan uttalas som /ˈdiːmən/ eller /ˈdeɪmən/.

F: Vilken typ av uppgifter utför många daemons?


S: Många daemons utför uppgifter som att hantera systemloggen, webbförfrågningar eller inkommande SSH-anslutningar.

F: Vad är ett exempel på en daemon som hanterar systemloggen?


S: Ett exempel på en daemon som hanterar systemloggen är syslogd.

F: Vad är ett exempel på en daemon som hanterar webbförfrågningar?


S: Ett exempel på en daemon som hanterar webbförfrågningar är httpd.

F: Vad är ett exempel på en daemon som tar hand om inkommande SSH-anslutningar?


S: Ett exempel på en daemon som tar hand om inkommande SSH-anslutningar är sshd.

F: Vad är namnkonventionen för många daemoner?


S: Många daemons har namn som slutar på bokstaven "d".


Sök
AlegsaOnline.com - 2020 / 2025 - License CC3