Comandes LinuxInformació del sistema Linux

journalctl a Linux: com consultar i filtrar els registres del sistema



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 sudo o pertànyer al grup systemd-journal o adm.
  • 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 posteriors rsyslog ja 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
-eObre el paginador directament al final (els missatges més recents)
-rOrdre invers: els més recents primer
-n NNomés les N últimes entrades
-fSegueix els missatges nous en temps real (com tail -f)
-u serveiNomés els missatges d’una unitat de systemd, p. ex. -u ssh
-b / -b -1Només l’arrencada actual / l’anterior
--list-bootsLlista les arrencades que hi ha al registre
-kMissatges del nucli de l’arrencada actual (com dmesg)
-p prioritatPrioritat mínima: emerg, alert, crit, err, warning, notice, info, debug
-S, --since / -U, --untilDes de / fins a una data
-g patróNomés els missatges que coincideixen amb el patró (expressió regular)
-t identificadorPer identificador de syslog, p. ex. -t sudo
-o formatFormat de sortida: short-iso, cat, json, json-pretty, verbose…
-xAfegeix explicacions als missatges que en tenen
--no-pagerEscriu directament al terminal, sense paginador
--disk-usageEspai 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.

Articles relacionats