Ga naar hoofdinhoud

Processen & Packages

Elk programma dat draait op je systeem is een process. Of het nu je teksteditor is, een webserver of een achtergrondtaak — Linux beheert alles als processen. In deze sectie leer je processen inspecteren, stoppen en op de achtergrond sturen. We bekijken ook hoe je software installeert en hoe services werken.

Wat is een process?

Wanneer je een programma start, maakt de kernel een nieuw process aan. Dat process krijgt een stuk geheugen toebedeeld, een uniek ID en begint zijn werk. Zodra het klaar is, geeft het zijn middelen terug.

Elk process heeft:

  • Een uniek PID (Process ID) — een getal waarmee Linux het identificeert
  • Een PPID (Parent Process ID) — het process dat dit process gestart heeft
  • Een eigenaar — de gebruiker als wie het process draait
  • Een status: draaiend (R), slapend (S), gestopt (T) of zombie (Z)

Processen vormen een boom: systemd is het oudste process (PID 1) dat bij het opstarten wordt gestart, en is de voorouder van alle andere processen.


Processen inspecteren

ps — snapshot van actieve processen

ps (process status) geeft een momentopname van de actieve processen op het moment dat je het commando uitvoert. ps aux is de meest gebruikte variant: het toont alle processen van alle gebruikers.

ps aux # Alle processen van alle gebruikers
ps aux | grep nginx # Zoek een specifiek process
ps -ef # Alternatief formaat met PPID zichtbaar

Voorbeeld van ps aux output:

USER PID %CPU %MEM VSZ RSS STAT COMMAND
root 1 0.0 0.1 16952 5000 Ss /sbin/init
jan 1234 0.5 2.1 456789 12000 S python3 server.py
www-data 5678 0.0 0.5 98765 3000 S nginx: worker process

Kolommen:

KolomBetekenis
USERGebruiker als wie het process draait
PIDProcess ID
%CPUPercentage van één CPU-kern in gebruik
%MEMPercentage van het RAM in gebruik
STATStatus: R=running, S=sleeping, Z=zombie, T=stopped
COMMANDHet commando dat het process gestart heeft

top en htop — live procesmonitor

ps geeft een momentopname, maar top en htop tonen een live beeld dat elke paar seconden vernieuwt. Je ziet welke processen de meeste CPU of RAM gebruiken, en je kunt ze er direct vanuit stoppen.

top # Standaard live monitor (ingebouwd)
htop # Uitgebreidere versie met kleuren en muisondersteuning

In top: druk q om af te sluiten, k om een process te stoppen (vraagt om PID), M om te sorteren op geheugengebruik.

htop is overzichtelijker — je kunt er met de muis op een process klikken en F9 drukken om het te stoppen. Het is niet standaard geïnstalleerd:

sudo apt install htop

pgrep — PID opzoeken op naam

pgrep is handig als je het PID van een process nodig hebt zonder door de volledige ps aux output te moeten zoeken:

pgrep nginx # Toon alle PID's van processen met 'nginx' in de naam
pgrep -a python # Toon PID's én de volledige commandoregel

Processen stoppen

Signalen

Je stopt een process door het een signaal te sturen. Signalen zijn berichten die het process vertellen wat het moet doen. De meest gebruikte:

SignaalNummerWat het betekent
SIGTERM15"Stop alsjeblieft" — het process mag netjes afsluiten
SIGKILL9"Stop nu" — geforceerd, het process kan dit niet negeren
SIGHUP1"Herlaad je configuratie" — servers gebruiken dit voor hot reload

Het verschil tussen SIGTERM en SIGKILL is cruciaal: SIGTERM geeft het process de kans om open bestanden op te slaan, verbindingen te sluiten en netjes af te ronden. SIGKILL snijdt het process abrupt af. Gebruik SIGKILL enkel als SIGTERM niet werkt.

kill, killall, pkill

kill 1234 # Stuur SIGTERM naar PID 1234 (vriendelijk)
kill -9 1234 # Stuur SIGKILL (geforceerd)
kill -SIGHUP 1234 # Stuur SIGHUP (herlaad configuratie)

killall nginx # Stop alle processen met naam 'nginx'
pkill -f "python server.py" # Stop process op basis van het volledige commando
SIGTERM voor SIGKILL

Probeer altijd eerst kill <PID> (SIGTERM). Geef het process een paar seconden. Reageert het niet? Dan pas kill -9. Zo verlies je geen data door een ruw afbreken.


Achtergrondprocessen

Normaal blokkeert een commando je terminal totdat het klaar is. Wil je ondertussen iets anders doen, dan stuur je het naar de achtergrond.

Process op de achtergrond starten

./lang-script.sh & # Start direct op de achtergrond

Het & aan het einde stuurt het process naar de achtergrond. Linux toont het job-nummer en het PID:

[1] 5678

Je terminal is meteen vrij voor het volgende commando.

Lopend process naar de achtergrond sturen

# Terwijl een process draait:
Ctrl+Z # Pauzeer het process (SIGSTOP)
bg %1 # Stuur het naar de achtergrond (hervat het)

Jobs beheren

jobs # Toon alle achtergrondprocessen van de huidige shell
fg %1 # Breng job 1 terug naar de voorgrond
bg %1 # Stuur gestopt job naar de achtergrond

nohup — blijven draaien na logout

Normaal worden achtergrondprocessen gestopt zodra je uitlogt. Met nohup (no hangup) blijft het process draaien, ook als je de verbinding verbreekt — handig voor lange taken op een server.

nohup ./verwerk-data.sh & # Draait door na logout
nohup ./server.sh > server.log 2>&1 & # Met logbestand

Package management met apt

Een package is een gestructureerd installatiepakket: het bevat de programmabestanden, configuratie, documentatie en informatie over afhankelijkheden (andere packages die het nodig heeft). Een package manager installeert alles automatisch in de juiste volgorde.

apt (Advanced Package Tool) is de package manager voor Debian/Ubuntu. Het communiceert met online repositories — servers die duizenden packages hosten.

sudo apt update # Haal de nieuwste lijst van beschikbare packages op
sudo apt upgrade # Installeer alle beschikbare updates
sudo apt install nginx # Installeer een package
sudo apt install -y nginx # Installeer zonder bevestigingsvraag (-y = yes)
sudo apt remove nginx # Verwijder een package (configuratie blijft)
sudo apt purge nginx # Verwijder package én configuratiebestanden
sudo apt autoremove # Verwijder packages die niet meer nodig zijn
sudo apt search zoekterm # Zoek naar een package op naam of beschrijving
apt show nginx # Toon informatie over een package
Altijd eerst update

Voer altijd sudo apt update uit voordat je iets installeert. De packagelijst op je systeem is een lokale cache — zonder update probeert apt een mogelijk verouderde versie te installeren.


Servicebeheer met systemctl

Een service (of daemon) is een achtergrondprogramma dat permanent draait: een webserver, database, SSH-server, ... Ze starten automatisch op bij het opstarten van het systeem en blijven draaien totdat je ze stopt.

systemd is het systeem dat services beheert op moderne Linux-distributies. Je communiceert ermee via systemctl.

sudo systemctl start nginx # Start de service nu
sudo systemctl stop nginx # Stop de service
sudo systemctl restart nginx # Stop en start opnieuw (voor configuratiewijzigingen)
sudo systemctl reload nginx # Herlaad configuratie zonder herstart
sudo systemctl status nginx # Toon status, PID en recente logs
sudo systemctl enable nginx # Laat de service automatisch starten bij het opstarten
sudo systemctl disable nginx # Schakel automatisch opstarten uit

systemctl status geeft veel informatie in één oogopslag:

● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled)
Active: active (running) since Mon 2025-06-01 10:00:00 UTC; 2h ago
Process: ExecStart=/usr/sbin/nginx
Main PID: 1234 (nginx)
Tasks: 2 (limit: 4915)
Memory: 5.2M

Het verschil tussen start en enable: start start de service onmiddellijk maar niet bij de volgende herstart. enable zorgt dat de service automatisch start bij elk opstarten. Voor een productieserver gebruik je doorgaans beide:

sudo systemctl enable --now nginx # Enable én start meteen

Overzicht

CommandoWat het doet
ps auxMomentopname van alle actieve processen
top / htopLive procesmonitor
pgrep <naam>PID's opzoeken op procesnaam
kill <PID>Vriendelijk stoppen (SIGTERM)
kill -9 <PID>Geforceerd stoppen (SIGKILL)
killall <naam>Alle processen met die naam stoppen
<cmd> &Process op de achtergrond starten
Ctrl+Z + bg %1Lopend process naar de achtergrond
jobsAchtergrondprocessen tonen
fg %NJob naar de voorgrond brengen
nohup <cmd> &Process blijft draaien na logout
apt updatePakketlijst vernieuwen
apt install <pkg>Package installeren
apt remove <pkg>Package verwijderen
systemctl status <svc>Status van een service bekijken
systemctl start/stop <svc>Service starten of stoppen
systemctl enable <svc>Service automatisch laten opstarten