1. Gestion des paquets #
Installer, mettre à jour, retirer.
apt et dnf #
| Action | Debian / Ubuntu | RHEL / Rocky / Fedora |
|---|---|---|
| Mettre à jour l'index | apt update | dnf check-update |
| Mettre à jour le système | apt upgrade | dnf upgrade |
| Installer | apt install nginx | dnf install nginx |
| Supprimer | apt remove / purge | dnf remove |
| Chercher | apt search | dnf search |
| Infos | apt show | dnf info |
| Quel paquet fournit ce fichier ? | dpkg -S /usr/bin/ss | dnf provides /usr/bin/ss |
| Paquets installés | dpkg -l / apt list --installed | rpm -qa |
| Historique | /var/log/apt/history.log | dnf 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 # RHELBonne 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 #
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.targetsudo systemctl daemon-reload # après toute modification d'unité
sudo systemctl enable --now app
systemd-analyze security app # score d'exposition du serviceBonne Pratique : Ne modifiez jamais les fichiers de/usr/lib/systemd/system(écrasés par les mises à jour) : créez une surcharge avecsystemctl edit.
3. Les journaux #
journald et les fichiers de /var/log.
journalctl #
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 tailleFichiers classiques #
| Fichier | Contenu |
|---|---|
/var/log/syslog ou messages | journal général (rsyslog) |
/var/log/auth.log ou secure | authentifications, sudo, SSH |
/var/log/kern.log | noyau |
/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 # simulation4. Planifier des tâches #
cron et timers systemd.
cron #
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.shErreur 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.targetsudo systemctl enable --now backup.timer
systemctl list-timers
systemd-analyze calendar 'Mon..Fri 08:00' # vérifier une expressionMon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
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.