L’avantage de Linux est que vous pouvez facilement tout visualiser et tout gérer, du processus de démarrage à l’installation des packages logiciels. Ici, nous discutons de la façon dont vous pouvez utiliser la commande lsof sous Linux pour afficher les fichiers ouverts et les processus qui les utilisent. Savoir comment afficher cela peut vous aider à comprendre le fonctionnement du système et même à prendre les mesures nécessaires pour des processus spécifiques.
Commande Lsof
Pour afficher les fichiers ouverts et les utilisateurs ou processus qui en sont responsables, nous utilisons le lsof
utilitaire. Par défaut, lsof
est pré-installé dans la plupart des distributions.
Cependant, si vous ne l’avez pas installé, vous pouvez utiliser le gestionnaire de packages pour l’installer sur votre système.
Debian/Ubuntu
Sur Debian, exécutez la commande :
sudo apt-get install lsof
Arche/Manjaro
Sur Manjaro et d’autres distributions basées sur Arch, utilisez pacman en exécutant la commande :
sudo pacman -S lsof
CentOS/REHL/Fedora
Pour CentOS et la famille REHL, vous pouvez utiliser dnf :
sudo dnf install lsof
Utilisez la commande lsof pour répertorier les fichiers ouverts pour un processus Linux
Comme la plupart des commandes Linux, l’utilitaire lsof est incroyablement simple à utiliser. Commencez par taper la commande lsof
:
sudo lsof
Une fois que vous avez exécuté la commande ci-dessus, lsof devrait renvoyer des informations sur les fichiers ouverts dans le système.
COMMAND PID TID TASKCMD USER FD TYPE DEVICE SIZE/OFF NODE NAME init 1 root cwd DIR 8,48 4096 2 / init 1 root rtd DIR 8,48 4096 2 / init 1 root txt REG 0,19 632048 281474976743906 /init init 1 root 0u CHR 1,3 0t0 15362 /dev/null init 1 root 1u CHR 1,3 0t0 15362 /dev/null init 1 root 2u CHR 1,3 0t0 15362 /dev/null init 1 root 3w CHR 1,11 0t0 15367 /dev/kmsg init 1 root 4u sock 0,8 0t0 22689 protocol: AF_VSOCK init 1 root 5r REG 0,4 0 4026532185 mnt init 1 root 6r REG 0,4 0 4026532201 mnt init 1 root 7r DIR 8,48 4096 240 /home/cap init 1 root 8u DIR 8,48 4096 2 / init 1 root 9u sock 0,8 0t0 21853 protocol: AF_VSOCK
Noter: si vous avez des privilèges sudo, exécutez la commande avec sudo
pour éviter les erreurs « autorisation refusée » sur des fichiers spécifiques.
Comme indiqué dans la sortie ci-dessus, la sortie lsof a les colonnes suivantes :
Colonne | Représentation |
---|---|
Commander | Affiche le nom du processus utilisant le fichier cible. |
PID | L’identifiant unique du processus utilisant le fichier. |
TID | La colonne affiche l’identifiant du thread. |
TÂCHECMD | Le nom de la commande de tâche. |
UTILISATEUR | Nom d’utilisateur ou UID de l’utilisateur exécutant le processus. |
FD | Descripteur de fichier du fichier et des modes. |
TAPER | Nœud associé au fichier cible. |
DISPOSITIF | Numéro d’appareil séparé par des virgules. |
TAILLE/NON | Taille du fichier en octets de la taille de décalage du fichier |
NŒUD | Valeur d’inode du fichier local. Vous pouvez utiliser la commande stat pour afficher inode informations pour le fichier. |
NOM | Point de montage du fichier. |
Maintenant que vous comprenez ce que représente le contenu de l’impression de la commande lsof, utilisons la commande pour filtrer des informations spécifiques.
Comment filtrer pour un processus spécifique
Pour filtrer uniquement les fichiers spécifiques ouverts par le processus spécifique, nous pouvons utiliser soit le nom du processus, soit la valeur PID.
Par exemple, pour afficher les fichiers utilisés par le processus firefox, nous pouvons utiliser la commande :
sudo lsof -c firefox
La commande affichera tous les fichiers ouverts par le processus firefox.
Pour filtrer par ID de processus, nous pouvons utiliser le -p
et transmettez l’ID de processus. Vous pouvez utiliser le top
commande pour obtenir l’ID de processus du processus cible.
Par exemple, pour obtenir le PID du processus firefox, nous pouvons utiliser la commande :
sudo ps aux | grep firefox
Une fois que vous avez le PID du processus cible, utilisez lsof pour afficher les fichiers ouverts :
sudo lsof -p 2121
La commande ci-dessus imprimera les fichiers ouverts par le processus avec le PID spécifié.
Comment filtrer pour un utilisateur spécifique
Pour afficher uniquement les fichiers ouverts par un utilisateur spécifique, nous pouvons utiliser le -u
drapeau. Par exemple, pour filtrer l’utilisateur Debian, utilisez la commande :
sudo lsof -u debian
Comment filtrer pour un fichier spécifique
Supposons que vous souhaitiez uniquement connaître le processus et l’utilisateur qui a ouvert un fichier spécifique. Pour cela, passez le nom du fichier à lsof :
sudo lsof /bin/sleep
Ce qui précède ne filtrera que le fichier spécifique et renverra les informations associées, y compris l’utilisateur, l’ID de processus, etc.
Emballer
Dans ce didacticiel simple, nous avons expliqué comment interroger le système pour obtenir des informations sur les fichiers ouverts à l’aide de la commande lsof sous Linux. Voici quelques commandes supplémentaires pour vous permettre de lister le contenu d’un répertoire dans le terminal.