Hvad er en daemon? Definition af Unix-baggrundsprocesser

Hvad er en daemon? Forklaring af Unix baggrundsprocesser, funktioner, eksempler (sshd, httpd, syslogd) og hvordan de styrer systemets tjenester.

Forfatter: Leandro Alegsa

I Unix og i andre multitasking-operativsystemer er en daemon (udtales /ˈdiːmən/ eller /ˈdeɪmən/) et computerprogram, der kører som en baggrundsopgave. Mange dæmoner har navne, der ender med bogstavet "d": f.eks. syslogd, dæmonen, der håndterer systemloggen, httpd, en dæmon, der håndterer webforespørgsler, eller sshd, der tager sig af indgående SSH-forbindelser.

 

Hvad gør en daemon?

En daemon er typisk et langtlevende program, som kører uden direkte brugerinteraktion og venter på eller reagerer på hændelser (f.eks. netværksforespørgsler, planlagte jobs, hardware-begivenheder eller interne tidsplaner). Mange dæmoner:

  • starter ved boot og kører kontinuerligt;
  • har ikke en kontrollerende terminal (de er "frakoblet" brugerens shell);
  • logger hændelser til systemloggen (fx via syslog eller systemd-journald);
  • bruger PID-filer (ofte i /var/run eller /run) for at registrere deres proces-id;
  • håndterer signaler som SIGHUP (ofte brugt til at genindlæse konfiguration) og SIGTERM (for høflig nedlukning).

Teknisk opførsel og etablering som daemon

Traditionelt "daemoniserer" et program sig selv ved at udføre en række trin for at blive en baggrundsproces: forke sig (ofte to gange), oprette en ny sessionsleder via setsid, skifte arbejdsmappe til /, sætte passende umask, lukke eller omdirigere standardfiler (stdin/stdout/stderr) og eventuelt skrive sin PID til en fil. Mange moderne systemer foretrækker dog at lade init-systemet (fx systemd) håndtere demonisering, så programmer i stedet kører i forgrunden og lader systemet administrere forking og overvågning.

Init-systemer og styring

Styring af dæmoner afhænger af systemets init-ramme:

  • Traditionel init / SysV: startes via init-scripts og runlevels; administreres typisk med service eller direkte scripts i /etc/init.d.
  • systemd: moderne Linux-distributioner bruger systemd-units (.service), og kommandoer som systemctl start/stop/restart/status bruges til at kontrollere dæmoner. systemd kan overvåge, genstarte og logge services uden at de behøver at forke sig selv.
  • Containere: I containeriserede miljøer er det almindeligt at køre en enkelt proces i forgrunden; traditionelle dæmoniseringsmetoder (forking) er ofte uønskede.

Sikkerhed og drift

For at begrænse risici bør dæmoner:

  • om muligt køre med mindst mulige rettigheder (drop root til en ikke-privilegieret bruger);
  • bruge chroot, namespaces eller andre isolationsmekanismer ved behov;
  • begrænse netværksadgang og systemrettigheder (capabilities, SELinux/AppArmor regler);
  • logge til sikre steder og rotere logs for at undgå fyldte diske.

Administrations- og udviklernoter

  • Ofte interagerer administratorer med dæmoner via kommandoer til at starte, stoppe, genstarte og få status (fx systemctl eller service).
  • Når man udvikler dæmoner anbefales det at følge platformens anbefalede praksis: kør i forgrunden hvis init-systemet forventer det (fx systemd), brug standardiseret logging (syslog/journal), og håndter signaler korrekt for at sikre ordentlig nedlukning og genindlæsning af konfiguration.
  • Overvågningsværktøjer og process-supervisorer (fx systemd, supervisord eller monit) kan genstarte dæmoner ved fejl og give bedre driftshåndtering.

Oprindelse af navnet

Ordet "daemon" (ofte stavet "dæmon" på dansk) stammer historisk fra begrebet "daemon" i mytologi og science fiction, og blev populært på MIT og i tidlige Unix-miljøer som betegnelse for baggrundsprocesser, der udfører arbejde uden synlig brugergrænseflade. Det er ikke relateret til det engelske ord "demon" i religiøs forstand, men bruges i teknisk kontekst om bagvedliggende tjenester.

Korte eksempler

  • syslogd — håndterer og gemmer systemlogbeskeder.
  • httpd — webserverdæmon, der svarer på HTTP-forespørgsler.
  • sshd — netværksdæmon for SSH-forbindelser.

Samlet set er dæmoner grundlæggende byggesten i Unix-lignende systemer for at levere baggrundstjenester på en robust og kontrollerbar måde. Valg af opførsel (forking vs. forgrundsproces), logning, rettigheder og integrationsmetode med systemets init-lag har betydning for både drift, sikkerhed og pålidelighed.

Relaterede sider

 

Spørgsmål og svar

Q: Hvad er en daemon i computersoftware?


A: En daemon er et computerprogram, der kører som en baggrundsopgave i Unix og andre multitasking-operativsystemer.

Q: Hvordan udtales daemon?


A: Daemon kan udtales som /ˈdiːmən/ eller /ˈdeɪmən/.

Q: Hvilken slags opgaver udfører mange daemons?


A: Mange daemons udfører opgaver som at håndtere systemloggen, webforespørgsler eller indgående SSH-forbindelser.

Q: Hvad er et eksempel på en daemon, der håndterer systemloggen?


Sv: Et eksempel på en daemon, der håndterer systemloggen, er syslogd.

Q: Hvad er et eksempel på en dæmon, der håndterer webforespørgsler?


Sv: Et eksempel på en dæmon, der håndterer webforespørgsler, er httpd.

Q: Hvad er et eksempel på en dæmon, der tager sig af indgående SSH-forbindelser?


Sv: Et eksempel på en dæmon, der tager sig af indgående SSH-forbindelser, er sshd.

Q: Hvad er navnekonventionen for mange dæmoner?


A: Mange dæmoner har navne, der slutter med bogstavet "d".


Søge
AlegsaOnline.com - 2020 / 2025 - License CC3