RousselTMLEARNING

Article · Administration Linux : de la découverte à l'expertise

Paquets, services systemd et journaux

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

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

Mon suivi

  • ⏱ Durée estimée : ≈ 14 min

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

✉️ Poser une question

Articles recommandés

Bonnes Pratiques Kubernetes

Meilleures pratiques pour sécuriser et optimiser les déploiements Kubernetes.

Comparaison Offres Kubernetes

Analyse complète des offres managées de Kubernetes avec points forts, fonctionnalités, tarificati...

Stratégies de placement Kubernetes

Présentation des stratégies de placement dans Kubernetes pour optimiser la gestion des charges de...

CNI Kubernetes : Flannel, Calico et Cilium comparés

Kubernetes CNI : comprendre les plugins réseau (Container Network Interface) et comparer Flannel,...

Gestionnaires de packages

Les différents gestionnaires de packages pour Kubernetes et leurs avantages.

Jobs vs Serverless

Comparaison entre les Jobs Kubernetes et le modèle Serverless pour le calcul de tâches en arrière...

PersistentVolume, PersistentVolumeClaim et StorageClass dans Kubernetes

PersistentVolume (PV), PersistentVolumeClaim (PVC) et StorageClass dans Kubernetes : différences,...

Resource Quota Kubernetes

Guide complet sur les quotas de ressources Kubernetes pour la gestion des namespaces.

ConfigMaps et Secrets

Guide complet sur les ConfigMaps et Secrets dans Kubernetes.