RousselTMLEARNING

Systèmes & Linux

Paquets, services systemd, journaux et tâches planifiées

Installer et mettre à jour des logiciels avec apt et dnf, piloter les services avec systemctl, écrire une unité systemd, lire les journaux avec journalctl et planifier des tâches avec cron et les timers systemd.

1. Gestion des paquets #

Installer, mettre à jour, retirer.

apt et dnf #

Installation d'un paquet
Toujours lancer apt update avant apt install : l'index local peut être périmé.
ActionDebian / UbuntuRHEL / Rocky / Fedora
Mettre à jour l'indexapt updatednf check-update
Mettre à jour le systèmeapt upgradednf upgrade
Installerapt install nginxdnf install nginx
Supprimerapt remove / purgednf remove
Chercherapt searchdnf search
Infosapt showdnf info
Quel paquet fournit ce fichier ?dpkg -S /usr/bin/ssdnf provides /usr/bin/ss
Paquets installésdpkg -l / apt list --installedrpm -qa
Historique/var/log/apt/history.logdnf history
sudo apt update && sudo apt upgrade -y
apt list --upgradable
sudo apt autoremove            # dépendances devenues inutiles
sudo apt-mark hold postgresql-16   # bloquer une version
cat /var/run/reboot-required 2>/dev/null   # redémarrage nécessaire (noyau, libc)

Dépôts et mises à jour automatiques #

Les paquets viennent de dépôts signés (/etc/apt/sources.list.d/, /etc/yum.repos.d/). Ajoutez un dépôt tiers uniquement depuis l'éditeur officiel, avec sa clé GPG.

sudo apt install unattended-upgrades && sudo dpkg-reconfigure -plow unattended-upgrades   # Debian/Ubuntu
sudo dnf install dnf-automatic && sudo systemctl enable --now dnf-automatic.timer        # RHEL
Bonne Pratique : Appliquez automatiquement les correctifs de sécurité, mais planifiez les mises à jour majeures (et les redémarrages) dans une fenêtre de maintenance, d'abord sur un serveur de test.

2. Les services avec systemd #

Démarrer, arrêter, diagnostiquer.

systemctl #

Cycle de vie d'un service systemd
Un service activé redémarre au boot ; Restart= le relance après un crash.
systemctl status nginx                 # état, PID, derniers logs
sudo systemctl start|stop|restart nginx
sudo systemctl reload nginx            # relire la configuration sans couper
sudo systemctl enable --now nginx      # activer au boot et démarrer
sudo systemctl disable nginx
systemctl is-active nginx ; systemctl is-enabled nginx
systemctl --failed                     # services en échec
systemctl list-units --type=service --state=running
systemctl cat nginx                    # fichier d'unité effectif
sudo systemctl edit nginx              # surcharge (drop-in) sans toucher au paquet
sudo systemctl mask nginx              # empêcher tout démarrage

Écrire une unité #

# /etc/systemd/system/app.service
[Unit]
Description=API de commandes
After=network-online.target
Wants=network-online.target

[Service]
User=app
WorkingDirectory=/srv/app
EnvironmentFile=/etc/app/app.env
ExecStart=/srv/app/bin/server --port 8080
Restart=on-failure
RestartSec=5
# Durcissement
NoNewPrivileges=true
ProtectSystem=strict
ReadWritePaths=/var/lib/app
PrivateTmp=true

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload     # après toute modification d'unité
sudo systemctl enable --now app
systemd-analyze security app     # score d'exposition du service
Bonne Pratique : Ne modifiez jamais les fichiers de /usr/lib/systemd/system (écrasés par les mises à jour) : créez une surcharge avec systemctl edit.

3. Les journaux #

journald et les fichiers de /var/log.

journalctl #

Circuit des journaux
Le journal est persistant si /var/log/journal existe (Storage=persistent).
journalctl -u nginx -f                 # suivre un service
journalctl -u app --since "1 hour ago"
journalctl -p warning -b               # avertissements et pires, depuis le boot
journalctl -k                          # messages du noyau
journalctl _PID=1234
journalctl -o json-pretty -n 1         # champs structurés
journalctl --disk-usage
sudo journalctl --vacuum-size=500M     # limiter la taille

Fichiers classiques #

FichierContenu
/var/log/syslog ou messagesjournal général (rsyslog)
/var/log/auth.log ou secureauthentifications, sudo, SSH
/var/log/kern.lognoyau
/var/log/<service>/logs applicatifs (nginx, postgresql)

logrotate fait tourner, compresse et supprime les anciens fichiers selon /etc/logrotate.d/.

# /etc/logrotate.d/app
/var/log/app/*.log {
    daily
    rotate 14
    compress
    delaycompress
    missingok
    notifempty
    copytruncate
}
sudo logrotate -d /etc/logrotate.d/app   # simulation

4. Planifier des tâches #

cron et timers systemd.

cron #

Champs d'une ligne crontab
*/5 dans le champ minute signifie « toutes les 5 minutes ».
crontab -e            # tâches de l'utilisateur
sudo crontab -l -u root
ls /etc/cron.d /etc/cron.daily
# min heure jour mois jour_semaine  commande
30 2 * * *   /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
*/5 * * * *  /usr/local/bin/check.sh
0 8 * * 1-5  /usr/local/bin/rapport.sh
Erreur Courante : cron s'exécute avec un environnement minimal (PATH réduit, pas de variables du shell) : utilisez des chemins absolus et redirigez la sortie, sinon les erreurs passent inaperçues.

Timers systemd #

Un timer déclenche un service : on bénéficie des journaux de journald, des dépendances, de Persistent=true (rattraper une exécution manquée pendant un arrêt) et d'un délai aléatoire.

# /etc/systemd/system/backup.service
[Unit]
Description=Sauvegarde quotidienne
[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

# /etc/systemd/system/backup.timer
[Unit]
Description=Planification de la sauvegarde
[Timer]
OnCalendar=*-*-* 02:30
RandomizedDelaySec=15m
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl enable --now backup.timer
systemctl list-timers
systemd-analyze calendar 'Mon..Fri 08:00'   # vérifier une expression

Articles liés

Architecture d'un système Linux : noyau, démarrage et arborescence

Comprendre comment fonctionne un serveur Linux : noyau et espace utilisateur, séquence de démarrage UEFI, GRU…

Le shell Bash et les fichiers : navigation, redirections, pipes et traitement de texte

Maîtriser la ligne de commande Linux : chemins, manipulation de fichiers, jokers, redirections, pipes, recher…

Utilisateurs, groupes, sudo et permissions sous Linux

Gérer les comptes Linux (useradd, usermod, passwd, chage), les groupes, sudo et visudo, les permissions rwx e…

Pour aller plus loin