← Sommaire SkyLinux

Leçon 49 : journalctl — Explorer et filtrer les logs systemd

Objectif

Découvrir journalctl, l'outil principal pour consulter les logs gérés par **systemd-journald**. Vous apprendrez à filtrer, chercher et analyser les événements de votre système.

Prérequis

1. Qu'est-ce que journalctl ?

Depuis systemd, les logs ne sont plus écrits uniquement dans des fichiers texte classiques (comme /var/log/syslog). Ils sont collectés par **journald** dans un format binaire structuré. journalctl est l'outil pour les interroger.

**Avantages :**

2. Commandes de base

Lire les logs (les plus récents en bas)

journalctl

Les 50 dernières lignes (style tail -f)

journalctl -n 50

Suivre les nouveaux logs en temps réel

journalctl -f

Logs du boot actuel uniquement

journalctl -b

3. Filtrer par service

Logs d'un service spécifique

journalctl -u nginx.service

journalctl -u sshd.service

journalctl -u NetworkManager.service

Combiner : service + lignes récentes

journalctl -u nginx.service -n 20

Logs depuis le dernier démarrage d'un service

journalctl -u nginx.service --since "1 hour ago"

4. Filtrer par date et heure

Depuis une date précise

journalctl --since "2026-04-10 09:00:00"

Aujourd'hui

journalctl --since today

Hier

journalctl --since yesterday --until "00:00:00"

Dernières 2 heures

journalctl --since "2 hours ago"

Intervalle de dates

journalctl --since "2026-04-09" --until "2026-04-10 10:00:00"

5. Filtrer par priorité (gravité)

Les niveaux de priorité (du + grave au + détail) :

NiveauNomSignification
0emergSystème inutilisable
1alertAction immédiate requise
2critCondition critique
3errErreur
4warningAvertissement
5noticeÉvénement normal notable
6infoInformation
7debugMessages de débogage

Voir uniquement les erreurs et pires

journalctl -p err

Erreurs et avertissements

journalctl -p warning..err

6. Filtrer par processus ou utilisateur

Tous les logs d'un PID

journalctl _PID=1234

Tous les logs d'un utilisateur (UID)

journalctl _UID=1000

Logs du noyau (kernel)

journalctl -k

Logs d'un exécutable spécifique

journalctl /usr/sbin/nginx

7. Options utiles

Afficher les timestamps en heure locale

journalctl --local

# Ou configurer dans /etc/systemd/journald.conf :

# Localize=yes

Taille des logs affichée

journalctl --disk-usage

Purger les anciens logs

# Supprimer les logs de plus de 7 jours

journalctl --vacuum-time=7d

# Garder seulement les 500 Mo de logs

journalctl --vacuum-size=500M

Voir le début des logs (logs antiques)

journalctl --list-boots # Lister les boots disponibles

journalctl -b -1 # Boot précédent

8. Exemples pratiques

Trouver pourquoi un service a échoué

# Voir le statut du service

systemctl status nginx

# Logs du service nginx

journalctl -u nginx.service -n 100 --no-pager

# Erreurs récentes

journalctl -u nginx.service -p err --since "1 hour ago"

Analyser les tentatives de connexion SSH

# Connexions SSH récentes

journalctl -u sshd.service --since "24 hours ago"

# Connexions échouées

journalctl -u sshd.service | grep "Failed"

Surveiller les erreurs disque

# Logs du noyau liés aux disques

journalctl -k | grep -i "error\|disque\|sda"

# Erreurs SCSI/SATA

journalctl -k | grep -i "sd\|ata"

Trouver qui a redémarré le système

journalctl -k | grep -i "reboot\|shutdown\|power"

9. Configuration de journald

Le fichier de configuration principal :

sudo nano /etc/systemd/journald.conf

Options courantes :

```ini

[Journal]

# Taille max des fichiers de logs

SystemMaxUse=500M

# Durée de conservation

MaxRetentionSec=30day

# Compression des logs

Compress=yes

# Synchronisation

SyncIntervalSec=5m

Après modification :

bash

sudo systemctl restart systemd-journald

## 10. Créer un alias pratique

Ajoutez à votre ~/.bashrc :

bash

# Alias pour journalctl

alias jctl='journalctl -n 50 --no-pager'

alias jerr='journalctl -p err -n 50 --no-pager'

alias jfollow='journalctl -f --no-pager'

Appliquez :

bash

source ~/.bashrc

## Résumé des commandes principales

| Commande | Description |

|---------------------------------|-------------------------------------|

| journalctl | Tous les logs |

| journalctl -u service | Logs d'un service |

| journalctl -b | Logs du boot actuel |

| journalctl -f | Suivre en temps réel |

| journalctl -n 50 | 50 dernières lignes |

| journalctl --since today | Logs d'aujourd'hui |

| journalctl -p err | Erreurs uniquement |

| journalctl -k | Logs du noyau |

| journalctl --disk-usage | Espace utilisé par les logs |

| journalctl --vacuum-time=7d | Supprimer logs de plus de 7 jours |

---

## Exercices pratiques

1. Affichez les 30 dernières lignes de logs de votre système :

bash

journalctl -n 30

2. Trouvez les erreurs des 24 dernières heures :

bash

journalctl -p err --since "24 hours ago"

3. Consultez les logs de votre interface réseau :

bash

journalctl -u NetworkManager.service -n 20

4. Créez un alias jerr dans votre .bashrc pour voir rapidement les erreurs, puis testez-le.

5. Vérifiez l'espace disque utilisé par les logs et supprimez les logs de plus de 3 jours :

bash

journalctl --disk-usage

journalctl --vacuum-time=3d

---

## Pour aller plus loin

- man journalctl — documentation complète

- man journald.conf — configuration du démon

- logger — écrire dans les logs depuis un script :

bash

logger -p local0.info "Mon message personnalisé"

```


**Navigation**

[← Leçon précédente : AWK — Manipuler et transformer du texte](48-awk-manipuler-texte.html)

[Sommaire](index.html)


* Cours SkyLinux - Leçon 49 par Sire Aselophe