52 lines
2.3 KiB
Markdown
52 lines
2.3 KiB
Markdown
# lsof
|
|
|
|
`lsof` signifie **List Open Files**. C'est un outil en ligne de commande qui affiche les fichiers ouverts par les processus en cours d'exécution sur un système Linux. Sous Linux, presque tout est un fichier : fichiers réguliers, sockets, pipes nommées, périphériques bloc et caractère. `lsof` permet donc d'inspecter aussi bien les fichiers classiques manipulés par une application que les connexions réseau ou les descripteurs ouverts par un démon.
|
|
|
|
C'est notamment l'outil de référence pour identifier le processus qui écoute sur un port donné ou qui retient un fichier verrouillé.
|
|
|
|
## Installer lsof
|
|
|
|
`lsof` n'est pas toujours présent par défaut, mais il figure dans les dépôts officiels de la plupart des distributions. Si la commande renvoie `command not found`, installez-la :
|
|
|
|
```bash
|
|
sudo apt update
|
|
sudo apt install lsof
|
|
```
|
|
|
|
## Lister les connexions réseau actives
|
|
|
|
L'option `-i` affiche les fichiers ouverts par les processus utilisant le réseau. Sans argument, elle liste toutes les connexions TCP et UDP en cours :
|
|
|
|
```bash
|
|
lsof -i
|
|
```
|
|
|
|
Vous obtenez le nom du processus, son PID, l'utilisateur propriétaire, le protocole, ainsi que les adresses et ports locaux et distants. Notez qu'un `sudo` est souvent nécessaire pour voir les connexions ouvertes par d'autres utilisateurs.
|
|
|
|

|
|
|
|
### Filtrer par port ou par protocole
|
|
|
|
Pour cibler un port précis :
|
|
|
|
```bash
|
|
lsof -i :993
|
|
```
|
|
|
|
Pour ne garder qu'un protocole :
|
|
|
|
```bash
|
|
lsof -i TCP
|
|
lsof -i UDP
|
|
```
|
|
|
|
Ces filtres se combinent (`lsof -i TCP:443`) et permettent rapidement d'identifier quel service occupe un port donné.
|
|
|
|
## Différence entre `netstat` et `lsof`
|
|
|
|
`netstat -tulpn` et `lsof -i` répondent à des besoins voisins, mais avec des angles différents :
|
|
|
|
- **`netstat -tulpn`** offre une vue synthétique des sockets en écoute et établies. C'est l'outil à privilégier pour un aperçu rapide de l'état réseau du système.
|
|
- **`lsof -i`** raisonne en termes de *fichiers ouverts* : il montre les connexions réseau, mais aussi le contexte du processus (utilisateur, descripteurs, fichiers associés). C'est le bon choix pour enquêter sur un processus précis ou diagnostiquer un port bloqué.
|
|
|
|
En pratique, les deux sont complémentaires : `netstat` (ou `ss`, son successeur moderne) pour l'inventaire, `lsof` pour l'investigation détaillée. |