🎯 Réponse rapide : Pour identifier l’ID d’un processus utilisant un port spécifique sous Linux, utilisez la commande lsof -i :numéro_port. Par exemple, lsof -i :80 affiche tous les processus utilisant le port 80.
📋 Exemple pratique immédiat
$ lsof -i :80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1234 www-data 6u IPv4 12345 0t0 TCP *:http (LISTEN)
Ici, le processus nginx avec le PID 1234 utilise le port 80.
🔧 Installation de lsof selon votre distribution
Avant d’utiliser lsof, vérifiez s’il est déjà installé avec which lsof. Si aucun résultat n’apparaît, installez-le selon votre distribution :
| Distribution | Commande d’installation |
|---|---|
| Ubuntu/Debian | sudo apt install lsof |
| RHEL/CentOS/Fedora | sudo yum install lsof ou sudo dnf install lsof |
| Arch Linux | sudo pacman -S lsof |
| OpenSUSE | sudo zypper install lsof |
⚡ Syntaxe de base et exemples concrets
La commande principale pour identifier un processus par port est simple :
lsof -i :numéro_port
Exemples d’usage courants :
- Port SSH (22) :
lsof -i :22 - Port HTTP (80) :
lsof -i :80 - Port HTTPS (443) :
lsof -i :443 - Port personnalisé (8080) :
lsof -i :8080
💡 Astuce
Pour spécifier le protocole, ajoutez TCP ou UDP : lsof -i tcp:80 ou lsof -i udp:53
📊 Comprendre la sortie de lsof
Chaque colonne de la sortie lsof fournit une information spécifique :
| Colonne | Description | Exemple |
|---|---|---|
| COMMAND | Nom du processus | nginx, httpd, sshd |
| PID | Identifiant unique du processus | 1234, 5678 |
| USER | Utilisateur propriétaire | root, www-data, apache |
| FD | Descripteur de fichier | 3u, 4u (u = lecture/écriture) |
| TYPE | Type de connexion | IPv4, IPv6 |
| NAME | Adresse réseau et état | *:http (LISTEN), 192.168.1.10:22 (ESTABLISHED) |
États de connexion importants :
- LISTEN : Le processus attend des connexions entrantes
- ESTABLISHED : Connexion active entre deux hôtes
- TIME_WAIT : Connexion fermée en attente de nettoyage
🎛️ Options avancées pour des recherches précises
Combinez ces options pour affiner vos recherches :
| Option | Fonction | Exemple d’utilisation |
|---|---|---|
-P |
Afficher les numéros de ports | lsof -P -i :80 |
-n |
Montrer les IP au lieu des noms | lsof -n -i :22 |
-t |
Afficher uniquement les PID | lsof -t -i :443 |
-u utilisateur |
Filtrer par utilisateur | lsof -u apache -i :80 |
Combinaisons utiles :
# Obtenir uniquement le PID d'un processus sur le port 80
lsof -t -i :80
# Afficher toutes les informations sans résolution DNS
lsof -Pn -i :443
# Rechercher les processus d'un utilisateur spécifique
lsof -u www-data -i
🛠️ Cas pratiques et scripts d’automatisation
Identifier rapidement un service web :
# Vérifier les services web actifs
lsof -i :80,443
# Trouver qui utilise le port SSH
lsof -i :22
Script de surveillance automatique :
#!/bin/bash
# Script de surveillance des ports critiques
echo "=== Surveillance des ports critiques ==="
for port in 22 80 443 3306 5432; do
echo "Port $port:"
lsof -i :$port | grep LISTEN || echo " Aucun processus en écoute"
echo ""
done
🚨 Résolution des problèmes courants
⚠️ Problème : Aucun résultat affiché
Solutions :
- Vérifiez que le port est bien utilisé avec
netstat -tulpn | grep :port - Utilisez sudo pour voir tous les processus :
sudo lsof -i :port - Le processus peut utiliser IPv6 :
lsof -i 6:port
🔑 Alternative avec netstat
Si lsof n’est pas disponible, utilisez netstat :
netstat -tulpn | grep :80
⚡ Actions après identification du processus
Une fois le PID identifié, plusieurs actions sont possibles :
Arrêter un processus :
# Arrêt normal
kill PID
# Arrêt forcé (en dernier recours)
kill -9 PID
# Exemple pratique
sudo kill $(lsof -t -i :8080)
Redémarrer un service :
# Redémarrer nginx
sudo systemctl restart nginx
# Redémarrer Apache
sudo systemctl restart apache2
❓ FAQ – Questions fréquentes
Comment voir tous les ports utilisés par un processus spécifique ?
Utilisez lsof -p PID -i où PID est l’identifiant de votre processus. Par exemple : lsof -p 1234 -i
Peut-on utiliser lsof sans privilèges administrateur ?
Oui, mais vous ne verrez que les processus appartenant à votre utilisateur. Pour voir tous les processus système, utilisez sudo lsof.
Quelle est la différence entre lsof et netstat ?
lsof affiche plus d’informations sur les fichiers ouverts et les connexions réseau, tandis que netstat se concentre uniquement sur les statistiques réseau. lsof est plus moderne et détaillé.
Comment surveiller un port en temps réel ?
Utilisez watch -n 2 'lsof -i :80' pour actualiser l’affichage toutes les 2 secondes, ou combinez avec tail -f pour surveiller les logs.
Est-ce que lsof fonctionne avec IPv6 ?
Oui, utilisez lsof -i 6:port pour spécifiquement rechercher les connexions IPv6, ou lsof -i 4:port pour IPv4 uniquement.