# 7.4 - Méthode de dépannage et mémo des commandes

## Méthode de dépannage

Une bonne résolution d'incident sépare les faits, les hypothèses et les modifications.

1. **Décrire le symptôme** : message exact, heure, utilisateur et action.
2. **Définir le périmètre** : une application, une machine, un VLAN ou tous les utilisateurs.
3. **Reproduire prudemment** : noter les étapes et éviter d'aggraver l'incident.
4. **Observer avant de modifier** : état du service, journaux, ressources, réseau.
5. **Formuler une hypothèse testable** : une cause à la fois.
6. **Changer une seule chose** : noter la commande et prévoir le retour arrière.
7. **Valider de bout en bout** : service, client, persistance après redémarrage si nécessaire.
8. **Documenter** : cause, correction, vérification et prévention.

## Collecte initiale

```bash
date
hostnamectl
uptime
systemctl --failed
free -h
df -hT
df -i
ip -brief address
ip route
```

Pour un service :

```bash
systemctl status mon-service --no-pager
journalctl -u mon-service --since "30 minutes ago" --no-pager
sudo ss -tulpn
```

## Mémo des commandes essentielles

| Besoin | Commande |
|---|---|
| savoir où je suis | `pwd` |
| lister en détail | `ls -lah` |
| changer de dossier | `cd chemin` |
| copier un dossier | `cp -a source destination` |
| déplacer/renommer | `mv -i source destination` |
| lire un gros fichier | `less fichier` |
| suivre un journal | `tail -F fichier.log` |
| rechercher du texte | `grep -RIn 'motif' chemin` |
| trouver un fichier | `find chemin -type f -name 'motif'` |
| espace disque | `df -hT` et `du -xhd1 chemin` |
| mémoire | `free -h` |
| processus | `ps aux`, `top`, `pgrep -a nom` |
| service | `systemctl status nom` |
| journaux | `journalctl -u nom -n 100` |
| réseau | `ip -brief address`, `ip route` |
| DNS | `getent hosts nom` |
| ports | `sudo ss -tulpn` |
| accès distant | `ssh utilisateur@serveur` |
| aide | `commande --help`, `man commande` |

## Commandes qui exigent une attention particulière

- `rm -rf` : suppression récursive sans confirmation.
- `chmod -R` et `chown -R` : changement récursif de droits ou propriétaire.
- `dd` : copie brute capable d'écraser un disque entier.
- `mkfs` : création d'un système de fichiers, donc destruction du contenu précédent.
- `fdisk`, `parted`, `zpool destroy` : modification ou destruction du stockage.
- `rsync --delete` : suppression dans la destination.
- modification de `/etc/fstab`, du réseau ou de SSH : risque de perte d'accès après redémarrage.

Avant une commande sensible :

```bash
whoami
pwd
ls -ld -- /chemin/cible
```

Utiliser ensuite un mode simulation lorsqu'il existe, par exemple `rsync -n`, puis relire la commande complète. Une sauvegarde n'est considérée valide qu'après un test de restauration.