La comanda journalctl serveix per consultar els registres (logs) del sistema en qualsevol distribució amb systemd: Debian, Ubuntu, Fedora, Rocky, Alma, Arch, Raspberry Pi OS… Hi trobaràs els missatges del nucli, dels serveis, de l’arrencada i de la majoria de programes, tot en un sol lloc i amb filtres molt potents per data, servei, prioritat o text. És la primera eina que cal fer servir quan alguna cosa falla.
Què és el journal i com funciona
El servei systemd-journald recull els missatges del sistema i els desa en un format binari i indexat (el journal), en lloc dels fitxers de text de /var/log. Això permet fer cerques molt ràpides i filtrar per camps (servei, PID, usuari, prioritat…), i journalctl és l’eina per llegir-lo.
Coses a saber:
- Permisos: un usuari normal només veu els seus propis missatges. Per veure els de tot el sistema, cal
sudoo pertànyer al grupsystemd-journaloadm. - On es desa: si existeix el directori
/var/log/journal, el registre és persistent i es conserva entre reinicis; si no, es desa a la memòria (/run/log/journal) i es perd en apagar. A Debian (des de la versió 11), Ubuntu i Fedora és persistent per defecte. Raspberry Pi OS, en canvi, el configura en memòria per estalviar escriptures a la targeta SD (Storage=volatile). - rsyslog: molts sistemes encara envien una còpia dels missatges a fitxers de text com
/var/log/syslog, però a Debian 12 i posteriorsrsyslogja no s’instal·la per defecte, i el journal és l’única font.
Sintaxi
journalctl [opcions] [camp=valor...]
Sense opcions, mostra tots els registres, del més antic al més recent, dins d’un paginador (less): fes servir les fletxes per moure’t, / per cercar, G per anar al final i q per sortir.
Opcions més útils
| Opció | Què fa |
|---|---|
-e | Obre el paginador directament al final (els missatges més recents) |
-r | Ordre invers: els més recents primer |
-n N | Només les N últimes entrades |
-f | Segueix els missatges nous en temps real (com tail -f) |
-u servei | Només els missatges d’una unitat de systemd, p. ex. -u ssh |
-b / -b -1 | Només l’arrencada actual / l’anterior |
--list-boots | Llista les arrencades que hi ha al registre |
-k | Missatges del nucli de l’arrencada actual (com dmesg) |
-p prioritat | Prioritat mínima: emerg, alert, crit, err, warning, notice, info, debug |
-S, --since / -U, --until | Des de / fins a una data |
-g patró | Només els missatges que coincideixen amb el patró (expressió regular) |
-t identificador | Per identificador de syslog, p. ex. -t sudo |
-o format | Format de sortida: short-iso, cat, json, json-pretty, verbose… |
-x | Afegeix explicacions als missatges que en tenen |
--no-pager | Escriu directament al terminal, sense paginador |
--disk-usage | Espai que ocupa el registre |
Exemples
Els últims missatges
$ journalctl -n 3
Oct 04 09:05:26 servidor avahi-daemon[741]: Registering new address record for fe80::a886:24ff:fe96:ceea on vethceda2f0.*.
Oct 04 09:05:34 servidor systemd[1]: NetworkManager-dispatcher.service: Deactivated successfully.
Oct 04 09:05:35 servidor kernel: [UFW BLOCK] IN=eth0 OUT= ... SRC=203.0.113.34 DST=192.168.0.134 ... PROTO=UDP SPT=7005 DPT=51413 LEN=112
Cada línia té la data, el nom de l’equip, el programa amb el seu PID entre claudàtors i el missatge.
Per veure-ho tot però començant pel final:
journalctl -e
En temps real
journalctl -f
Molt útil mentre reinicies un servei o reprodueixes un error en una altra finestra. Es pot combinar amb altres filtres: journalctl -f -u apache2.
Els missatges d’un servei
$ sudo journalctl -u ssh -n 2
Oct 04 09:04:23 servidor sshd-session[2165687]: Failed password for root from 203.0.113.84 port 33414 ssh2
Oct 04 09:04:26 servidor sshd-session[2165687]: Connection closed by authenticating user root 203.0.113.84 port 33414 [preauth]
És el primer que has de mirar quan un servei no arrenca, juntament amb systemctl status servei. El nom de la unitat canvia segons la distribució: ssh a Debian i Ubuntu, sshd a Fedora i RHEL; apache2 o httpd.
Només errors
$ sudo journalctl -p err -b -n 3
Oct 04 03:35:36 servidor sshd-session[2120562]: error: kex_exchange_identification: read: Connection reset by peer
Oct 04 04:24:19 servidor sshd-session[2126627]: error: Protocol major versions differ: 2 vs. 1
Oct 04 07:41:38 servidor sshd-session[2151235]: error: kex_exchange_identification: read: Connection reset by peer
-p err mostra els missatges de prioritat err i les més greus (crit, alert, emerg). També es pot indicar un interval: -p warning..err.
Per dates
journalctl --since "2026-10-01" --until "2026-10-02"
journalctl --since "1 hour ago"
journalctl --since yesterday -u cron
journalctl --since "09:00" --until "09:30"
Per arrencada
journalctl --list-boots
journalctl -b # arrencada actual
journalctl -b -1 # l'anterior: útil si l'equip s'ha penjat o reiniciat sol
Si -b -1 respon no persistent journal was found, el registre no és persistent i es va perdre en reiniciar (vegeu més avall com activar-lo).
Missatges del nucli
journalctl -k
És l’equivalent a dmesg: detecció de maquinari, errors de disc, discos USB que es connecten, el tallafoc…
Cercar un text
$ sudo journalctl -g 'Failed password' -n 2
Oct 04 08:55:32 servidor sshd-session[2160402]: Failed password for invalid user admin from 198.51.100.90 port 25804 ssh2
Oct 04 09:04:23 servidor sshd-session[2165687]: Failed password for root from 203.0.113.84 port 33414 ssh2
-g no distingeix majúscules de minúscules si el patró és tot en minúscules.
Per camps: PID, usuari, programa
journalctl _PID=1234
journalctl _UID=1000
journalctl _COMM=sshd-session
journalctl -t sudo # qui ha fet servir sudo
Amb -o verbose o -o json-pretty veuràs tots els camps que té cada entrada i que pots fer servir com a filtre.
Exportar a un fitxer
journalctl -b -u apache2 --no-pager > registre_apache.txt
journalctl -b -o short-iso --no-pager > arrencada.txt
Quan redirigeixes la sortida, journalctl ja no fa servir el paginador. El format short-iso posa l’any i la zona horària, que el format normal no mostra.
Mida i manteniment
$ journalctl --disk-usage
Archived and active journals take up 70.8M in the file system.
Per defecte, el journal pot ocupar fins al 10 % del sistema de fitxers (amb un màxim de 4 GiB). Per reduir-lo:
sudo journalctl --vacuum-size=500M # deixa'l en 500 MiB
sudo journalctl --vacuum-time=30d # esborra el que tingui més de 30 dies
Per fixar-ne un límit permanent, crea /etc/systemd/journald.conf.d/mida.conf amb:
[Journal]
SystemMaxUse=500M
i reinicia el servei amb sudo systemctl restart systemd-journald.
Activar el registre persistent
Si la teva distribució el desa només a la memòria, crea un fitxer /etc/systemd/journald.conf.d/persistent.conf:
[Journal]
Storage=persistent
i reinicia systemd-journald. A partir d’aquí, journalctl -b -1 funcionarà després de cada reinici. En un Raspberry Pi amb targeta SD, tingues en compte que augmenten les escriptures.