10 Exemples de commandes lsof (List of Open Files) sous Linux
Il s’agit de notre série de commandes Linux en cours et dans cet article, nous allons passer en revue la commande lsof avec des exemples pratiques. lsde signifie 'LiSt Open Files' est utilisé pour savoir quels fichiers sont ouverts par quel processus Linux.
Comme nous le savons tous, Linux/Unix considère tout comme un fichier (tuyaux, sockets, répertoires, périphériques, etc.). L’une des raisons d’utiliser la commande lsof est lorsqu’un disque ne peut pas être démonté car elle indique que les fichiers sont utilisés. Avec l’aide de la commande lsof, nous pouvons facilement identifier les fichiers qui sont utilisés.
1. Répertorier tous les fichiers ouverts avec la commande lsof
Dans l’exemple ci-dessous, il affichera une longue liste de fichiers ouverts, certains d’entre eux sont extraits pour une meilleure compréhension, qui affiche les colonnes telles que Command, PID, USER, FD, TYPE, etc.
# lsof
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 /sbin/init
init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so
init 1 root 0u CHR 1,3 0t0 3764 /dev/null
init 1 root 1u CHR 1,3 0t0 3764 /dev/null
init 1 root 2u CHR 1,3 0t0 3764 /dev/null
init 1 root 3r FIFO 0,8 0t0 8449 pipe
init 1 root 4w FIFO 0,8 0t0 8449 pipe
init 1 root 5r DIR 0,10 0 1 inotify
init 1 root 6r DIR 0,10 0 1 inotify
init 1 root 7u unix 0xc1513880 0t0 8450 socketLes sections et leurs valeurs sont explicites. Cependant, nous examinerons les colonnes FD et TYPE plus précisément.
FD – signifie un descripteur de fichier et peut voir certaines des valeurs comme suit :
- Répertoire de travail actuel de cwd
- Répertoire racine rtd
- Texte du programme TXT (code et données)
- fichier mem mappé en mémoire
De plus, dans les numéros de colonne FD comme 1u est le descripteur de fichier réel et suivi de u,r,w de son mode comme :
- r pour l’accès en lecture.
- w pour accès en écriture.
- u pour l’accès en lecture et en écriture.
TYPE – de fichiers et son identification.
- DIR – Annuaire
- REG – Fichier régulier
- CHR – Fichier spécial de personnage.
- FIFO – Premier entré, premier sorti
2. Répertorier les fichiers ouverts spécifiques à l’utilisateur
La commande ci-dessous affichera la liste de tous les fichiers ouverts de l’utilisateur tecmint.
# lsof -u tecmint
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1838 tecmint cwd DIR 253,0 4096 2 /
sshd 1838 tecmint rtd DIR 253,0 4096 2 /
sshd 1838 tecmint txt REG 253,0 532336 188129 /usr/sbin/sshd
sshd 1838 tecmint mem REG 253,0 19784 190237 /lib/libdl-2.12.so
sshd 1838 tecmint mem REG 253,0 122436 190247 /lib/libselinux.so.1
sshd 1838 tecmint mem REG 253,0 255968 190256 /lib/libgssapi_krb5.so.2.2
sshd 1838 tecmint mem REG 253,0 874580 190255 /lib/libkrb5.so.3.33. Trouver des processus en cours d’exécution sur un port spécifique
Pour connaître tous les processus Linux en cours d’exécution d’un port spécifique, il suffit d’utiliser la commande suivante avec l’option -i. L’exemple ci-dessous répertorie tous les processus en cours d’exécution du port 22.
# lsof -i TCP:22
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)
sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)4. Répertorier uniquement les fichiers ouverts IPv4 et IPv6
L’exemple ci-dessous montre que seuls les fichiers réseau IPv4 et IPv6 ouverts avec des commandes distinctes.
# lsof -i 4
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
# lsof -i 6
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)5. Répertorier les fichiers ouverts des plages de ports TCP 1-1024
Pour répertorier tous les processus en cours d’exécution des fichiers ouverts du port TCP s’étend de 1 à 1024.
# lsof -i TCP:1-1024
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)
sshd 1471 root 4u IPv6 12685 0t0 TCP *:ssh (LISTEN)
master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)
sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1838 tecmint 3u IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
sshd 1871 root 3r IPv4 15842 0t0 TCP 192.168.0.2:ssh->192.168.0.1:groove (ESTABLISHED)
httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)
httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)6. Exclure l’utilisateur avec le caractère '^'
Ici, nous avons exclu l’utilisateur root. Vous pouvez exclure un utilisateur particulier à l’aide de '^' avec la commande comme indiqué ci-dessus.
# lsof -i -u^root
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 8u IPv4 11331 0t0 TCP *:sunrpc (LISTEN)
rpcbind 1203 rpc 9u IPv6 11333 0t0 UDP *:sunrpc
rpcbind 1203 rpc 10u IPv6 11335 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
rpc.statd 1277 rpcuser 5r IPv4 11836 0t0 UDP *:soap-beep
rpc.statd 1277 rpcuser 8u IPv4 11850 0t0 UDP *:55146
rpc.statd 1277 rpcuser 9u IPv4 11854 0t0 TCP *:32981 (LISTEN)
rpc.statd 1277 rpcuser 10u IPv6 11858 0t0 UDP *:55800
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)7. Découvrez qui regarde quels fichiers et commandes ?
L’exemple ci-dessous montre que l’utilisateur tecmint utilise des commandes telles que ping et le répertoire /etc.
# lsof -i -u tecmint
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 1839 tecmint cwd DIR 253,0 12288 15 /etc
ping 2525 tecmint cwd DIR 253,0 12288 15 /etc8. Énumérer toutes les connexions réseau
La commande suivante avec l’option '-i' affiche la liste de toutes les connexions réseau 'LISTENING & ESTABLISHED'.
# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 1203 rpc 6u IPv4 11326 0t0 UDP *:sunrpc
rpcbind 1203 rpc 7u IPv4 11330 0t0 UDP *:954
rpcbind 1203 rpc 11u IPv6 11336 0t0 TCP *:sunrpc (LISTEN)
avahi-dae 1241 avahi 13u IPv4 11579 0t0 UDP *:mdns
avahi-dae 1241 avahi 14u IPv4 11580 0t0 UDP *:58600
rpc.statd 1277 rpcuser 11u IPv6 11862 0t0 TCP *:56428 (LISTEN)
cupsd 1346 root 6u IPv6 12112 0t0 TCP localhost:ipp (LISTEN)
cupsd 1346 root 7u IPv4 12113 0t0 TCP localhost:ipp (LISTEN)
sshd 1471 root 3u IPv4 12683 0t0 TCP *:ssh (LISTEN)
master 1551 root 12u IPv4 12896 0t0 TCP localhost:smtp (LISTEN)
master 1551 root 13u IPv6 12898 0t0 TCP localhost:smtp (LISTEN)
sshd 1834 root 3r IPv4 15101 0t0 TCP 192.168.0.2:ssh->192.168.0.1:conclave-cpp (ESTABLISHED)
httpd 1918 root 5u IPv6 15991 0t0 TCP *:http (LISTEN)
httpd 1918 root 7u IPv6 15995 0t0 TCP *:https (LISTEN)
clock-app 2362 narad 21u IPv4 22591 0t0 TCP 192.168.0.2:45284->www.gov.com:http (CLOSE_WAIT)
chrome 2377 narad 61u IPv4 25862 0t0 TCP 192.168.0.2:33358->maa03s04-in-f3.1e100.net:http (ESTABLISHED)
chrome 2377 narad 80u IPv4 25866 0t0 TCP 192.168.0.2:36405->bom03s01-in-f15.1e100.net:http (ESTABLISHED)9. Recherche par PID
L’exemple ci-dessous montre uniquement dont le PID est 1 [Un].
# lsof -p 1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
init 1 root cwd DIR 253,0 4096 2 /
init 1 root rtd DIR 253,0 4096 2 /
init 1 root txt REG 253,0 145180 147164 /sbin/init
init 1 root mem REG 253,0 1889704 190149 /lib/libc-2.12.so
init 1 root mem REG 253,0 142472 189970 /lib/ld-2.12.so10. Tuer toute activité d’un utilisateur particulier
Parfois, vous devrez peut-être arrêter tous les processus pour un utilisateur spécifique. La commande ci-dessous tuera tous les processus de l’utilisateur tecmint.
# kill -9 `lsof -t -u tecmint`note: Ici, il n’est pas possible de donner des exemples de toutes les options disponibles, ce guide a seulement pour but de montrer comment la commande lsof peut être utilisée. Vous pouvez vous référer à la page de manuel de la commande lsof pour en savoir plus à ce sujet. N’hésitez pas à le partager si vous trouvez cet article utile via notre boîte de commentaires ci-dessous.
