# 5.2 - Surveiller et arrêter les processus

Un **processus** est une instance d'un programme en cours d'exécution. Il possède un identifiant unique, le PID, ainsi qu'un propriétaire et un état.

## Lister les processus

```bash
ps
ps aux
ps -ef
ps -u "$USER"
ps -p 1234 -o pid,ppid,user,%cpu,%mem,etime,cmd
```

Rechercher par nom :

```bash
pgrep -a sshd
pidof sshd
```

Éviter `ps aux | grep nom` lorsque `pgrep -a nom` suffit.

## Surveiller en direct

```bash
top
htop
```

Dans `top`, `P` trie par processeur, `M` par mémoire et `q` quitte. `htop` est plus convivial mais n'est pas toujours installé.

Résumé de la mémoire :

```bash
free -h
```

Sous Linux, une partie de la mémoire « utilisée » sert de cache récupérable. La colonne `available` est généralement plus pertinente que `free` seule.

## Envoyer un signal

```bash
kill 1234           # SIGTERM : demande un arrêt propre
kill -15 1234       # identique
kill -9 1234        # SIGKILL : arrêt forcé par le noyau
pkill -TERM nom
```

Méthode recommandée :

1. vérifier le PID et le propriétaire ;
2. envoyer `SIGTERM` ;
3. attendre et contrôler ;
4. utiliser `SIGKILL` seulement si le processus ne répond pas.

`SIGKILL` empêche le programme de nettoyer ses fichiers temporaires ou de terminer une écriture.

## Tâches au premier et à l'arrière-plan

```bash
commande-longue &
jobs
fg %1
bg %1
```

Suspendre le programme au premier plan avec `Ctrl` + `Z`, puis utiliser `bg` ou `fg`. `Ctrl` + `C` demande son interruption.

Garder une commande après la fermeture du terminal :

```bash
nohup commande-longue > commande.log 2>&1 &
```

Pour les tâches importantes, préférer un service systemd, `tmux` ou `screen`, qui offrent une gestion plus claire.

## Priorité

```bash
nice -n 10 commande
renice 10 -p 1234
```

Une valeur `nice` plus élevée réduit la priorité CPU. Des valeurs négatives demandent généralement des privilèges.

Pour un service, agir avec `systemctl` plutôt que tuer directement son processus : le gestionnaire peut sinon le relancer immédiatement.