journalctl-commando: gebruik, logs per service en de journaalgrootte opschonen

TestomgevingRHEL-familieAlmaLinux 9.8systemd 252root-accountDebian 12 gewoon accountGecontroleerd op 2026-11-05
Commando's voor systeeminfo · instellingenjournalctlLocatie/usr/bin/journalctl

Het commando journalctl is het hulpmiddel waarmee je de logs die services en de kernel in het systemd-journaal achterlaten, selecteert en leest. Op Linux met systemd verzamelt systemd-journald deze logs in het journaal. Bij het lezen van logs per service, tijd en prioriteit op een AlmaLinux 9-server en een Debian 12-server zag een gewoon account alleen zijn eigen logs, en kon een server die het journaal in het geheugen houdt geen eerdere opstart kiezen.

De uitvoer hieronder komt van de twee servers. Hostnamen, accounts, boot-ID's, de procesnummers op de AlmaLinux-server en de release van het systemd-pakket zijn vervangen door voorbeeldwaarden, en beide servers gaven de tijd in UTC weer.

1️⃣ Het journalctl-commando gebruiken en recente logs lezen

Als je journalctl zonder opties uitvoert, opent het journaal in less vanaf de oudste regel. Voor recente logs stel je daarom met -n het aantal regels in. Laat je het getal na -n weg, dan krijg je 10 regels.

journalctl -n 3
Oct 28 07:14:06 server1 systemd[1]: session-3017.scope: Deactivated successfully.
Oct 28 07:14:06 server1 systemd[1]: session-3017.scope: Consumed 3.934s CPU time.
Oct 28 07:14:07 server1 sudo[851987]: pam_unix(sudo:session): session closed for user user

Een regel bestaat uit de tijd, de hostnaam, het programma dat de log schreef met zijn procesnummer, en het bericht. Met -r wordt de volgorde omgedraaid en staat de nieuwste regel bovenaan. In de crond-log van de AlmaLinux-server stond de laatst geschreven CMDEND-regel bovenaan.

journalctl -r -u crond -n 3
Oct 28 07:01:01 server1 CROND[841384]: (root) CMDEND (run-parts /etc/cron.hourly)
Oct 28 07:01:01 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron
Oct 28 07:01:01 server1 CROND[841388]: (root) CMD (run-parts /etc/cron.hourly)

-f stopt niet na de laatste regel, maar blijft nieuw binnenkomende regels weergeven. Op de Debian 12-server bleef met -q en -t myapp de laatste logger-regel op het scherm staan, en werden met logger nog twee regels geschreven. De twee regels verschenen er direct onder.

journalctl -q -f -n 1 -t myapp
Oct 28 07:12:46 server2 myapp[347704]: journalctl error test
Oct 28 07:14:35 server2 myapp[347881]: follow line 1
Oct 28 07:14:36 server2 myapp[347877]: follow line 2

-f stopt pas als je op Ctrl+C drukt, dus gebruik het om de log te volgen terwijl een service herstart.

In less worden regels die breder zijn dan het scherm rechts afgekapt; het afgekapte deel bekijk je met de pijltjestoetsen. Uitvoer naar een pipe of bestand gaat niet via less. Om zonder less direct in de terminal te tonen, voeg je --no-pager toe.

2️⃣ journalctl-logs per service

Recente regels mengen de logs van veel services. Om de log van één service te zien, geef je daarom met -u de unitnaam op. De .service aan het eind van de unitnaam mag je weglaten.

journalctl -u crond -n 4
Oct 28 06:01:01 server1 CROND[802926]: (root) CMDEND (run-parts /etc/cron.hourly)
Oct 28 07:01:01 server1 CROND[841388]: (root) CMD (run-parts /etc/cron.hourly)
Oct 28 07:01:01 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron
Oct 28 07:01:01 server1 CROND[841384]: (root) CMDEND (run-parts /etc/cron.hourly)

Schrijf je -u twee keer, dan verschijnen de logs van beide services door elkaar in tijdsvolgorde. Toen op de AlmaLinux-server crond en nginx samen werden gekozen voor 18 oktober van 08:00 tot 08:15, volgden op vier crond-regels om 08:01 twee nginx reload-regels om 08:12.

journalctl -u nginx -u crond --since '2026-10-18 08:00' --until '2026-10-18 08:15'
Oct 18 08:01:01 server1 CROND[381522]: (root) CMD (run-parts /etc/cron.hourly)
Oct 18 08:01:01 server1 run-parts[381528]: (/etc/cron.hourly) starting 0anacron
Oct 18 08:01:01 server1 run-parts[381534]: (/etc/cron.hourly) finished 0anacron
Oct 18 08:01:01 server1 CROND[381518]: (root) CMDEND (run-parts /etc/cron.hourly)
Oct 18 08:12:30 server1 systemd[1]: Reloading nginx - high performance web server...
Oct 18 08:12:30 server1 systemd[1]: Reloaded nginx - high performance web server.

systemctl status toont onder de servicestatus alleen de laatste 10 logregels, dus oudere logs bekijk je met journalctl -u. Direct nadat je systemctl restart voor een service hebt uitgevoerd, voer je journalctl -u uit om de opstartlog te controleren.

Logs die scripts of cron-taken met logger schreven, vind je via hun label (identifier), niet via een unit. Achter -t schrijf je dezelfde naam als bij -t van logger.

logger -t myapp 'journalctl test message'

Op de Debian 12-server toonde logger niets op het scherm, en de geschreven regels werden gevonden met -t myapp.

journalctl -q -t myapp
Oct 28 07:12:44 server2 myapp[347693]: journalctl test message

-g houdt alleen regels over waarvan het bericht een bepaalde tekst bevat. Schrijf je de zoektekst helemaal in kleine letters, dan wordt geen onderscheid gemaakt tussen hoofd- en kleine letters.

journalctl -u crond -g anacron -n 2
Oct 28 07:01:01 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron

-n telt de regels voordat -g filtert, dus van de laatste twee crond-regels bleef alleen die met anacron over.

3️⃣ Logs per tijdsbereik en per opstart

--since en --until bepalen het begin en eind van het weergegeven tijdsbereik. Staat er een spatie tussen datum en tijd, zet de waarde dan tussen enkele aanhalingstekens.

Waarde van --sinceBetekenis en wanneer je het gebruikt
'2026-10-28 06:00'Vanaf 06:00:00 die dag (zonder seconden geldt 00), als je weet wanneer het probleem begon
todayVanaf 00:00:00 vandaag, om alleen de logs van vandaag te zien
yesterdayVanaf gisteren 00:00:00 tot nu; voor alleen gisteren voeg je --until today toe
'-2h'Vanaf 2 uur geleden, om te zien wat er net gebeurde (hieronder gemeten)
'1 hour ago'Vanaf 1 uur geleden, hetzelfde als -1h

Op de AlmaLinux-server begonnen de laatste 2 uur bij de crond-regels van 06:01; hieronder staan de eerste vier daarvan.

journalctl -u crond --since '-2h' | head -4
Oct 28 06:01:01 server1 CROND[802930]: (root) CMD (run-parts /etc/cron.hourly)
Oct 28 06:01:01 server1 run-parts[802936]: (/etc/cron.hourly) starting 0anacron
Oct 28 06:01:01 server1 CROND[802926]: (root) CMDEND (run-parts /etc/cron.hourly)
Oct 28 07:01:01 server1 CROND[841388]: (root) CMD (run-parts /etc/cron.hourly)

-b houdt alleen logs sinds de huidige opstart over. Zoek je waarom een server opnieuw is opgestart, kijk dan eerst in de lijst met opstarts of er nog logs van de vorige opstart zijn.

journalctl -b -u crond -n 2
Oct 28 07:01:01 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron
Oct 28 07:01:01 server1 CROND[841384]: (root) CMDEND (run-parts /etc/cron.hourly)

--list-boots toont voor elke opstart die in het journaal staat het nummer, de boot-ID en de tijd van de eerste en laatste regel.

journalctl --list-boots
IDX BOOT ID                          FIRST ENTRY                 LAST ENTRY
  0 4f1c2a9be0d34c7a8e6b5d20c1f3a7e9 Sat 2026-10-17 08:29:26 UTC Wed 2026-10-28 07:16:10 UTC

De AlmaLinux-server bewaart zijn journaal niet op schijf en had daarom maar één opstartrecord. Daardoor eindigde -b -1 voor de vorige opstart met alleen een melding.

journalctl -b -1
Specifying boot ID or boot offset has no effect, no persistent journal was found.

Logs van een vorige opstart kun je met -b -1 alleen lezen op servers die het journaal op schijf (/var/log/journal) opslaan.

4️⃣ journalctl-foutlogs en kernellogs

-p kiest regels op prioriteit van de log. Geef je één niveau op, dan verschijnen dat niveau en alle belangrijkere niveaus, en het niveau mag je als naam of als getal schrijven.

NiveauNumeriekBetekenis
emerg0Het systeem is onbruikbaar
alert1Er moet direct worden ingegrepen
crit2Kritieke fout
err3Fout
warning4Waarschuwing
notice5Normaal maar het opmerken waard; niveau van regels die logger zonder -p schrijft
info6Informatie
debug7Debugbericht

Na het schrijven van één err-regel met logger en kiezen met -p err viel de notice-regel met hetzelfde label (journalctl test message) weg en bleef alleen de err-regel over.

logger -t myapp -p user.err 'journalctl error test'; journalctl -q -t myapp -p err
Oct 28 07:12:46 server2 myapp[347704]: journalctl error test

Verbind je twee niveaus met twee punten, dan wordt alleen dat bereik getoond. Met warning..err blijven alleen de niveaus waarschuwing en fout over.

journalctl -q -t myapp -p warning..err
Oct 28 07:12:46 server2 myapp[347704]: journalctl error test

-k houdt alleen kernelberichten over en toont alleen regels sinds de huidige opstart.

journalctl -k -n 3
Oct 26 10:14:25 server1 systemd-rc-local-generator[96245]: /etc/rc.d/rc.local is not marked executable, skipping.
Oct 27 10:47:57 server1 systemd-rc-local-generator[512078]: /etc/rc.d/rc.local is not marked executable, skipping.
Oct 27 11:01:10 server1 systemd-rc-local-generator[520023]: /etc/rc.d/rc.local is not marked executable, skipping.

De laatste drie -k-regels op de AlmaLinux-server waren allemaal systemd-rc-local-generator-regels. Dit zijn berichten die in de logbuffer van de kernel zijn geschreven, dus ze worden opgeslagen met _TRANSPORT gelijk aan kernel en verschijnen ook bij -k.

5️⃣ Uitvoerformaten van journalctl

-o verandert het formaat van elke regel. De standaardwaarde short lijkt bijna op een syslog-bestand, en short-iso zet de tijd om naar het ISO 8601-formaat inclusief tijdzone. Na de overstap naar short-iso op de AlmaLinux-server kwam er +0000 achter de tijd.

journalctl -u crond -n 2 -o short-iso
2026-10-28T07:01:01+0000 server1 run-parts[841394]: (/etc/cron.hourly) starting 0anacron
2026-10-28T07:01:01+0000 server1 CROND[841384]: (root) CMDEND (run-parts /etc/cron.hourly)

cat haalt de tijd en de hostnaam weg en toont alleen het bericht, dus gebruik het als je berichten doorgeeft aan grep of een ander programma.

journalctl -u crond -n 2 -o cat
(/etc/cron.hourly) starting 0anacron
(root) CMDEND (run-parts /etc/cron.hourly)

json en json-pretty tonen de in het journaal opgeslagen velden als namen en waarden. Kies je velden met --output-fields, dan komen de velden voor cursor, tijd en boot-ID altijd mee. Ook toen op de Debian 12-server maar vier velden werden gekozen, verschenen __CURSOR, _BOOT_ID en twee tijdvelden mee.

journalctl -q -t myapp -n 1 -o json-pretty --output-fields=MESSAGE,PRIORITY,SYSLOG_IDENTIFIER,_PID
{
	"__REALTIME_TIMESTAMP" : "1793171676664200",
	"_PID" : "347877",
	"SYSLOG_IDENTIFIER" : "myapp",
	"MESSAGE" : "follow line 2",
	"__CURSOR" : "s=2a6f0c1d9e8b47a3b5c4d3e2f1a0b9c8;i=1a2b3;b=b7e3d1a04c9f4e2a8d6c5b1f0e2a9c47;m=17cf8fe36f5;t=65ee150cf1188;x=1f2e3d4c5b6a7980",
	"_BOOT_ID" : "b7e3d1a04c9f4e2a8d6c5b1f0e2a9c47",
	"PRIORITY" : "5",
	"__MONOTONIC_TIMESTAMP" : "1636264982261"
}

6️⃣ Opslaglocatie van het journaal en de grootte opschonen

Of het journaal in het geheugen of op schijf staat, bepaalt de waarde Storage= in journald.conf. De standaardwaarde auto slaat op schijf op als de map /var/log/journal bestaat, en anders in het geheugen (/run/log/journal).

🖥️ Wie logs schrijftServices, kernel, logger
systemd-journaldSlaat ontvangen logs op in journaalbestanden
/run/log/journalStorage=auto (geen map), geheugen, leeg na herstart
/var/log/journalStorage=persistent of auto (map aanwezig), schijf, blijft na herstart
🖥️ journalctlLeest en toont de journaalbestanden van beide mappen

De AlmaLinux-server had geen map /var/log/journal, dus het journaal stond alleen in /run/log/journal.

ls -ld /var/log/journal /run/log/journal
ls: cannot access '/var/log/journal': No such file or directory
drwxr-sr-x+ 4 root systemd-journal 80 Oct 17 08:30 /run/log/journal

De Debian 12-server had beide mappen, en het journaal bouwde zich op schijf op.

ls -ld /var/log/journal /run/log/journal
drwxr-sr-x+ 2 root systemd-journal   40 Oct  9 08:43 /run/log/journal
drwxr-sr-x+ 4 root systemd-journal 4096 Sep 24 12:52 /var/log/journal

Om logs na een herstart te bewaren, zet je Storage= in journald.conf op persistent en herstart je systemd-journald. Volgens de officiële handleiding wordt de map /var/log/journal zo nodig automatisch aangemaakt. Voor dit artikel zijn de instellingen niet gewijzigd.

Een journaal op schijf is als de zwarte doos van een vliegtuig, die je na een incident uitleest.

--disk-usage toont de totale grootte van de gearchiveerde journaalbestanden en de bestanden die nu in gebruik zijn. Bij een gewoon account op de Debian 12-server, met de [Hint]-melding bovenaan verborgen via -q, was het resultaat één regel: 6.6M.

journalctl -q --disk-usage
Archived and active journals take up 6.6M in the file system.

De maximale grootte van het journaal op schijf stel je in met SystemMaxUse=. Zonder waarde is de grens 10% van de grootte van het bestandssysteem (maximaal 4G), en in de journald.conf van de Debian 12-server stond 50M.

grep -v '^#' /etc/systemd/journald.conf | grep -v '^$'
[Journal]
SystemMaxUse=50M

Om oude journalen direct te verkleinen, stel je met --vacuum-size de te bewaren grootte of met --vacuum-time de te bewaren periode in. Beide commando's verwijderen journaalbestanden en zijn daarom voor dit artikel niet uitgevoerd.

journalctl --vacuum-size=200M

--vacuum-size=200M verwijdert gearchiveerde journaalbestanden, de oudste eerst, tot de totale grootte onder 200M ligt.

journalctl --vacuum-time=2weeks

--vacuum-time=2weeks verwijdert archiefbestanden die alleen regels ouder dan 2 weken bevatten.

vacuum verwijdert alleen gearchiveerde bestanden en laat de bestanden in gebruik staan, dus ook na het uitvoeren zakt het getal van --disk-usage mogelijk niet tot de opgegeven grootte.

Tekstlogs onder /var/log worden geschreven door rsyslog, dat los van journald werkt. Daarom worden de twee logs anders gelezen en beheerd.

Onderdeeljournald(journalctl)rsyslog
Lezenjournalctlcat, less, grep
Opslaglocatie/run/log/journal of /var/log/journal/var/log/messages (RHEL-familie) of /var/log/syslog (Debian-familie)
Grootte beherenSystemMaxUse en andere in journald.conflogrotate

7️⃣ Leesrechten en opties van het journalctl-commando

  • ↪️ Als een gewoon account geen logs ziet

🔲 Leesrechten

Voer je journalctl uit met een ander account dan root, dan verschijnt bovenaan een [Hint]-tekst en zie je alleen de logs die dat account schreef. Bij het zoeken naar nginx-logs met een gewoon account op de Debian 12-server kwam na de melding alleen [-- No entries --].

journalctl -u nginx -n 5
Hint: You are currently not seeing messages from other users and the system.
      Users in groups 'adm', 'systemd-journal' can see all messages.
      Pass -q to turn off this notice.
-- No entries --

Volgens id -nG hoorde dit account bij maar één groep en zat het niet in de groepen adm of systemd-journal die de melding noemt.

id -nG
user

De officiële handleiding legt uit dat accounts in de groepen systemd-journal, adm en wheel het hele journaal kunnen lezen. adm en wheel brengen ook andere rechten mee die de distributie bepaalt, en wheel staat vaak ook beheertaken toe, dus voor een account dat alleen logs leest past de groep systemd-journal.

usermod -aG systemd-journal user

Het usermod-commando dat de groep toevoegt, is voor dit artikel niet uitgevoerd. Log na het toevoegen van de groep opnieuw in en controleer de groepen met id -nG. Een account met beheerdersrechten ziet ook alle logs met sudo journalctl.

De [Hint]-tekst verberg je met -q. Ook met -q zie je echter alleen de regels die dat account schreef. --user leest het gebruikersjournaal van dat account en werkt alleen op servers die het journaal op schijf opslaan. Op de Debian 12-server, die het journaal op schijf houdt, verschenen de systemd- en logger-regels van dat account.

journalctl --user -n 3
Oct 28 07:12:35 server2 systemd[347665]: Reached target default.target - Main User Target.
Oct 28 07:12:35 server2 systemd[347665]: Startup finished in 181ms.
Oct 28 07:12:44 server2 myapp[347693]: journalctl test message

🔲 Opties van het journalctl-commando

📌 Belangrijkste opties: resultaten uit dit artikel

OptieTaakResultaat in dit artikel
-n regelsAlleen de laatste regels tonen; zonder getal 10 regels-n 3 toont de laatste drie regels
-rVolgorde omdraaien, nieuwste regel bovenaanIn de crond-log staat de laatst geschreven CMDEND-regel bovenaan
-fNa de laatste regel nieuwe regels blijven tonenDe twee met logger geschreven regels volgen direct eronder
-qMeldingen zoals [Hint] verbergenHet --disk-usage-resultaat van een gewoon Debian 12-account blijft één regel: 6.6M
-u unitAlleen de log van die service tonenMet twee keer -u volgen op vier crond-regels twee nginx reload-regels in tijdsvolgorde
-t labelAlleen logs met het label van logger -t tonen-t myapp toont de met logger geschreven regels
-g tekstAlleen regels tonen waarvan het bericht die tekst bevatVan de laatste twee crond-regels blijft alleen die met anacron over
--since, --untilBegin en eind van het weergegeven tijdsbereik--since '-2h' begint bij de crond-regels van 06:01
-bAlleen logs sinds de huidige opstart; -b -1 is de vorige opstartOp de AlmaLinux-server zonder journaal op schijf toont -b -1 alleen de melding [no persistent journal was found]
--list-bootsLijst van opstarts in het journaalDe AlmaLinux-server heeft maar één opstartrecord
-p niveauAlleen die prioriteit en belangrijkere niveaus tonen-p err laat de notice-regel weg en alleen de err-regel over; warning..err geeft dezelfde regel
-kAlleen kernelberichten van de huidige opstart tonenDe laatste drie regels zijn allemaal systemd-rc-local-generator-regels
-o formaatUitvoerformaat van elke regel wijzigenshort-iso zet +0000 achter de tijd; bij cat blijft alleen het bericht over
--output-fields veldenVelden kiezen in json-uitvoerOok met maar vier gekozen velden komen __CURSOR, _BOOT_ID en twee tijdvelden mee
--disk-usageTotale grootte van de journaalbestanden tonen6.6M bij een gewoon account op de Debian 12-server
--userGebruikersjournaal van dat account lezenOp de Debian 12-server verschijnen de systemd- en logger-regels van dat account
--utcTijden in UTC tonenOok op de AlmaLinux-server met eigen tijdzone gaan de tijden in de crond-log naar UTC
veld=waardeAlleen regels met die veldwaarde tonen_PID=347704 toont alleen de ene err-regel van logger

📎 Andere opties: volgens de officiële handleiding

OptieTaak
--no-pagerDirect in de terminal tonen zonder less
-e, --pager-endless openen aan het eind van het journaal; zonder -n 1000 regels
-x, --catalogUitlegtekst uit de berichtencatalogus aan logregels toevoegen
-a, --allVelden volledig tonen, ook met niet-afdrukbare tekens of zeer lange waarden
-N, --fieldsAlle veldnamen tonen die in het journaal worden gebruikt
-F, --field= veldAlle waarden van dat veld tonen
-D mapJournaal in de opgegeven map lezen in plaats van op de standaardlocatie
--file= bestandOpgegeven journaalbestand lezen; mag meerdere keren
--vacuum-size= grootteGearchiveerde journaalbestanden verwijderen, oudste eerst, tot onder de opgegeven grootte
--vacuum-time= periodeArchiefbestanden verwijderen die alleen regels ouder dan de opgegeven periode bevatten
--vacuum-files= aantalGearchiveerde journaalbestanden verwijderen tot het opgegeven aantal over is
--rotateJournaalbestanden in gebruik archiveren en nieuwe beginnen
--flushJournaal van het geheugen (/run/log/journal) naar schijf (/var/log/journal) verplaatsen, bij persistent-opslag

🔲 Simulator voor het journalctl-commando

In de simulator hieronder kun je zelf commando's typen om recente logs, logs per service, tijdsbereiken, prioriteiten en uitvoerformaten te bekijken.

Simulator voor het journalctl-commandosystemd 252
[root@server work]#
Werkt alleen in je browser; met logger geschreven regels verdwijnen bij herladen, en met ↑↓ haal je eerdere commando's terug.

🔢 FAQ & aanbevolen content

Met --utc wordt de tijd in UTC getoond, ongeacht de tijdzone-instelling van de server. Ook op de AlmaLinux-server met eigen tijdzone toonde de crond-log met --utc de tijd in UTC.

Schrijf je een veldnaam en waarde verbonden door een isgelijkteken, zoals journalctl _PID=347704, dan blijven alleen regels met die waarde over. Zoeken op het procesnummer van de err-regel van logger gaf alleen die regel, en samen met -u worden alleen regels getoond die aan beide voorwaarden voldoen.

🧭 Commando's voor systeeminfo · instellingen: aanbevolen inhoud 8 artikelen · 2 bronnen
🗂️ Commando's voor systeeminfo · instellingen
📄 CPU · RAM · schijf · OS-info 📄 uname · kernelversie 📄 free-commando 📄 uptime-commando
📄 timedatectl-commando 📄 localectl-commando
📄 logrotate 📄 journalctl-commando

ℹ️ Affiliatemelding
De content van deze site bevat affiliatelinks. Koopt een bezoeker via een van deze links een product of dienst, dan ontvangt deze site een commissie van de verkoper. Het bedrag dat de koper betaalt (bij acties gaat het omlaag ↓) wordt daardoor niet hoger. De vermelde prijzen, kortingen en voorraad gelden op het moment van schrijven en kunnen afwijken; controleer ze daarom vóór je aankoop bij de verkoper. Producten worden gekozen en beoordeeld volgens onze eigen criteria, en commissies hebben geen invloed op de volgorde of de inhoud van de beoordelingen.

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Laat zien dat je geen machine bent: 9   +   8   =