Inloggen
Inloggen

Wat is een daemon in de informatica?

Wat is een daemon in de informatica?
Hostman Team
Technisch schrijver
Linux-systeem
23.10.2025
Reading time: 9 min

De term daemon komt uit de oude Griekse mythologie en verwees naar een immaterieel wezen dat invloed had op de menselijke wereld.

In de informatica, vooral in UNIX-achtige besturingssystemen, is een daemon een achtergrondproces dat draait zonder directe interactie van de gebruiker. Het is niet afhankelijk van een terminal of gebruikersinterface en wordt meestal gestart bij het opstarten van het systeem of onder bepaalde voorwaarden.

Wat is een daemon

De hoofdtaak van een daemon is het leveren van specifieke diensten aan andere processen of gebruikers. Een daemon kan bijvoorbeeld luisteren op netwerkpoorten en wachten op verbindingen, systeemgebeurtenissen monitoren en reageren wanneer aan bepaalde voorwaarden wordt voldaan, geplande taken beheren (zoals cron), e-mails verzenden (sendmail) en nog veel meer.

In Windows is de dichtstbijzijnde tegenhanger van een daemon een service. Het verschil ligt voornamelijk in hoe ze worden gestart, geregistreerd, beheerd en geconfigureerd binnen het besturingssysteem. Hun doel is echter hetzelfde: zorgen voor een continue werking van bepaalde functies of diensten op de achtergrond.

Belangrijkste kenmerken van een daemon

  • Draait op de achtergrond: gebruikers zien meestal geen interface van de daemon; hij schrijft niet naar de standaarduitvoer (of leidt die om naar logbestanden) en vraagt geen toetsenbordinvoer.

  • Autonoom: een daemon wordt gestart bij het opstarten van het systeem, wanneer hij wordt geactiveerd door een init-systeem (zoals systemd), of handmatig door de gebruiker (via scripts, cron, enz.).

  • Langdurig actief: idealiter blijft een daemon onbeperkt draaien, tenzij zich een kritieke fout voordoet of een expliciet stopsignaal wordt ontvangen.

  • Geïsoleerd: draait meestal onder een apart gebruikers- of groepsaccount met beperkte rechten, wat diensten veiliger en eenvoudiger te beheren maakt.

  • Logging: in plaats van standaardinvoer/-uitvoer te gebruiken, schrijft de daemon informatie naar logbestanden of naar de systeemlogger (journald, syslog, enz.), wat nuttig is voor debugging en diagnose.

Daemons in Linux

Historisch gezien worden bijna alle systeemachtergrondtaken in Linux geïmplementeerd als daemons. Het besturingssysteem bevat er tientallen, elk verantwoordelijk voor een specifieke functie. Enkele voorbeelden:

  • sshd (Secure Shell Daemon): luistert standaard op poort 22 en maakt het mogelijk voor externe gebruikers om verbinding te maken via versleutelde SSH. Zonder sshd is externe terminaltoegang vrijwel onmogelijk.

  • cron: een taakplanner-daemon. Controleert crontab-vermeldingen en voert scripts of opdrachten uit volgens een schema, zoals logopschoning, rapportverzending of systeemcontroles.

  • syslogd / rsyslog / journald: systeemlog-daemons die berichten verzamelen van de kernel, hulpprogramma’s, andere daemons en toepassingen, en deze opslaan in logbestanden of het journal.

  • NetworkManager of Wicd: daemons die netwerkconfiguraties beheren — ze automatiseren verbindingen met bekabelde/draadloze netwerken, schakelen tussen netwerken, configureren VPN’s en meer.

Deze daemons worden gestart bij het opstarten van het systeem en geregistreerd bij de systeemservicemanager (bijv. systemd). Ze blijven actief tot het systeem wordt uitgeschakeld of opnieuw wordt opgestart. Gebruikers interageren indirect met hen — via configuratiebestanden, terminalopdrachten (service, systemctl) of netwerkverzoeken (als de daemon een HTTP/S-, SSH- of andere netwerkinterface biedt).

Hoe je daemons maakt en beheert

Om een daemon te implementeren, volg je deze stappen:

  1. Proces forken: het ouderproces roept fork() aan en blijft de daemoncode uitvoeren in het kindproces.

  2. Loskoppelen van de besturingsterminal (setsid): om gebruikersinterferentie te voorkomen (bijv. sluiten van de terminal), roept de daemon setsid() aan om een nieuwe sessie te starten en de leider ervan te worden.

  3. Standaardinvoer/-uitvoerdescriptoren sluiten: omdat de daemon niet naar het scherm moet schrijven of op invoer wachten, worden stdin, stdout en stderr gesloten of omgeleid naar logbestanden.

  4. Signalen en logging afhandelen: om een nette afsluiting of herladen van configuraties te ondersteunen, moet de daemon signalen (SIGTERM, SIGHUP, enz.) afhandelen. Logging gebeurt meestal via syslog of bestanden.

  5. Hoofdlus: na initialisatie gaat de daemon de hoofdlus in: wachten op gebeurtenissen, ze afhandelen en herhalen totdat hij wordt gestopt.

Laten we zien hoe je een daemon maakt op Ubuntu 22.04 met een Hostman cloudserver.

1. De daemon schrijven in C

Maak een bestand genaamd mydaemon.c en voeg de volgende code toe:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <syslog.h>

int main() {
    // Syslog openen
    openlog("mydaemon", LOG_PID, LOG_DAEMON);
    syslog(LOG_NOTICE, "Daemon started");

    // Oneindige hoofdlus
    while (1) {
        // Achtergrondtaken: monitoring, wachtrijverwerking, enz.
        syslog(LOG_NOTICE, "Performing task...");
        sleep(60);
    }

    // Als de lus ooit wordt verlaten
    syslog(LOG_NOTICE, "Daemon stopped");
    closelog();

    return 0;
}

2. Het programma compileren

Werk eerst de pakketten bij:

sudo apt update && sudo apt upgrade

Installeer de GCC-compiler als die nog niet is geïnstalleerd:

sudo apt install gcc

Compileer de daemon:

gcc mydaemon.c -o mydaemon

3. Het uitvoerbare bestand verplaatsen

Verplaats het binaire bestand naar /usr/local/bin/, een standaardlocatie voor aangepaste hulpprogramma’s:

mv mydaemon /usr/local/bin/mydaemon

4. Een systemd-service maken

Maak een unitbestand genaamd mydaemon.service:

sudo nano /etc/systemd/system/mydaemon.service

Voeg de volgende inhoud toe:

[Unit]
Description=My Daemon
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/mydaemon
Restart=on-failure

[Install]
WantedBy=multi-user.target

Uitleg van de velden:

  • Description: beschrijving die wordt weergegeven in systemctl status.
  • After=network.target: zorgt ervoor dat de daemon start nadat het netwerk actief is.
  • Type=simple: de daemon forkt niet; hij draait als één enkel proces.
  • ExecStart: pad naar het uitvoerbare bestand van de daemon.
  • Restart=on-failure: start automatisch opnieuw als de daemon crasht.
  • WantedBy=multi-user.target: zorgt ervoor dat de service start in de standaard multi-user omgeving.

5. De daemon starten en monitoren

sudo systemctl daemon-reload          # Herlaad systemd-configuratie
sudo systemctl start mydaemon         # Start de daemon
sudo systemctl status mydaemon        # Controleer de status

Als alles werkt, toont de status active. Om logs te bekijken:

journalctl -u mydaemon.service -e

Voorbeelden van gebruik van daemons

  • Webservers

Hun taak is te luisteren op een netwerkpoort (meestal 80 of 443), HTTP/HTTPS-verzoeken te accepteren, een antwoord te genereren (zoals een HTML-pagina of JSON-gegevens) en dit terug te sturen naar de client. In de meeste gevallen start een webserver bij het opstarten en blijft draaien tot de server wordt uitgeschakeld of gestopt (bijv. systemctl stop nginx).

  • Databasedaemons

MySQL/MariaDB, PostgreSQL, MongoDB — dit zijn allemaal daemons. Ze starten met het systeem en draaien op de achtergrond terwijl ze verzoeken van clienttoepassingen of webservices accepteren. Deze daemons loggen activiteiten, ondersteunen configuratie via bestanden en worden beheerd met hulpprogramma’s (of systemd).

  • Taakplanners (cron, atd)

De cron-daemon controleert de planningslijst (crontab) en voert programma’s uit op door de gebruiker gespecificeerde tijden of intervallen. Dit maakt het mogelijk om back-ups, systeemupdates, controles en vele andere routinetaken te automatiseren.

atd is een vergelijkbare daemon, maar voert taken slechts één keer uit op een bepaald moment (in tegenstelling tot cron, die ze regelmatig uitvoert).

  • Toegangs- en controlediensten (sshd, xrdp)

sshd (Secure Shell Daemon) biedt externe toegang via het SSH-protocol. xrdp maakt externe desktopverbindingen mogelijk via het RDP-protocol. Het werkt als een daemon die luistert naar netwerkverbindingen op een opgegeven poort.

  • Init-systeemdaemons (systemd, init, Upstart)

In moderne systemen wordt de rol van de “hoofd-daemon” vervuld door systemd (dat het oudere SysV-init-systeem vervangt). systemd is het eerste proces dat start na de kernel en is verantwoordelijk voor het starten en beheren van alle andere diensten en processen. Het start ze parallel en behandelt hun afhankelijkheden. Simpel gezegd, systemd is zelf een daemon die alle andere in het systeem “orkestreert”.

Voordelen en nadelen van daemons

Voordelen:

  • Automatisering: daemons maken het mogelijk om systeemgedrag te automatiseren — van het reageren op netwerkverzoeken tot het plannen van taken — zonder gebruikersinterventie.

  • Isolatie: door te draaien onder aparte gebruikers- of groepsaccounts en losgekoppeld van terminals, wordt de beveiliging verhoogd door potentiële schade te beperken in geval van een inbreuk.

  • Continue werking: een daemon kan doorgaan met het leveren van diensten (zoals een webserver) zonder onderbreking, zelfs als de gebruiker uitlogt of de console sluit.

  • Beheerbaarheid: Linux biedt systeemtools (zoals systemd, init-scripts) om alle daemons centraal te beheren: starten, stoppen, herstarten en loggen.

Nadelen:

  • Complexe foutopsporing: omdat daemons op de achtergrond draaien en niets naar de console schrijven, vereist debugging uitgebreide logging en complexere instellingen (debug-flags, tracing, enz.).

  • Beveiligingsrisico’s: als een daemon draait met verhoogde rechten (bijv. als root), kan een kwetsbaarheid het hele systeem compromitteren. Het is beter om daemons uit te voeren met beperkte accounts.

  • Afhankelijkheidsbeheer: sommige daemons kunnen falen als ze bijvoorbeeld netwerktoegang nodig hebben voordat het netwerk actief is. Moderne init-systemen lossen dit op, maar met klassieke SysV-init-scripts was dit een veelvoorkomend probleem.

  • Hogere resourceconsumptie: elk voortdurend draaiend achtergrondproces verbruikt systeembronnen (geheugen, CPU-tijd). Te veel daemons kunnen de prestaties beïnvloeden, vooral op systemen met beperkte middelen.

Conclusie

Daemons vormen een essentieel onderdeel van de architectuur van Linux-besturingssystemen en bieden uitgebreide mogelijkheden voor automatisering en achtergrondservices. Ze stellen beheerders in staat om netwerkoperaties, geplande taken, logging, beveiligingssystemen en vele andere componenten flexibel te configureren.

Het schrijven van je eigen daemon vereist begrip van processen, signalen, systeemaanroepen en zorgvuldige aandacht voor logging en beveiliging.

Moderne init-systemen (vooral systemd) hebben het beheer van daemons en de servicelogica vereenvoudigd, waardoor het maken van aangepaste services gestructureerder en flexibeler is geworden. Toch blijft het een complex vakgebied dat zorgvuldige planning, debugging en voortdurend onderhoud vereist.

Als je op zoek bent naar een betrouwbare, krachtige en betaalbare oplossing voor je workflows, biedt Hostman Linux VPS-hostingopties, waaronder Debian VPS, Ubuntu VPS en VPS CentOS.

Linux-systeem
23.10.2025
Reading time: 9 min

Vergelijkbaar

Linux-systeem

Een poort openen op Linux

Het openen van poorten in Linux is een essentiële taak die bepaalde diensten of applicaties in staat stelt om gegevens via het netwerk uit te wisselen. Poorten fungeren als communicatiekanalen, waarbij ze toegang bieden tot geautoriseerde services en ongeautoriseerde verbindingen blokkeren. Een correcte poortbeheer zorgt voor veiligheid, stabiele werking en betrouwbare prestaties van het systeem. Wat zijn poorten en wat is hun functie? Poorten zijn logische eindpunten van netwerkcommunicatie waar apparaten informatie kunnen verzenden en ontvangen. Enkele voorbeelden: HTTP gebruikt poort 80 HTTPS gebruikt poort 443 SSH gebruikt poort 22 Een open poort betekent dat een service actief luistert naar inkomend verkeer via die poort. Een gesloten poort blokkeert daarentegen alle communicatie. Een goed beheer van open poorten is cruciaal voor beschikbaarheid en netwerkbeveiliging in Linux. Controleren welke poorten open zijn Voordat je een nieuwe poort opent, is het verstandig eerst te controleren welke poorten al actief zijn. Er zijn verschillende Linux-commando’s die je hiervoor kunt gebruiken. Met netstat Gebruik het volgende commando om open poorten te bekijken: netstat -tuln De optie -tuln toont alleen TCP- en UDP-poorten zonder hostnamen op te lossen. netstat biedt een realtime overzicht van actieve netwerkverbindingen. Opmerking: Als netstat niet is geïnstalleerd: sudo apt install net-tools Met ss Het ss-commando is moderner en sneller dan netstat. Gebruik: ss -tuln Het toont actieve poorten en bijbehorende socketinformatie. Met nmap Voor een meer gedetailleerde analyse van open poorten: nmap localhost nmap scant de opgegeven host (in dit geval localhost) en zoekt naar open poorten. Handig om te controleren welke services extern toegankelijk zijn. Opmerking: Installeer nmap met: sudo apt install nmap Poorten openen op Linux Om toegang via een specifieke poort toe te staan, moet je de firewallinstellingen aanpassen. Linux biedt verschillende tools, waaronder iptables, ufw en firewalld. Hieronder worden de drie methoden uitgelegd. Methode 1: via iptables iptables is een krachtig low-level firewallhulpmiddel dat gedetailleerde controle over netwerkverkeer mogelijk maakt. Regel toevoegen om verkeer via een bepaalde poort toe te staan Voorbeeld: HTTP-toegang via poort 8080 inschakelen: sudo iptables -A INPUT -p tcp --dport 8080 -j ACCEPT Uitleg: sudo: voert het commando uit met rootrechten -A INPUT: voegt de regel toe aan de inkomende-verkeerketen -p tcp: specificeert TCP-verkeer --dport 8080: doelpoort 8080 -j ACCEPT: accepteert inkomend verkeer dat aan de regel voldoet Deze wijziging is niet permanent en verdwijnt na een herstart. Configuratie permanent opslaan sudo apt install iptables iptables-persistent sudo netfilter-persistent save Hiermee worden de huidige regels opgeslagen zodat ze automatisch bij het opstarten worden geladen. Regels herladen sudo netfilter-persistent reload Methode 2: via ufw (Uncomplicated Firewall) ufw is een vereenvoudigde interface voor iptables waarmee je regels snel kunt toevoegen of verwijderen. Ufw inschakelen sudo ufw enable Indien niet geïnstalleerd: sudo apt install ufw Verkeer via een bepaalde poort toestaan Voorbeeld: SSH-verbindingen via poort 22 toestaan: sudo ufw allow 22/tcp Dit staat TCP-verkeer toe op poort 22, waardoor externe SSH-toegang mogelijk wordt. Status van de firewall controleren sudo ufw status Geeft een overzicht van alle actieve regels en toegestane poorten. Methode 3: via firewalld firewalld is een dynamische firewallservice die eenvoudiger aan te passen is dan iptables. Permanente regel toevoegen Voorbeeld: HTTPS (poort 443) inschakelen: sudo firewall-cmd --permanent --add-port=443/tcp Installeer en start firewalld met: sudo apt install firewalld sudo systemctl enable firewalld sudo systemctl start firewalld Regels herladen sudo firewall-cmd --reload Controleren of de poort open is sudo firewall-cmd --list-all Toont alle actieve zones en regels, inclusief open poorten. De geopende poort testen Na het openen van een poort is het belangrijk om te controleren of deze echt bereikbaar is. Met telnet telnet localhost port_number Een succesvolle verbinding betekent dat de poort openstaat en reageert. Met nmap nmap -p port_number localhost Controleert of de opgegeven poort bereikbaar is. Met curl curl localhost:port_number Geeft een antwoord als de service actief is op die poort. Veelvoorkomende problemen en oplossingen Als het openen van een poort niet lukt: Controleer firewallregels: iptables -L ufw status Controleer servicestatus: systemctl status <servicenaam> Poorten openen op basis van protocol Sommige diensten gebruiken TCP, andere UDP. Het is belangrijk om het juiste protocol te kiezen. TCP-poort openen Voorbeeld: MySQL-verkeer via poort 3306 toestaan: sudo ufw allow 3306/tcp UDP-poort openen Voorbeeld: SNMP-verkeer via poort 161 toestaan: sudo ufw allow 161/udp UDP biedt snellere, verbindingloze communicatie — ideaal voor monitoringtools. Poorttoegang beheren Toegang beperken tot een specifiek IP-adres sudo ufw allow from 192.168.1.100 to any port 22 Hiermee wordt SSH-toegang toegestaan alleen vanaf het opgegeven IP-adres, wat de beveiliging verhoogt. Een poort sluiten sudo ufw deny 80/tcp Blokkeert inkomend verkeer op poort 80 (HTTP). Conclusie Het controleren en openen van poorten in Linux is essentieel om netwerkdiensten correct te configureren en verkeer veilig te beheren. Met tools zoals iptables, ufw en firewalld kun je de toegang tot je systeem nauwkeurig regelen. Test altijd met nmap, curl of telnet om te bevestigen dat je instellingen werken. Een goed poortbeheer vormt de basis voor betrouwbare servers, veilige verbindingen en stabiele prestaties.
29 October 2025 · 5 min to read
Linux-systeem

Linux-toetsencombinaties: de beste sneltoetsen voor gebruikers

Toetsencombinaties in Linux zijn een handig hulpmiddel om efficiënter te werken. In plaats van met de muis door menu’s te navigeren, kun je vaak met een paar toetsaanslagen hetzelfde resultaat veel sneller bereiken. Linux-besturingssystemen ondersteunen een breed scala aan sneltoetsen. Houd er rekening mee dat elke distributie eigen combinaties kan hebben die mogelijk niet op andere systemen werken. Dat is echter eenvoudig aan te passen – gebruikers kunnen nieuwe sneltoetsen toevoegen of bestaande aanpassen in de systeeminstellingen. In dit artikel behandelen we universele toetscombinaties die in de meeste desktopomgevingen werken. De nadruk ligt op sneltoetsen voor het terminalvenster. Basis Linux-sneltoetsen Laten we beginnen met de algemene combinaties die dagelijkse handelingen versnellen. Veel van deze sneltoetsen gebruiken de Super-toets, die overeenkomt met de Windows-toets in Windows of de Cmd-toets in macOS. Bijvoorbeeld: Super + Spatie om toetsenbordindelingen te wisselen is vergelijkbaar met Windows + Spatie of Cmd + Spatie. Belangrijke combinaties: Alt + Tab of Super + Tab – Wisselt tussen vensters (zoals in Windows). Super + Spatie – Wisselt tussen meerdere toetsenbordindelingen. Super + A – Opent het toepassingsmenu (meestal linksonder). F2 – Hernoemt bestanden. Selecteer een bestand, druk op F2 en voer een nieuwe naam in. Ctrl + Alt + T – Opent een terminalvenster (een van de belangrijkste Linux-sneltoetsen). Alt + F2 – Opent een opdrachtvenster in het midden van het scherm om programma’s te starten. Super + D – Minimaliseert alle vensters en toont het bureaublad. Ctrl + Alt + Del – Toont een venster met “Annuleren” of “Afmelden”. Als je niets kiest, wordt na 60 seconden automatisch afgemeld. Deze combinaties helpen elke gebruiker om productiever te werken in Linux. Laten we nu de meer geavanceerde terminal-sneltoetsen bekijken. Linux-terminal sneltoetsen De terminal is het belangrijkste hulpmiddel om met de Linux-shell te communiceren. De volgende combinaties helpen je sneller en efficiënter te werken. Beheer van terminalvensters Gebruik deze sneltoetsen om tabs en vensters snel te openen, te wisselen of te sluiten: Ctrl + Shift + Q – Sluit het volledige terminalvenster. Ctrl + Shift + T – Opent een nieuwe terminaltab. Ctrl + Shift + W – Sluit de huidige tab (of het venster als er slechts één tab is). Ctrl + Shift + D – Scheidt de huidige tab af naar een nieuw venster. Ctrl + PgUp / PgDown – Wisselt tussen tabs (vorige/volgende). Cursornavigatie binnen een regel Omdat Linux-gebruikers vooral met het toetsenbord werken, besparen deze sneltoetsen tijd bij het navigeren door commando’s: Ctrl + A (of Home) – Verplaatst de cursor naar het begin van de regel. Ctrl + E (of End) – Verplaatst de cursor naar het einde van de regel. Ctrl + X, X – Wisselt tussen het begin van de regel en de oorspronkelijke positie. Ctrl + → / ← of Alt + F / B – Verplaatst de cursor één woord vooruit of achteruit. Invoer en bewerking Naast cursorbewegingen versnellen deze sneltoetsen het bewerken van commando’s: Tab – Autovoltooiing van commando’s of paden.Eén keer drukken voltooit automatisch, twee keer drukken toont alle opties. Ctrl + T – Verwisselt de laatste twee tekens voor de cursor. Alt + T – Verwisselt de laatste twee woorden voor de cursor. Alt + Backspace – Verwijdert het woord vóór de cursor. Alt + D – Verwijdert alles na de cursor tot het volgende spatie. Alt + U / Alt + L – Zet tekst rechts van de cursor om naar hoofdletters of kleine letters. Klembordbewerkingen Gebruik deze toetsen om tekst te knippen, kopiëren en plakken in de terminal: Ctrl + W – Verwijdert het woord vóór de cursor. Ctrl + U – Verwijdert alles van de cursor tot het begin van de regel. Ctrl + K – Verwijdert alles van de cursor tot het einde van de regel. Ctrl + Y – Plakt de laatst verwijderde tekst weer in. Geschiedenis van opdrachten Met deze combinaties kun je door de commandohistorie navigeren en eerder gebruikte opdrachten snel terughalen. Om de lijst met uitgevoerde commando’s te zien: history Andere nuttige combinaties: Ctrl + R – Zoekt naar eerder gebruikte commando’s.Druk op Enter om uit te voeren of op Esc om te annuleren. Ctrl + O – Voert het gevonden commando uit. Alt + < – Gaat naar het eerste commando in de geschiedenis. Scherm- en procesbeheer Deze combinaties regelen de uitvoer van de terminal en het gedrag van actieve processen: Ctrl + C – Onderbreekt het actieve proces onmiddellijk (SIGINT-signaal). Ctrl + D – Sluit de terminal (alternatief voor exit). Ctrl + Z – Pauzeert het actieve proces en stuurt het naar de achtergrond.Gebruik fg om het terug te brengen, of jobs om achtergrondprocessen te zien. Ctrl + L – Maakt het terminalscherm leeg (alternatief voor clear). Ctrl + S / Ctrl + Q – Pauzeert (S) of hervat (Q) de uitvoer van het scherm. Handig om informatie tijdelijk te bekijken of te kopiëren. Nieuwe sneltoetsen toevoegen of aanpassen In sommige Linux-distributies werken bepaalde sneltoetsen niet of ontbreken ze.Elke omgeving heeft een eigen standaardlijst, maar je kunt deze naar wens aanpassen. Zo doe je dat: Druk op Super + A om het toepassingsmenu te openen. Zoek en open Instellingen. Ga naar het tabblad Apparaten → Toetsenbord. Rechts zie je de lijst met standaard sneltoetsen. Klik op een opdracht om deze te wijzigen of een nieuwe combinatie toe te wijzen. Klik op het ‘+’ onderaan om een aangepaste sneltoets toe te voegen.Vul de naam, de opdracht en de gewenste toetsencombinatie in. Conclusie Dit artikel heeft de belangrijkste Linux-sneltoetsen behandeld die het werk van gebruikers versnellen en vereenvoudigen. Dit is uiteraard geen volledige lijst – er bestaan nog veel meer combinaties voor verschillende Linux-distributies. Met deze sneltoetsen kun je je dagelijkse taken in Linux aanzienlijk efficiënter uitvoeren en de productiviteit in het terminalvenster verhogen.
28 October 2025 · 5 min to read
Linux-systeem

Hoe bestanden downloaden met cURL

Het downloaden van inhoud van externe servers is een veelvoorkomende taak voor zowel beheerders als ontwikkelaars. Hoewel er veel tools voor deze taak bestaan, onderscheidt cURL zich door zijn flexibiliteit en eenvoud. Het is een opdrachtregelprogramma dat protocollen zoals HTTP, HTTPS, FTP en SFTP ondersteunt, wat het onmisbaar maakt voor automatisering, scripting en efficiënte bestandsoverdrachten. Je kunt cURL rechtstreeks op je computer uitvoeren om bestanden op te halen. Je kunt het ook in scripts opnemen om gegevensbeheer te stroomlijnen, waardoor handmatige fouten en inspanning worden verminderd. Deze gids laat verschillende manieren zien om bestanden te downloaden met cURL. Aan de hand van deze voorbeelden leer je hoe je omgaat met omleidingen, bestanden hernoemt en de voortgang van downloads bewaakt. Aan het einde zul je cURL zelfverzekerd kunnen gebruiken voor taken op servers of in cloudomgevingen. Basis cURL-commando voor het downloaden van bestanden Het commando curl werkt met meerdere protocollen, maar wordt voornamelijk gebruikt met HTTP en HTTPS om verbinding te maken met webservers. Indien nodig kan het ook communiceren met FTP- of SFTP-servers. Standaard haalt cURL een bron op van een opgegeven URL en toont deze in je terminal (standaarduitvoer). Dit is handig om de inhoud van een bestand te bekijken zonder het op te slaan, vooral bij kleine tekstbestanden. Voorbeeld: om de inhoud van een tekstbestand te bekijken dat wordt gehost op https://example.com/file.txt, voer je uit: curl https://example.com/file.txt Voor korte tekstbestanden is deze methode geschikt. Voor grote of binaire bestanden kan het scherm echter worden overspoeld met onleesbare gegevens, dus meestal wil je ze opslaan in plaats van weergeven. Externe bestanden opslaan Vaak is het hoofddoel om het gedownloade bestand lokaal op te slaan in plaats van het in de terminal te bekijken. cURL maakt dit eenvoudig met de optie -O (hoofdletter O), die de originele bestandsnaam behoudt. curl -O https://example.com/file.txt Dit haalt file.txt op en slaat het op in de huidige map met dezelfde naam. Deze methode is snel en behoudt de oorspronkelijke bestandsnaam, wat handig kan zijn als de naam betekenisvol is. Een andere bestandsnaam kiezen Soms is het belangrijk om het gedownloade bestand een andere naam te geven om conflicten te vermijden of een duidelijk naamgevingssysteem te hanteren. Gebruik in dat geval de optie -o (kleine o): curl -o mijnbestand.txt https://example.com/file.txt Hier downloadt cURL het externe bestand file.txt maar slaat het lokaal op als mijnbestand.txt. Dit helpt bij het organiseren van bestanden en voorkomt onbedoelde overschrijvingen. Dit is vooral nuttig in scripts die beschrijvende bestandsnamen vereisen. Omleidingen volgen Wanneer een bestand wordt opgevraagd, kan de server de client instrueren om naar een andere URL te gaan. Het begrijpen en volgen van omleidingen is essentieel voor succesvolle downloads. Waarom omleidingen belangrijk zijn Omleidingen worden vaak gebruikt op herschikte websites, verplaatste bestanden of mirrorlinks. Zonder ondersteuning voor omleidingen stopt cURL na een “verplaatst”-reactie, en ontvang je het bestand niet. Gebruik van -L of --location Om cURL een reeks omleidingen te laten volgen tot het einddoel, gebruik je -L (of --location): curl -L -O https://example.com/redirected-file.jpg Hierdoor kan cURL het juiste bestand ophalen, zelfs als de oorspronkelijke URL elders naar verwijst. Als je -L weglaat, zal cURL alleen het omleidingsbericht weergeven en stoppen, wat problematisch is voor sites met meerdere omleidingen. Meerdere bestanden downloaden cURL kan ook meerdere bestandsdownloads tegelijk verwerken, zodat je het commando niet herhaaldelijk hoeft uit te voeren. Gebruik van accolades en patronen Als bestandsnamen een patroon delen, kun je accolades {} gebruiken om ze beknopt op te geven: curl -O https://example.com/files/{file1.jpg,file2.jpg,file3.jpg} cURL haalt elk bestand opeenvolgend op, wat handig is voor geautomatiseerde workflows. Gebruik van reeksen Voor een reeks genummerde of alfabetisch gelabelde bestanden kun je een bereik opgeven tussen rechte haken: curl -O https://example.com/files/file[1-5].jpg cURL doorloopt automatisch de bestanden file1.jpg tot file5.jpg. Dit is ideaal voor reeksen bestanden met consistente namen. Meerdere downloads koppelen Als je verschillende URL’s hebt voor elk bestand, kun je ze aan elkaar koppelen: curl -O https://example1.com/file1.jpg -O https://example2.com/file2.jpg Met deze aanpak downloadt cURL file1.jpg van de eerste site en file2.jpg van de tweede, zonder meerdere commando’s uit te voeren. Snelheidsbeperking en time-outs In sommige situaties wil je mogelijk de downloadsnelheid beperken of voorkomen dat cURL te lang wacht op een niet-reagerende server. Beheer van bandbreedte Om te voorkomen dat je netwerk overbelast raakt of om trage omstandigheden te simuleren, kun je de downloadsnelheid beperken met --limit-rate: curl --limit-rate 2M -O https://example.com/bigfile.zip 2M staat voor 2 megabyte per seconde. Je kunt ook K voor kilobytes of G voor gigabytes gebruiken. Time-outs Als een server te traag is, kun je cURL na een bepaalde tijd laten stoppen. De optie --max-time doet precies dat: curl --max-time 60 -O https://example.com/file.iso Hier stopt cURL na 60 seconden, wat handig is in scripts die snel moeten mislukken. Stille en uitgebreide modus cURL kan de uitvoer aanpassen om minimale of uitgebreide informatie weer te geven. Stille downloads Voor batchtaken of cronjobs waarbij je geen voortgangsbalk nodig hebt, gebruik je -s (of --silent): curl -s -O https://example.com/file.jpg Dit verbergt voortgang en fouten, wat zorgt voor schonere logbestanden. Probleemoplossing is echter moeilijker bij een stille fout. Uitgebreide modus In tegenstelling hiermee geeft -v (of --verbose) gedetailleerde informatie over verzoeken en antwoorden: curl -v https://example.com De uitgebreide uitvoer is waardevol bij het oplossen van problemen zoals ongeldige SSL-certificaten of onjuiste omleidingen. Authenticatie en beveiliging Sommige downloads vereisen inloggegevens of een beveiligde verbinding. HTTP/FTP-authenticatie Wanneer een server een gebruikersnaam en wachtwoord vereist, gebruik je -u: curl -u username:password -O https://example.com/protected/file.jpg Het direct opnemen van inloggegevens kan riskant zijn, omdat ze zichtbaar kunnen zijn in logboeken of proceslijsten. Overweeg om omgevingsvariabelen of .netrc-bestanden te gebruiken voor veiliger beheer. HTTPS en certificaten Standaard controleert cURL SSL-certificaten. Als het certificaat ongeldig is, blokkeert cURL de overdracht. Je kunt deze controle overslaan met -k of --insecure, maar dat brengt beveiligingsrisico’s met zich mee. Gebruik indien mogelijk een vertrouwde certificaatautoriteit om geverifieerde verbindingen te behouden. Gebruik van een proxy In sommige omgevingen moet het verkeer via een proxyserver lopen voordat het de bestemming bereikt. Downloaden via een proxy Gebruik de optie -x of --proxy om de proxy te specificeren: curl -x http://proxy_host:proxy_port -O https://example.com/file.jpg Vervang proxy_host en proxy_port door de juiste gegevens. cURL stuurt het verzoek naar de proxy, die vervolgens het bestand namens jou ophaalt. Proxy-authenticatie Als je proxy inloggegevens vereist, voeg deze dan toe aan de URL: curl -x https://proxy.example.com:8080 -U myuser:mypassword -O https://example.com/file.jpg Ook hier geldt: het opslaan van gevoelige gegevens in platte tekst is gevaarlijk. Gebruik in plaats daarvan omgevingsvariabelen of configuratiebestanden. Downloadvoortgang volgen Het volgen van de voortgang is belangrijk bij grote bestanden of trage verbindingen. Standaard voortgangsmeter Standaard toont cURL een voortgangsmeter met de totale grootte, overdrachtsnelheid en geschatte resterende tijd. Bijvoorbeeld: % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100  1256  100  1256    0     0   2243      0 --:--:-- --:--:-- --:--:--  2246 Dit overzicht helpt je te beoordelen hoeveel er nog resteert en of de overdrachtsnelheid acceptabel is. Compacte voortgangsbalk Als je minder details wilt, voeg dan -# toe: curl -# -O https://example.com/largefile.iso Een eenvoudigere balk toont de algemene voortgang in procenten. Deze is overzichtelijker, maar bevat geen gedetailleerde statistieken zoals de huidige snelheid. Voortgang registreren in scripts Wanneer je cURL in scripts gebruikt, wil je de voortgangsgegevens mogelijk vastleggen. Normaal gesproken stuurt cURL deze informatie naar stderr, dus je kunt dit omleiden: curl -# -O https://example.com/largefile.iso 2>progress.log Hier bevat progress.log de statusupdates, die je later kunt analyseren of opslaan. Conclusie cURL is een flexibel opdrachtregelprogramma voor het downloaden van bestanden via verschillende protocollen en omgevingen. Of je nu complexe omleidingen moet afhandelen, bestanden dynamisch wilt hernoemen of de bandbreedte wilt beperken – cURL biedt alle nodige opties. Door de belangrijkste parameters en modi onder de knie te krijgen, kun je cURL naadloos integreren in je dagelijkse workflow voor scripting, automatisering en efficiënte bestandsoverdrachten.
20 October 2025 · 8 min to read

Heb je vragen,
opmerkingen of zorgen?

Onze professionals staan altijd klaar om je te helpen,
of je nu hulp nodig hebt of gewoon niet weet waar te beginnen
E-mail ons
Hostman's Support