Aller au contenu

Linux : processus, services et réseau de base

Cette page présente les réflexes de base pour savoir ce qui tourne sur une machine, relancer un service et vérifier la connectivité. Les approfondissements sont dans Linux avancé, systemd et Pare-feu.

Un processus est un programme en cours d’exécution, identifié par un PID.

Fenêtre de terminal
ps aux # tous les processus
ps aux | grep nginx # filtrer
ps -ef --forest # arborescence parent-enfant
pgrep -a nginx # PID par nom
top # vue en direct (q pour quitter)
htop # version plus agréable (sudo apt install htop)

Dans top : P trie par processeur, M par mémoire, k envoie un signal à un processus, q quitte. Les colonnes utiles : PID, USER, %CPU, %MEM, COMMAND.

Fenêtre de terminal
kill 1234 # demande d'arrêt propre (SIGTERM)
kill -9 1234 # arrêt brutal (SIGKILL) : en DERNIER recours
pkill nginx # par nom
killall -TERM node

Toujours essayer kill (propre) avant kill -9 (le programme n’a alors aucune chance d’enregistrer ses données). Pour les signaux et états en détail : Linux avancé : processus et ressources.

Fenêtre de terminal
./long-calcul.sh & # lancer en arrière-plan
jobs # tâches de ce terminal
fg %1 # ramener au premier plan
# Ctrl+Z puis bg : suspendre, puis relancer en arrière-plan
nohup ./long-calcul.sh > sortie.log 2>&1 & # survit à la fermeture du terminal

Pour une tâche longue sur un serveur, préférer tmux (Terminal et navigation) ou un service systemd (ci-dessous).

Un service (démon) est un programme lancé au démarrage et géré par systemd.

Fenêtre de terminal
systemctl status nginx # état et dernières lignes de journal
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx # arrêt puis démarrage (coupure brève)
sudo systemctl reload nginx # recharge la configuration sans coupure (si pris en charge)
sudo systemctl enable nginx # démarrer automatiquement au boot
sudo systemctl disable nginx
sudo systemctl enable --now nginx # activer ET démarrer
systemctl is-active nginx
systemctl is-enabled nginx
systemctl list-units --type=service --state=running
systemctl --failed # services en échec
État affiché Sens
active (running) Fonctionne
inactive (dead) Arrêté
failed A échoué : lire le journal
enabled / disabled Démarre ou non au boot

Voir systemd : les bases et systemd : écrire un service pour créer le sien.

Fenêtre de terminal
journalctl -u nginx -n 50 # 50 dernières lignes du service
journalctl -u nginx -f # suivre en direct (Ctrl+C pour arrêter)
journalctl -p err -b # erreurs depuis le démarrage
journalctl --since "1 hour ago"
journalctl -xe # fin du journal avec explications
sudo tail -f /var/log/syslog
sudo tail -n 50 /var/log/auth.log # connexions, sudo

Quand un service échoue : systemctl status, puis journalctl -u <service> -n 50. La cause y figure presque toujours. Détails : systemd : le journal et Linux avancé : journaux et diagnostic.

Fenêtre de terminal
free -h # mémoire (regarder « available »)
df -h # espace disque
du -sh /var/log # taille d'un dossier
uptime # charge moyenne sur 1, 5, 15 minutes
nproc # nombre de processeurs
lscpu | head
Constat Interprétation
available très faible dans free Manque de mémoire (le « cache » n’est pas un problème)
df -h à 100 % sur / Disque plein : chercher avec du
Charge supérieure au nombre de cœurs de façon durable Machine saturée
Fenêtre de terminal
ip -br addr # adresses des interfaces
ip route # route par défaut (passerelle)
hostname -I # adresses IP de la machine
ping -c 4 1.1.1.1 # accès au réseau (adresse IP)
ping -c 4 exemple.com # + résolution DNS
curl -I https://exemple.com # un site web répond-il ? (en-têtes)
curl -s https://api.exemple.com/sante
ss -tlnp # ports en écoute et programmes
resolvectl status | head -20 # serveurs DNS utilisés
Étape Commande Si ça échoue
1. La machine a-t-elle une adresse ? ip -br addr Câble, DHCP, configuration réseau
2. Joint-elle la passerelle ? ping -c 3 <passerelle> (de ip route) Réseau local
3. Joint-elle Internet par IP ? ping -c 3 1.1.1.1 Passerelle, pare-feu
4. Résout-elle les noms ? ping -c 3 exemple.com DNS (Linux avancé : réseau)
5. Le service répond-il ? curl -I https://exemple.com Service, pare-feu distant
Fenêtre de terminal
sudo ss -tlnp | grep ':80' # quel programme écoute sur le port 80 ?
nc -vz serveur.exemple.com 22 # le port 22 de cette machine est-il joignable ?
sudo ufw status # pare-feu local

Écouter sur 127.0.0.1 rend un service inaccessible de l’extérieur ; 0.0.0.0 ou * l’expose sur toutes les interfaces (Pare-feu : UFW).

Fenêtre de terminal
curl -O https://exemple.com/fichier.tar.gz
curl -L -o sortie.html https://exemple.com/
wget https://exemple.com/fichier.tar.gz
sha256sum fichier.tar.gz # vérifier l'intégrité si une empreinte est publiée
Fenêtre de terminal
ssh alice@monserveur
ssh -p 2222 alice@monserveur.exemple.com
exit # fermer la session

Voir SSH : installation et SSH : clés.

Fenêtre de terminal
sudo reboot
sudo shutdown -r now # redémarrer
sudo shutdown -h +10 "arrêt dans 10 minutes"
sudo shutdown -c # annuler
uptime -s # depuis quand tourne la machine
Fenêtre de terminal
crontab -e # éditer ses tâches
crontab -l
# m h jour mois jour-semaine commande
30 3 * * * /usr/local/bin/sauvegarde.sh >> /var/log/sauvegarde.log 2>&1
systemctl list-timers # minuteurs systemd

Pour la planification robuste (verrous, journaux, rattrapage), voir Linux avancé : sauvegarde et automatisation et systemd : minuteurs.

Symptôme Piste
Un service ne démarre pas systemctl status, journalctl -u <service> -n 50, erreur de configuration
Failed to start … Unit not found Nom du service incorrect : systemctl list-unit-files | grep <nom>
Job for … failed because the control process exited Configuration invalide : tester avec la commande du service (nginx -t)
Port déjà utilisé (Address already in use) sudo ss -tlnp | grep :<port> : un autre programme l’occupe
kill sans effet Processus qui ignore SIGTERM : kill -9 en dernier recours
Machine lente top (processeur), free -h (mémoire), df -h (disque)
ping fonctionne mais pas curl Pare-feu, service arrêté, mauvais port
ping: Temporary failure in name resolution DNS : resolvectl status

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »

Les commandes sont identiques. systemd est en version 255 sur 24.04 et 259 sur 26.04 ; /tmp est en mémoire sur 26.04.