table of contents
- NOM
- SYNOPSIS
- DESCRIPTION
- OPTIONS
- AFS
- SÉCURITÉ
- SORTIE
- VERROUS
- SORTIE POUR D'AUTRES PROGRAMMES
- BLOCAGES ET TEMPORISATIONS
- ÉVITER LES BLOCAGES DU NOYAU
- NUMÉROS DE PÉRIPHÉRIQUES ALTERNATIFS
- CACHE DE NOMS DU NOYAU
- FICHIER DE CACHE DES PÉRIPHÉRIQUES
- PERMISSIONS DE LSOF QUI AFFECTENT L'ACCÈS AU FICHIER DE CACHE DES PÉRIPHÉRIQUES
- CHEMIN DU FICHIER DE CACHE DES PÉRIPHÉRIQUES PROVENANT DE
- L'OPTION -D
- CHEMIN DU CACHE DES PÉRIPHÉRIQUES PROVENANT D'UNE VARIABLE
- D'ENVIRONNEMENT
- FICHIER DE CACHE DES PÉRIPHÉRIQUES GLOBAL
- CHEMIN DU CACHE PERSONNEL DES PÉRIPHÉRIQUES (DÉFAUT)
- CHEMIN DE CACHE DE PÉRIPHÉRIQUES PERSONNEL MODIFIÉ
- DIAGNOSTICS
- EXEMPLES
- BOGUES
- ENVIRONNEMENT
- FAQ
- FICHIERS
- AUTEURS
- DISTRIBUTION
- VOIR AUSSI
- TRADUCTION
LSOF(8) | Manuel de l'Administrateur UNIX | LSOF(8) |
NOM¶
lsof - Lister les fichiers ouverts
SYNOPSIS¶
lsof [ -?abChlnNOPRstUvVX ] [ -A A ] [ -c c ] [ +|-d d ] [ +|-D D ] [ +|-f [cfgGn] ] [ -F [f] ] [ -g [s] ] [ -i [i] ] [ -k k ] [ +|-L [l] ] [ -m m ] [ +|-M ] [ -o [o] ] [ -p s ] [ +|-r [t] ] [ -S [t] ] [ -T [t] ] [ -u s ] [ +|-w ] [ -- ] [noms]
DESCRIPTION¶
Lsof révision 4.60 affiche des informations sur les fichiers ouverts par des processus pour les dialectes UNIX suivants :
AIX 4.3.[23], 5L, and 5.1 Apple Darwin 1.[23] et 1.4 pour les systèmes Power Macintosh BSDI BSD/OS 4.1 pour les systèmes à base de processeurs Intel DEC OSF/1, Digital UNIX, Tru64 UNIX 4.0 et 5.[01] FreeBSD 4.[234] et 5.0 pour les systèmes à base de processeurs Intel HP-UX 11.00 et 11.11 Linux 2.1.72 et supérieur pour les systèmes à base de processeurs Intel NetBSD 1.5 pour les systèmes basés Alpha, Intel et SPARC NEXTSTEP 3.[13] pour les architectures NEXTSTEP OpenBSD 2.[89] and 3.0 pour les systèmes à base de processeurs Intel OPENSTEP 4.x Caldera OpenUNIX 8 SCO OpenServer version 5.0.[46] pour les systèmes à base de processeurs Intel SCO UnixWare 7.1.1 pour les systèmes à base de processeurs Intel Solaris 2.6, 7, 8, et 9 BETA
(Voyez la section DISTRIBUTION de cette page de manuel pour savoir comment obtenir la dernière version de lsof ).
Un fichier ouvert peut être un fichier régulier, un répertoire, un fichier spécial en mode bloc, un fichier spécial en mode caractère, une référence de texte exécutable, une librairie, un flux ou un fichier réseau (socket Internet, fichier NFS ou socket de domaine UNIX). Un fichier spécifique ou tous les fichiers d'un système de fichiers peuvent être sélectionnés en spécifiant son (leur) chemin(s).
Au lieu d'un affichage formaté, lsof produira une sortie pouvant être analysée par d'autres programmes. Voyez la description de l'option -F, et la section SORTIE POUR D'AUTRES PROGRAMMES pour plus d'informations.
En plus de produire en sortie une liste unique, lsof s'exécutera en mode répétition. En mode répétition, il produira une sortie, attendra un moment, et répétera ensuite l'opération de sortie jusqu'à ce qu'il soit arrêté par un signal d'interruption ou d'arrêt. Voyez la description de l'option +|-r [t] pour plus d'informations.
OPTIONS¶
En l'absence d'option, lsof liste tous les fichiers ouverts appartenant aux processus actifs.
Si une option de requête de liste est spécifiée, les autres requêtes de liste doivent être requises explicitement - p.ex., si -U est spécifié pour le listage des fichiers de sockets UNIX, les fichiers NFS ne seront pas listés à moins que -N ne soit également spécifié ; de façon similaire, si une liste d'utilisateurs est spécifiée avec l'option -u , les fichiers de sockets de domaine UNIX appartenant à des utilisateurs non présents dans la liste ne seront pas listés à moins que l'option -U ne soit également spécifiée.
Normalement, les options de listes qui sont explicitement indiquées sont associées par un OU - c.-à-d. que la spécification de l'option -i sans adresse et l'option -ufoo produisent un listing de tous les fichiers réseau OU appartenant à l'utilisateur « foo ». Une exception est le nom de connexion (login) « ^ » (nié) ou l'ID d'utilisateur (UID) spécifié avec l'option -u. Puisque c'est une exclusion, elle est appliquée sans réaliser de disjonction ni de conjonction et prend effet avant que tout autre critère de sélection ne soit appliqué.
L'option -a peut être utilisée pour préciser une conjonction (ET) de sélections. Par exemple, spécifier -a, -U et -ufoo produit un listing des seuls fichiers de socket UNIX qui appartiennent à des processus relevant de l'utilisateur « foo ».
Attention : l'option -a provoque la mise en association de toutes les options de sélection de liste par un ET binaire ; elle ne peut être utilisée pour effectuer une conjonction de paires sélectionnées d'options de sélection en étant placée entre elles, même si son emplacement est acceptable. À chaque fois que -a est utilisée, elle provoque la mise en conjonction de toutes les options de sélection.
Les éléments du même groupe de sélection - noms de commandes, descripteurs de fichiers, adresses réseau, identificateurs de processus, identificateurs d'utilisateurs - sont associés dans un seul ensemble par un OU binaire, et sont appliqués avant que le résultat ne participe à un ET binaire. Ainsi, par exemple, spécifier -i@aaa.bbb, -i@ccc.ddd, -a et -ufff,ggg sélectionnera le listing des fichiers qui appartiennent à « fff » OU à « ggg » ET qui disposent de connexions réseau vers l'hôte aaa.bbb OU ccc.ddd.
Les options peuvent être regroupées à la suite d'un préfixe unique -- p.ex., le jeu d'options « -a -b -C » peut être désigné par -abC. Néanmoins, puisque les valeurs suivant +|-f, -F, -g, -i, +|-L, -o, +|-r, -S ou -T sont optionnelles, si vous ne leur fournissez pas de valeur, prenez garde à ce que le caractère suivant ne soit pas ambigu. Par exemple, -Fn pourrait représenter les options -F et -n , ou pourrait représenter le n -ième identificateur de champ suivant l'option -F. Quand une ambiguïté est possible, faites débuter une nouvelle option par un caractère « - », p.ex. « -F -n ». Si l'option suivante est un nom de fichier, faites suivre l'option hypothétiquement ambiguë par « -- », p.ex. « -F -- nom ».
Le préfixe « + » ou « - » peut être appliqué à un groupe d'options. Les options qui n'ont pas une signification spéciale pour chaque préfixe - p.ex. -i - peuvent être groupées à la suite de l'un quelconque des préfixes. Par conséquent, par exemple, « +M -i » peut être indiqué sous la forme « +Mi » et le groupe signifie la même chose que les options séparées. Faites attention au groupement d'options quand une ou plusieurs des options du groupe prennent un signification différente en fonction du préfixe - p.ex, +|-M; « -iM » n'est pas la même requête que «-i +MM ». En cas de doute, utilisez des options séparées avec des préfixes appropriés.
- -? -h
- Ces deux options équivalentes sélectionnent une liste de sortie d'utilisation (d'aide). Lsof affiche une forme abrégée de cette sortie quand il détecte une erreur dans les options qu'il reçoit, après qu'il ait affiché les messages expliquant chaque erreur. (Protégez le caractère « ? » si votre shell le requiert.)
- -a
- Cette option provoque la mise en conjonction des options de sélection de liste, comme décrit plus haut.
- -A A
- Cette option est disponible sur les systèmes configurés pour l'AFS et dont le code AFS du noyau est implémenté via des modules dynamiques. Elle permet à l'utilisateur de lsof de spécifier A comme un fichier de liste de noms alternatif où les adresses noyau des modules dynamiques peuvent être trouvés. Voyez la FAQ lsof (La section FAQ vous donne son emplacement.) pour plus d'informations sur les modules dynamiques, leurs symboles, et la façon dont ils affectent lsof.
- -b
- Cette option indique à lsof d'éviter les fonctions du noyau qui pourraient bloquer - lstat(2), readlink(2), et stat(2).
- Voyez les sections BLOCAGES ET TEMPORISATIONS et ÉVITER LES BLOCAGES NOYAU pour en savoir plus sur l'utilisation de cette option.
- -c c
- Cette option sélectionne le listing des fichiers pour les processus exécutant la commande qui débute par les caractères de c. De multiples commandes peuvent être spécifiées, en utilisant de multiples options -c. Elles sont associées dans un seul ensemble par un OU binaire avant de participer à une sélection par ET binaire des options.
- Si c débute et se termine par un slash (« / »), les caractères présents entre les slashs sont interprétés comme représentant une expression régulière. Les méta-caractères du shell qui font partie des expressions régulières doivent être protégés pour éviter leur interprétation par le shell. Le slash de fermeture peut être suivi par ces modificateurs :
-
b l'expression régulière est basique.
i ignorer la casse des lettres.
x l'expression régulière est étendue
(défaut). -
Voyez la FAQ lsof (La section FAQ vous donne son emplacement.) pour plus d'informations sur les expressions régulières basiques et étendues. - La spécification de commande simple est testée en premier lieu. Si ce test échoue, l'expression régulière de commande est appliquée. Si le test de commande simple réussit, le test d'expression régulière de commande n'est pas effectué. Ceci peut résulter en des messages « no command found for regex : » (aucune commande trouvée pour l'expression régulière) quand l'option -V de lsof est spécifiée.
- -C
- Cette option désactive le rapport des composants des noms de chemin du cache de noms du noyau. Voyez la section CACHE DE NOMS DU NOYAU pour plus d'informations.
- +d s
- Cette option indique à lsof de rechercher toutes les instances ouvertes du répertoire s et les fichiers et répertoires qu'il contient au premier niveau. Cette option ne descend PAS dans l'arbre de répertoires de racine s , et ne suit pas non plus les liens symboliques qui en font partie. L'option +D D peut être utilisée pour requérir une recherche sur toute la profondeur de l'arbre de répertoires ayant le répertoire D pour racine.
- Note : l'autorité de l'utilisateur sur cette option se limite à la recherche de fichiers que l'utilisateur à la permission d'examiner via la fonction système stat(2).
- -d s
- Cette option sélectionne le listing des fichiers dont les descripteurs sont présents dans l'ensemble s découpé par des virgules - p.ex, « 1,3 » ou « 6,cwd,2 ». (Il ne devrait pas y avoir d'espaces dans l'ensemble.)
- Un intervalle de numéros de descripteurs de fichiers peut être inclus dans l'ensemble pour autant qu'aucun membre ne soit vide, que les deux membres soient des nombres, et que le membre de fin soit supérieur à du départ - p.ex. « 0-7 » ou « 3-10 ».
- De multiples numéros de descripteur de fichiers sont associés dans un seul ensemble par un OU binaire avant de participer à une sélection par ET binaire des options.
- Voyez la description des valeurs de sortie de descripteur de fichier (File Descriptor, FD) dans la section SORTIE pour plus d'informations sur les noms de descripteurs de fichiers.
- +D D
- Cette option indique à lsof de rechercher toutes les instances ouvertes du répertoire D et tous les fichiers et répertoires qu'il contient jusqu'à sa profondeur maximale. Les liens symboliques à l'intérieur du répertoire D sont ignorés, c.-à-d. non suivis.
- Note : l'autorité de l'utilisateur sur cette option se limite à la recherche de fichiers que l'utilisateur à la permission d'examiner via la fonction système stat(2).
- Note supplémentaire : lsof peut gérer lentement cette option et requiert beaucoup de mémoire dynamique pour ce faire. C'est dû au fait qu'il doit parcourir entièrement l'arbre de répertoires de racine D, en appelant stat(2) pour chaque fichier et répertoire, en construisant une liste de tous les fichiers qu'il trouve, et en y recherchant une correspondance pour chaque fichier ouvert. Quand le répertoire D est étendu, ces étapes peuvent prendre beaucoup de temps ; utilisez donc cette option avec prudence.
- -D D
- Cette option force l'utilisation du fichier de cache des périphériques par lsof. L'utilisation de cette option est parfois interdite. Voyez la section FICHIER DE CACHE DES PÉRIPHÉRIQUES et suivantes pour en savoir plus sur cette option.
- -D doit être suivi par une lettre de fonction ; la lettre de fonction peut être suivie par un nom de chemin. Lsof reconnaît les lettres de fonction suivantes :
-
? - rapporter les chemins de fichier de cache de périphériques
b - construire le fichier de cache de périphériques
i - ignorer le fichier de cache de périphériques
r - lire le fichier de cache de périphériques
u - lire et mettre à jour le fichier de cache de périphériques - Les fonctions b, r et u , accompagnées d'un nom de chemin, sont parfois interdites. Quand ces fonctions sont interdites, elles n'apparaîtront pas dans la description de l'option -D qui accompagne la sortie de l'option -h ou -?. Voyez la section FICHIER DE CACHE DES PÉRIPHÉRIQUES et suivantes pour plus d'informations sur ces fonctions et savoir à quelles occasions elles sont interdites.
- La fonction ? rapporte les chemins en lecture seule et en écriture que peut utiliser lsof pour le fichier de cache de périphériques, le nom de toutes les variables d'environnement dont la valeur sera examinée par lsof lors de la formation du chemin du fichier de cache de périphériques, et le format du chemin du fichier de cache de périphériques personnel. (Protégez le caractère « ? » si votre shell le requiert.)
- Lorsqu'elles sont disponibles, les fonctions b, r et u peuvent être suivies du chemin du fichier de cache de périphériques. Le défaut est .lsof_nomhôte dans le répertoire personnel de l'UID réel qui exécute lsof, mais cela a pu être modifié quand lsof a été configuré et compilé. (La sortie des options -h et -? montre le préfixe par défaut actuel -p.ex. « .lsof ».) Le suffixe nomhôte est le premier composant du nom d'hôte retourné par gethostname(2).
- Quand elle est disponible, la fonction b indique à lsof de construire un nouveau fichier de cache de périphériques dans le chemin par défaut ou dans celui spécifié.
- La fonction i indique à lsof d'ignorer le chemin du fichier de cache de périphériques par défaut et d'obtenir son information sur les périphériques par l'intermédiaire d'appels directs au noyau.
- La fonction r indique à lsof de lire le cache de périphériques situé dans le chemin par défaut ou dans celui spécifié, mais l'empêche de créer un nouveau fichier de cache de périphériques quand aucun n'est présent ou que celui existant est incorrectement structuré. La fonction r , quand elle est spécifiée sans nom de chemin, empêche lsof de mettre à jour un fichier de cache de périphériques incorrect ou périmé, ou d'en créer un nouveau à la place. La fonction r est toujours disponible quand elle est spécifiée sans argument de nom de chemin ; elle peut être interdite par les permissions du processus lsof.
- Quand elle est disponible, la fonction u indique à lsof de lire le cache de périphériques situé dans le chemin par défaut ou celui spécifié, si c'est possible, et de le reconstruire si c'est nécessaire. C'est la fonction de fichier de cache de périphériques par défaut quand aucune option -D n'a été spécifiée.
- +|-f [cfgGn]
- f clarifie en elle-même la façon dont les arguments de type nom de chemin doivent être interprétés. Quand cette option est suivie par c, f, g, G ou n dans n'importe quelle combinaison, elle spécifie que le listing d'information de structure de fichier du noyau doit être autorisé (« + ») ou interdit (« - »).
- Normalement, un argument nom de chemin est considéré être le nom d'un système de fichiers s'il correspond à l'un des noms de répertoires montés rapportés par mount(8), ou s'il représente un périphérique en mode bloc, nommé dans la sortie de mount et associé à un nom de répertoire monté. Quand +f est spécifiée, tous les arguments noms de chemin seront considérés être des noms de systèmes de fichiers, et lsof se plaindra si ce n'est pas le cas. Cela peut être utile, par exemple, quand le nom du système de fichiers (périphérique mount-é) n'est pas un périphérique en mode bloc. Cela se produit pour certains systèmes de fichiers de CD-ROM.
- Quand -f est spécifiée, tous les arguments noms de fichier seront considérés être de simples fichiers. Ainsi, par exemple, les arguments « -f / » indiquent à lsof de rechercher les fichiers ouverts ayant « / » pour chemin, et pas tous les fichiers du système de fichiers « / » (racine).
- Assurez-vous que l'option +f est correctement terminée et n'est pas suivie par un caractère (c.-à-d. en provenance du fichier ou du nom du système de fichiers) qui pourrait être considéré être un paramètre. Par exemple, utilisez « -- » après +f comme dans cet exemple.
-
$ lsof +f -- /nom/système/fichiers
- Le listing d'information sur les structures de fichier du noyau, requise par la forme d'option +f [cfgGn] , est normalement inhibé, et n'est pas disponible pour certains dialectes - p.ex. pour un système Linux utilisant le mécanisme /proc. Quand le préfixe de f est un signe plus (« + »), ces caractères requièrent une information sur la structure fichier :
-
c compteur d'utilisation de la structure fichier f adresse de la structure fichier g abréviations des attributs de fichier G attributs fichier en hexadécimal n adresse de noeud de la structure fichier
- Quand le préfixe est moins (« - »), les mêmes caractères désactivent le listage des valeurs indiquées.
- Les adresses, compteurs d'utilisation, attributs et adresses de noeud des structures de fichier peuvent être utilisées pour détecter plus facilement les fichiers identiques hérités par des processus fils, et les fichiers identiques utilisés par différents processus. La sortie en colonnes de lsof peut être triée par colonnes conservant des valeurs, et listée pour identifier l'utilisation d'un fichier identique, ou bien alors la sortie en champs de lsof peut être examinée par un script AWK ou Perl de post-filtrage.
- -F f
- Cette option spécifie une liste de caractères, f, qui sélectionne les champs à sortir destinés à un traitement par un autre programme, et le caractère qui termine chaque champ en sortie. Chaque champ à produire est spécifié par un unique caractère dans f. Le terminateur de champ vaut NL (saut de ligne) par défaut, mais peut être changé en NUL (000). Voyez la section SORTIE POUR D'AUTRES PROGRAMMES pour une description des caractères d'identification de champ, et du processus de production des champs.
- Quand la liste de caractères de sélection de champs est vide, tous les champs sont sélectionnés (sauf le champ raw device (périphérique brut) pour des raisons de compatibilité) et le terminateur de champ NL est utilisé.
- Quand la liste de caractères de sélection de champs contient uniquement un zéro, tous les champs sont sélectionnés (sauf le champ Raw Device pour des raisons de compatibilité) et le caractère de terminaison NUL est employé.
- D'autres combinaisons de champs et de leur caractère terminateur de champ associé doivent être définies via des entrées explicites dans f, comme décrit dans la section SORTIE POUR D'AUTRES PROGRAMMES .
- Quand un caractère de sélection de champ identifie un
élément que lsof ne liste normalement pas -
p.ex., PPID, sélectionné par la spécification de
caractère de champ -R -
- p.ex., « -FR » - sélectionne également le listage de l'élément. - Quand la liste de caractères de sélection de champs contient uniquement le caractère « ? », lsof affichera une liste d'aide sur les caractères d'identification de champ. (Protégez le caractère « ? » si votre shell le requiert.)
- -g [s]
- Cette option sélectionne le listage des fichiers pour les processus dont le numéro d'IDentification de Groupe de Processus (PGID) est présent dans l'ensemble s découpé par des virgules - p.ex., « 123 » ou « 123,456 ». (Il ne devrait pas y avoir d'espace dans l'ensemble.)
- De multiples numéros de PGID sont associés dans un seul ensemble par un OU binaire avant de participer à une sélection par ET binaire des options.
- L'option -g autorise également l'affichage en sortie des numéros de PGID. Quand elle est spécifiée sans ensemble de PGID, c'est tout ce qu'elle fait.
- -i [i]
- Cette option sélectionne le listing des fichiers dont l'adresse Internet correspond à l'adresse spécifiée avec i. Si aucune adresse n'est spécifiée, cette option sélectionne le listing de tous les fichiers réseaux Internet et x.25 (HP-UX).
- Si -i4 ou -i6 est spécifié sans adresse à la suite, seuls les fichiers de la version IP indiquée, IPv4 ou IPv6, sont affichées. (Une spécification IPv6 ne peut être utilisée que si le dialecte supporte IPv6, comme indiqué par « [46] » et « IPv[46] » dans la sortie -h ou -? de lsof.) Spécifier séquentiellement -i4, suivi de -i6 revient à spécifier -i, et vice-versa. Spécifier -i4, ou -i6 après -i est identique à spécifier -i4 ou -i6 en eux-mêmes.
- De multiples adresses (jusqu'à une limite de 100) peuvent être spécifiées avec de multiples options -i. (Un numéro de port ou une gamme de noms de services comptent pour une seule adresse). Elles sont associées dans un seul ensemble par un OU binaire avant de participer à une sélection par ET binaire des options.
- Une adresse Internet est spécifiée sous la forme (Les éléments entre crochets sont optionnels.) :
- [46][protocole][@nom_hôte|adresse_hôte][:service|port]
- où :
46 spécifie la version IP, IPv4 ou IPv6
qui s'applique aux adresses à la suite.
« 6 » ne peut être spécifié que si le
dialecte UNIX supporte IPv6. Si ni « 4 » ni
« 6 » n'est spécifié, l'adresse à la suite
s'applique à toutes les versions d'IP.
protocole est un nom de protocole - TCP ou UDP.
nom_hôte est un nom d'hôte Internet. À moins qu'une
version IP spécifique ne soit spécifiée, les
fichiers réseau ouverts associés à des noms d'hôte
de toutes les versions seront sélectionnés.
adresse_hôte est une adresse IPv4 numérique en
notation décimale pointée, ou une adresse IPv6
numérique sous la forme double-pointée, enfermée
entre crochets, si le dialecte UNIX supporte IPv6.
Quand une version IP est sélectionnée, seules ses
adresses numériques peuvent être spécifiées.
service est un nom provenant de /etc/services.br - p.ex. smtp - ou une liste de noms.
port est un numéro ou une liste de numéros de ports. - Les options IPv6 ne peuvent être utilisées que si le dialecte UNIX supporte IPv6. Pour déterminer si le dialecte supporte IPv6, exécutez lsof en spécifiant l'option -h ou -? (aide). Si la description affichée de l'option -i contient « [46] » ou « IPv[46] », IPv6 est supporté.
- Les noms d'hôte et adresses IPv4 ne peuvent être spécifiés si la sélection de fichiers réseau est limitée à IPv6 par -i 6. Les noms d'hôte et adresses IPv4 ne peuvent être spécifiées si la sélection de fichiers réseau est limitée à IPv6 par -i 4. Quand un fichier réseau IPv4 ouvert est converti en une adresse IPv6, le type de fichier ouvert sera IPv6, pas IPv4, et son affichage sera sélectionné par « 6 », et pas « 4 ».
- Au moins un des composants de l'adresse - 4, 6, protocole, ,IR nom_hôte , adresse_hôte ou service - doit être fourni. Le caractère « @ », présent en tête de la spécification d'hôte, est toujours requis, comme l'est le « : » devant la spécification du port. Spécifiez soit nom_hôte soit adresse_hôte. Spécifiez soit une liste de noms de services soit une liste de numéros de ports. Si une liste de noms de services est spécifiée, le protocole peut également être requis si les numéros de port TCP et UDP pour le nom du service sont différents. Utilisez n'importe quelle casse - minuscule ou majuscule - pour le protocole.
- Les noms de services et numéros de ports peuvent être combinés dans une liste dont les entrées sont séparées par des virgules, et dont les entrées de type intervalle numérique sont séparées par des signes moins. Il ne peut pas y avoir d'espace inclus, et tous les noms de service doivent appartenir au protocole spécifié. Puisque les noms de services peuvent contenir des signes moins en leur sein, l'entrée de départ d'un intervalle ne peut être un nom de service ; elle peut néanmoins être un numéro de port.
- Voici quelques exemples d'adresses :
-i6 - IPv6 uniquement
TCP:25 - TCP et port 25
@1.2.3.4 - adresse d'hôte Internet IPv4 1.2.3.4
@[3ffe:1ebc::1]:1234 - adresse d'hôte Internet IPv6 3ffe:1ebc::1, port 1234
UDP:who - port du service UDP who
TCP@vic.cc:513 - TCP, port 513 et nom d'hôte vic.cc
tcp@foo:1-10,smtp,99 - TCP, ports 1 à 10, nom de service smtp, port 99, nom d'hôte foo
tcp@bar:smtp-serveur_de_noms - TCP, ports smtp jusqu'à serveur_de_noms, hôte bar
:time - le port de service d'horloge TCP ou UDP
- -k k
- Cette option spécifie un fichier de liste de noms du noyau, k, au lieu de /vmunix, /mach, etc. Cette option n'est pas disponible sous AIX sur l'IBM RISC/System 6000.
- -l
- Cette option empêche la conversion d'ID d'utilisateur en nom de connexion. Elle est également utilisée quand la recherche de nom d'utilisateur ne fonctionne pas correctement ou trop lentement.
- +|-L [l]
- Cette option autorise (« + ») ou désactive (« - ») le listing des compteurs de liens de fichier quand ils sont disponibles - p.ex., ils ne sont pas disponibles pour les sockets, ou la plupart des FIFOs (files d'attente) et tubes.
- Quand +L est spécifié sans un nombre à la suite, tous les compteurs de liens seront listés. Quand -L est spécifié (le défaut), aucun compteur de liens ne sera listé.
- Quand +L est suivi par un nombre, seuls les fichiers ayant un compteur de liens de valeur inférieure à ce nombre seront listés. (Aucun nombre ne peut suivre -L.) Une spécification de la forme «\fB+L1 » sélectionnera les fichiers ouverts qui ont été déliés. Une spécification de la forme « +aL1 <système_fichiers> » sélectionnera les fichiers ouverts non liés présents sur le système de fichiers spécifié.
- Pour les autres comparaisons de compteur de liens, utilisez la sortie en champs (-F) et un script de post-traitement.
- -m m
- Cette option spécifie un fichier mémoire du noyau, c, au lieu de /dev/kmem ou /dev/mem - p.ex. un fichier d'image de la mémoire après un crash.
- +|-M
- Autorise (+) ou désactive (-) le rapport des enregistrements au gestionnaire de ports (portmapper) pour les ports TCP et UDP locaux. Le mode de rapport par défaut est déterminée lors de la construction de lsof grâce au #define HASPMAPENABLED du fichier d'en-tête machine.h du dialecte utilisé ; lsof est distribué avec cette définition de macro désactivée, et ainsi le rapport du gestionnaire de ports est désactivé par défaut et doit être requis avec +M. Spécifier l'option -h ou -? de lsof rapportera le mode par défaut. La désactivation de l'enregistrement au gestionnaire de ports quand il est déjà désactivé, ou son activation quand il l'est déjà est acceptable (un avertissement sera néanmoins émis).
- Quand le rapport des enregistrements au gestionnaire de ports est activé, lsof affiche l'enregistrement au gestionnaire de ports (s'il y en a un) des ports TCP et UDP locaux entre crochets suivant immédiatement les numéros de ports ou les noms de services - p.ex. « :1234[nom] » ou « :nom[100083] ». L'information d'enregistrement peut être un nom ou un nombre, en fonction de ce que le programme d'enregistrement a fourni au gestionnaire de ports quand il a enregistré le port.
- Quand le rapport des enregistrements au gestionnaire de ports est activé, lsof peut s'exécuter un peu plus lentement ou même se bloquer quand l'accès au gestionnaire de ports devient congestionné ou est interrompu. Renversez le mode de rapport pour déterminer si le rapport des enregistrements au gestionnaire de ports ralentit ou bloque lsof.
- À des fins de rapport d'enregistrement au gestionnaire de ports, lsof considère qu'un port TCP ou UDP est local si : il est trouvé dans la partie locale de sa structure noyau le contenant, s'il est situé dans la partie distante de la structure du noyau le comprenant et que les adresses Internet locale et distante sont identiques ou s'il est situé dans la partie distante de la structure du noyau le comprenant et que l'adresse Internet distante est INADDR_LOOPBACK (127.0.0.1). Cette règle peut faire en sorte que lsof ignore certains ports distants sur des machines possédant de multiples interfaces quand l'adresse Internet distante est située sur une interface différente de l'interface locale.
- Voyez la FAQ lsof (La section FAQ vous donne son emplacement.) pour plus d'informations sur les questions relatives au rapport d'enregistrement au gestionnaire de ports.
- -n
- Cette option empêche la conversion de numéros réseau (adresses décimales) en noms d'hôte pour les fichiers réseau. Interdire la conversion peut accélérer lsof. C'est également utile quand la recherche des noms d'hôtes ne fonctionne pas correctement.
- -N
- Cette option sélectionne le listage des fichiers NFS.
- -o
- Cette option indique à lsof de toujours afficher la position (offset) dans le fichier. Elle provoque le remplacement du titre de la colonne de sortie SIZE/OFF (taille/pos) par OFFSET. Note : sur certains dialectes UNIX lsof ne peut obtenir des informations précises ou cohérentes sur la position dans le fichier depuis ses sources de données du noyau, parfois seulement pour certains types de fichiers particuliers (p.ex., les fichiers de socket.) Consultez la FAQ lsof (La section FAQ vous donne son emplacement.) pour plus d'informations.
- Les options -o et -s sont mutuellement exclusives ; elles ne peuvent être spécifiées en même temps. Quand aucune d'entre elles n'est spécifiée, lsof affiche la valeur - taille ou position - qui est appropriée et disponible pour le type du fichier.
- -o o
- Cette option définit le nombre de chiffres décimaux (o) à afficher après le « 0t » pour une position dans un fichier avant que l'on ne passe à la forme « 0x... ». Une valeur nulle (illimitée) pour o indique à lsof d'utiliser la forme « 0t » pour toutes les sorties de position.
- Cette option n'indique PAS à lsof de toujours afficher la position ; spécifiez -o (sans nombre à la fin) pour requérir cela. Cette option ne fait que spécifier le nombre de chiffres après le « 0t » dans la sortie mixte taille/position ou position seule. Ainsi, par exemple, pour demander à lsof de toujours afficher la position avec un nombre de chiffres décimaux de 10, utilisez :
-
-o -o 10 ou -oo10
- Le nombre par défaut de chiffres autorisés après « 0t » est normalement 8, mais peut avoir été modifié lors de la construction de lsof. Consultez la description de l'option -o o dans la sortie de l'option -h ou -? pour déterminer le défaut en cours.
- -O
- Cette option indique à lsof de éviter la stratégie qu'il utilise pour éviter d'être bloqué par certaines opérations du noyau - c.-à-d. en les faisant dans des processus fils générés par fork. Voyez les sections BLOCAGES ET TEMPORISATIONS et ÉVITER LES BLOCAGES NOYAU pour en savoir plus sur les opérations du noyaux pouvant bloquer lsof.
- Bien que l'utilisation de cette option réduise la surcharge au démarrage de lsof , elle peut également le faire se bloquer quand le noyau ne répond pas à une fonction. Utilisez cette option avec prudence.
- -p s
- Cette option sélectionne le listage des fichiers pour les processus dont les numéros identifiants sont présents dans l'ensemble découpé par des virgules s - p.ex., « 123 » ou « 123,456 ». (Il ne devrait pas y avoir d'espace dans l'ensemble.)
- De multiples numéros d'ID de processus sont associés dans un seul ensemble par un OU binaire avant de participer à une sélection par ET binaire des options.
- -P
- Cette option interdit la conversion de numéros de port en noms de port pour les fichiers réseau. Désactiver la conversion peut accélérer un peu lsof. Elle est également utile quand la recherche des noms d'hôtes ne fonctionne pas correctement.
- +|-r [t]
- Cette option place lsof dans le mode de répétition. lsof liste alors les fichiers ouverts sélectionnés par d'autres options, attend t secondes (quinze par défaut), ensuite répète le listage, attend et liste répétitivement jusqu'à ce qu'il soit arrêté par une condition définie par le préfixe de l'option.
- Si le préfixe est un `-', les mode de répétition est éternel. Lsof doit être terminé par un signal d'interruption ou d'arrêt.
- Si le préfixe est `+', le mode de répétition s'arrêtera au premier cycle où aucun fichier ouvert n'est listé - et bien sûr quand lsof est terminé par un signal d'interruption ou d'arrêt. Lorsque le mode de répétition s'arrête parce qu'aucun fichier n'est listé, le code de sortie du processus sera zéro s'il y a eu le moindre fichier ouvert rapporté, et un si aucun n'a été listé.
- Lsof marque la fin de chaque listing : si la sortie de champs est en cours (l'option -F a été spécifiée), les marqueur est `m' ; sinon, le marqueur est « ======== ». Le marqueur est suivi par un caractère NL.
- Le mode de répétition réduit la surcharge au démarrage de lsof , de sorte qu'il est plus efficace d'utiliser ce mode que d'appeler répétitivement lsof à partir d'un script shell, par exemple.
- Pour utiliser efficacement le mode de répétition, accompagnez +|-r par la spécification d'autres options de sélection lsof , afin que le nombre d'accès à la mémoire du noyau par lsof reste à un minimum. Les options qui filtrent au niveau processus - p.ex. -c, -g, -p, -u - sont les sélecteurs les plus efficaces.
- Le mode de répétition est utile lorsqu'il est couplé avec la sortie en champs (voyez la description de l'option -F ) et un script awk ou Perl de surveillance.
- -R
- Cette option indique à lsof de lister les numéros d'identification des processus parents (Parent Process IDentification number, PPID) dans la colonne PPID.
- -s
- Cette option indique à lsof de toujours afficher la taille du fichier. Cela provoque le remplacement du titre de la colonne de sortie SIZE/OFF par SIZE. Si le fichier ne possède pas de taille, rien n'est affiché.
- Les options -o (sans nombre de chiffres décimaux à la suite) et -s sont mutuellement exclusives ; elles ne peuvent être spécifiées en même temps. Quand aucune d'entre elles n'est spécifiée, lsof affiche la valeur - taille ou position - appropriée et disponible pour le type du fichier.
- Puisque certains types de fichiers ne possèdent pas réellement de taille - sockets, FIFOs, tubes, etc. - lsof affiche en lieu et place le total contenu dans les mémoires tampons du noyaux qui leur sont associées, si c'est possible.
- -S [t]
- Cette option spécifie une valeur de temporisation optionnelle pour les fonctions du noyau - lstat(2), readlink(2), et stat(2) - qui pourraient sans cela conduire à un interblocage. Le minimum pour t est deux ; le défaut, quinze ; quand aucune valeur n'est spécifiée, le défaut est utilisé.
- Voyez la section BLOCAGES ET TEMPORISATIONS pour plus d'informations.
- -T [t]
- Cette option contrôle le rapport d'information TCP/TPI, également rapportée par netstat(1), à la suite des adresses réseau. Dans une sortie normale, l'information apparaît entre parenthèses, chaque élément à l'exception de l'état est identifié par un mot-clé, suivi par un « = », et séparé des autres par un simple espace :
-
<nom état TCP ou TPI> QR=<longueur queue lecture> QS=<longueur queue émission> WR=<longueur fenêtre de lecture> (pas tous les dialectes) WW=<longueur fenêtre d'écriture> (pas tous les dialectes)
- Quand le mode de sortie en champs a lieu (Voyez SORTIE POUR D'AUTRES PROGRAMMES , chaque élément apparaît sous la forme d'un champ possédant un caractère « T » en tête, et le nom de l'état TCP ou TPI possède le préfixe « ST= ».
- -T sans caractères de clé à la suite, désactive le rapport d'information TCP/TPI.
- -T suivi de caractères sélectionne le rapport d'information TCP/TPI spécifique :
-
q sélectionne un rapport sur la longueur de la queue. s sélectionne un rapport sur l'état. w sélectionne un rapport sur la taille de fenêtre (pas sur tous les dialectes).
- L'état est rapporté par défaut. La sortie d'aide de -h ou -? pour l'option -T indiquera si le rapport sur la taille de fenêtre peut être requis.
- Quand -T est utilisé pour sélectionner de l'information - c.-à-d. s'il est suivi d'un ou de plusieurs caractères de sélection - l'affichage de l'état est désactivé par défaut, et doit être explicitement resélectionné en faisant partie des caractères suivant -T. (Le défaut est équivalent à -Ts en termes d'effets.) Par exemple, si les longueurs de queue et l'état sont désirés, utilisez -Tqs.
- -t
- Cette option spécifie que lsof devrait produire une sortie laconique avec uniquement les identifiants de processus et aucun en-tête - afin p.ex. que la sortie puisse être envoyée via un tube à kill(1). Cette option sélectionne l'option -w.
- -u s
- Cette option sélectionne le listing des fichiers pour les utilisateurs dont le nom ou ID d'utilisateur est présent dans l'ensemble découpé par des virgules s - p.ex. « abe », ou « 548,root ». (Il ne devrait pas y avoir d'espace dans l'ensemble.)
- De multiples noms de connexion et numéros d'ID utilisateur sont associés dans un seul ensemble par un OU binaire avant de participer à une sélection par ET binaire des options.
- Si un nom de connexion ou ID utilisateur est précédé par un « ^ », il devient une négation - c.-à-d. que les fichiers ou processus appartenant au nom ou à l'ID ne seront jamais listés. Un nom de connexion ou un ID utilisateur nié n'est associé ni par un ET ni par un OU binaire avec d'autres sélections ; il est appliqué avant toutes les autres sélections et exclut formellement le listage des fichiers du processus. Par exemple, pour ordonner à lsof d'exclure le listage des fichiers appartenant aux processus de root, spécifiez « -u^root » ou « -u^0 ».
- -U
- Cette option sélectionne le listage des fichiers de sockets de domaine UNIX.
- -v
- Cette option sélectionne le listage d'une information de version sur lsof incluant : numéro de révision ; date de construction ; identité du constructeur et endroit de construction ; nom du compilateur utilisé ; numéro de version du compilateur si disponible ; options du compilateur et du chargeur utilisés pour construire le binaire lsof ; et information sur le système, typiquement la sortie de l'option -a de uname.
- -V
- Cette option ordonne à lsof d'indiquer les éléments qu'on lui a demandé de lister et qu'il n'a pas trouvés - noms de commandes, noms de fichiers, adresses ou fichiers Internet, noms de connexion, fichiers NFS, PIDs, PGIDs et UIDs.
- Quand d'autres options sont associées par un ET binaire à des options de recherche, lsof peut ne pas rapporter qu'il n'a pas réussi à trouver un élément de recherche quand une option associée avec un ET empêche le listing du fichier ouvert contenant l'élément de recherche localisé. Par exemple, « lsof -C -iTCP@foobar -a -d 999 » peut ne pas rapporter un échec de localisation de fichiers ouverts sur « TCP@foobar », et peut n'en lister aucun, si aucun n'a un numéro de descripteur de fichier de 999.
- +|-w
- Autorise (+) ou désactive (-) la suppression des messages d'avertissement.
- Le constructeur de lsof peut choisir de désactiver ou d'activer les messages d'avertissements par défaut. Le statut des messages d'avertissement par défaut est indiqué dans la sortie de l'option -h ou -? . Désactiver les messages d'avertissement quand ils le sont déjà ou les activer quand ils sont déjà activés est acceptable.
- L'option -t sélectionne l'option -w.
- -X
- C'est une option spécifique au dialecte.
AIX:
ATTENTION : utiliser cette option sur un système AIX
chargé peut provoquer une panne tellement importante d'un processus
d'application qu'il ne peut ni être tué, ni être
arrêté. Je n'ai jamais vu cela arriver cela ni entendu des
échos à ce sujet, mais je pense que la possibilité
existe.
- Cette option -X IBM AIX RISC/System 6000 indique à lsof d'utiliser la fonction du noyau readx(). (Par défaut, l'utilisation de readx() est désactivée.) Sur AIX 5L et supérieur, lsof peut nécessiter une permission setuid-root pour effectuer les actions requises par cette option.
- On peut spécifier lors de la construction de lsof que l'option -X doit être limitée aux processus dont l'UID réel est root. Si cela a été fait, l'option -X n'apparaîtra pas dans la sortie d'aide -h ou -? à moins que l'UID réel du processus lsof ne soit root. La distribution lsof par défaut permet à n'importe quel UID de spécifier -X, et elle apparaîtra par conséquent par défaut dans la sortie d'aide.
- Quand l'utilisation du readx() AIX est interdite, lsof peut ne pas être capable de rapporter de l'information sur toutes les références de fichiers texte et de chargeur, mais il peut également éviter d'exacerber une erreur noyau de recherche de répertoire du noyau AIX, connue sous le nom de bogue d'ID de segment périmé (Stale Segment ID Bug).
- Quand readx() est activé, lsof essaiera de rapporter de l'information sur le fichier texte exécuté par chaque processus, et sur les librairies partagées qu'il utilise.
- La fonction readx(), utilisée par lsof ou par tout autre programme, pour accéder à certaines sections de la mémoire virtuelle du noyau, peut déclencher le bogue d'ID de segment périmé. Elle peut faire croire erronément à la fonction dir_search() du noyau qu'une partie d'une copie en mémoire d'un répertoire système de fichiers été zéro-ifiée. Un autre processus applicatif, distinct de lsof, demandant au noyau de parcourir le répertoire - p.ex.en utilisant open(2) - peut faire boucler dir_search() éternellement, bloquant ainsi le processus applicatif.
- Consultez la FAQ de lsof (La section FAQ vous donne son emplacement.) et le fichier 00README de la distribution de lsof pour une description plus complète du bogue d'ID de segment périmé, de son APAR, et des méthodes pour définir l'utilisation de readx() lors de la compilation de lsof.
- --
- L'option constituée de deux signes moins est un marqueur qui signale la fin des options. Elle peut être utilisée, par exemple, quand le premier nom de fichier commence par un signe moins. Elle peut également être employée quand l'absence de valeur pour la dernière option doit être annoncée par la présence d'un signe moins dans l'option suivante et avant le début des noms de fichiers.
- noms
- Ce sont les noms de chemins des fichiers spécifiques à lister. Les liens symboliques sont résolus avant utilisation. Le premier nom peut être séparé des options précédentes avec l'option « -- ».
- Si un nom est le répertoire de montage d'un système de fichiers, ou le périphérique du système de fichiers, lsof listera tous les fichiers ouverts sur le système de fichiers. Pour être considéré représenter un système de fichiers, le nom doit correspondre à un répertoire mount-é de la sortie de mount(8) , ou correspondre au nom d'un périphérique en mode bloc associé à un nom de répertoire monté. L'option +|-f peut être utilisée pour forcer lsof pour considérer qu'un nom est un identificateur de système de fichiers (+f) ou un simple fichier (-f).
- Si nom est un chemin menant à un répertoire qui n'est pas le nom du répertoire de montage d'un système de fichiers, il est traité comme le serait un fichier normal - c.-à-d. que son listage est restreint aux processus qui l'ont ouvert en tant que fichier ou en tant que répertoire spécifique à un processus, comme le répertoire racine ou le répertoire de travail actuel. Pour requérir que lsof recherche des fichiers ouverts à l'intérieur d'un nom de répertoire, utilisez les options +d s et +D D.
- Si un nom est le nom de base d'une famille de fichiers multiplexés - p.ex. les fichiers /dev/pt[cs] - AIX, lsof listera tous les fichiers multiplexés associés qui sont ouverts sur le périphérique - p.ex. /dev/pt[cs]/1, /dev/pt[cs]/2, etc.
- Si un nom est un nom de socket de domaine UNIX, lsof le recherchera seulement grâce aux caractères du nom - exactement comme il est spécifié et enregistré dans la structure de socket du noyau. Spécifier un chemin relatif - p.ex. ./fichier - au lieu du chemin absolu du fichier - p.ex. /tmp/fichier - ne fonctionnera pas car lsof doit faire correspondre les caractères que vous spécifiez avec ceux qu'il trouve dans les structures des sockets de domaine UNIX du noyau.
- Si un nom n'est pas d'un des types repris plus haut, lsof listera les fichiers ouverts dont les périphérique et i-noeud correspondent à celui du nom de chemin spécifié.
- Si vous avez également spécifié l'option -b, les seuls noms que vous pouvez spécifier sans risque sont les systèmes de fichiers pour lesquels votre table de montage fournit des numéros de périphériques alternatifs. Voyez les sections ÉVITER LES BLOCAGES DU NOYAU et NUMÉROS DE PÉRIPHÉRIQUES ALTERNATIFS pour plus d'informations.
- De multiples noms de fichiers sont associées dans un seul ensemble par un OU binaire avant de participer à une sélection par ET binaire des options.
AFS¶
Lsof supporte la reconnaissance des fichiers AFS pour les dialectes (et versions AFS) suivants :
AIX 4.1.4 (AFS 3.4a) HP-UX 9.0.5 (AFS 3.4a) Linux 1.2.13 (AFS 3.3) Solaris 2.[56] (AFS 3.4a)
Il peut reconnaître les fichiers AFS sur d'autres versions de ces dialectes, mais cela n'a pas été testé. En fonction de la façon dont AFS est implémenté, lsof peut reconnaître les fichiers AFS dans d'autres dialectes, ou avoir des difficultés à reconnaître les fichiers AFS dans les dialectes supportés.
Lsof peut avoir du mal à identifier tous les aspects des fichiers AFS dans les dialectes supportés quand le support noyau de l'AFS est implémenté via des modules dynamiques dont les adresses n'apparaissent pas dans la liste des noms de variables du noyau. Dans ce cas, lsof pourrait être dans l'obligation de deviner l'identité des fichiers AFS, et ne pas être capable d'obtenir depuis le noyau l'information de volume qui est nécessaire pour le calcul des numéros de noeuds de volumes AFS. Quand lsof ne peut calculer les numéros de noeuds de volume, il rapporte un blanc dans la colonne NODE (noeud).
L'option -A A est disponible sur certaines implémentations de dialectes de lsof pour spécifier le fichier de liste de noms où l'on peut trouver les adresses noyau des modules dynamiques. Quand cette option est disponible, elle sera listée dans la sortie d'aide de lsof , présentée en réponse au -h ou au -?
Voyez la FAQ lsof (La section FAQ vous donne son emplacement) pour obtenir plus d'informations sur les modules dynamiques, leurs symboles, et la façon dont ils affectent les options de lsof.
Puisque les recherches de chemin AFS ne semblent pas contribuer aux opérations du cache de noms du noyau, lsof ne peut identifier les composants du nom de chemin pour les fichiers AFS.
SÉCURITɶ
Lsof dispose de trois fonctionnalités qui peuvent générer des problèmes de sécurité. Primo, son mode de compilation par défaut permet à n'importe qui de l'utiliser pour lister tous les fichiers ouverts. Secundo, il crée par défaut un fichier de cache de périphérique accessible à la fois en lecture et en écriture pour un utilisateur dans le répertoire personnel de l'UID réel qui exécute lsof. (Les fonctionnalités de listage de tous les fichiers ouverts et de cache des périphériques peuvent être désactivées lors de la compilation de lsof ). Tertio, ses options -k et -m nomment des listes de noms du noyau ou des fichiers mémoire alternatifs.
Le restriction sur le listage des fichiers ouverts est contrôlée par l'option de compilation HASSECURITY. Quand HASSECURITY est définie, lsof ne permettra qu'au seul root de lister tous les fichiers ouverts. L'utilisateur non root ne peut lister que les fichiers ouverts par les processus possédant le même numéro d'IDentification d'utilisateur que celui du numéro d'ID d'utilisateur du processus lsof (celui avec lequel l'utilisateur s'est connecté). Quand HASSECURITY n'est pas définie, n'importe qui peut lister tous les fichiers ouverts.
La sortie d'aide, présentée en réponse à l'option -h ou -? , fournit l'état de définition de la macro HASSECURITY.
Voyez la section Security du fichier 0README de la distribution de lsof pour savoir comment construire lsof en activant l'option HASSECURITY.
La création et l'utilisation d'un fichier de cache de périphériques accessible à la fois en lecture et en écriture par un utilisateur sont contrôlées par l'option de compilation HASDCACHE. Voyez la section FICHIER DE CACHE DE PÉRIPHÉRIQUE et suivantes pour connaître les détails de la formation du chemin. Pour des considerations de sécurité, il est important de noter que dans la distribution par défaut de lsof , si l'ID d'utilisateur réel sous lequel lsof est exécuté est root, le fichier de cache de périphérique sera écrit dans le répertoire personnel de root - c.-à-d. / ou /root. Quand HASDCACHE n'est pas définie, lsof n'essaie ni d'écrire ni de lire un fichier de cache de périphérique.
Quand HASDCACHE est définie, la sortie d'aide de lsof , présentée en réponse aux options -h, -D?, ou -? , fournira de l'information sur le traitement des fichiers de cache de périphérique. Quand HASDCACHE n'est pas définie, la sortie de -h ou de -? ne présentera pas la description de l'option -D.
Avant que vous ne décidiez de désactiver la fonctionnalité des fichiers de cache de périphérique - l'autoriser améliore la performance de lsof en réduisant la surcharge au démarrage induite par l'examen de tous les noeuds de /dev (ou /devices) - lisez la discussion à ce sujet dans le fichier 00DCACHE de la distribution de lsof et la FAQ lsof (La section FAQ vous donne son emplacement.)
EN CAS DE DOUTE, VOUS POUVEZ DÉSACTIVER TEMPORAIREMENT L'UTILISATION DU FICHIER DE CACHE DE PÉRIPHÉRIQUES AVEC L'OPTION -Di.
Quand l'utilisateur de lsof déclare des listes de noms du noyau ou des fichiers mémoire alternatifs avec les options -k et -m , lsof vérifie que l'utilisateur à l'autorisation de les lire avec access(2). C'est destiné à éviter les pouvoirs spéciaux que les modes de lsof pourraient lui conférer en lui laissant lire des fichiers normalement non accessibles d'après les droits de l'ID de l'utilisateur réel.
SORTIE¶
Cette section décrit l'information que liste lsof pour chaque fichier ouvert. Voyez la section SORTIE POUR D'AUTRES PROGRAMMES pour plus d'informations sur la sortie pouvant être traitée par un autre programme.
Lsof ne produit que des caractères ASCII imprimables (considérés comme tels par isprint(3)). Les caractères non imprimables sont affichés dans l'une des trois formes suivantes : la forme C « \[bfrnt] » ; la forme caractère de contrôle « ^ » (p.ex. « ^@ ») ; ou la forme hexadécimale avec un « \x » de tête (p.ex. « \xab »). L'espace est non imprimable dans la colonne COMMAND (« \x20 ») et imprimable ailleurs.
Lsof dimensionne dynamiquement les colonnes de sortie à chaque fois qu'il est exécuté, en garantissant que chaque colonne ait une taille minimale. Il garantit aussi que chaque colonne est séparée de la précédente par au moins une espace.
- COMMAND
- contient les neuf premiers caractères du nom de la commande UNIX associée au processus.
- Tous les caractères de nom de commandes conservés par le noyau dans ses structures sont affichés dans la sortie en champs quand le descripteur de nom de commande (« c ») est spécifié. Voyez la section SORTIE POUR D'AUTRES PROGRAMMES pour plus d'informations sur la sélection des champs de sortie et sur le descripteur du nom de commande associé.
- PID
- est le numéro d'IDentification de Processus du processus.
- PPID
- est le numéro d'IDentification du Processus Parent du processus. Il n'est affiché que lorsque l'option -R a été spécifiée.
- PGID
- est le numéro d'IDentification de Groupe de Processus associé au processus. Il n'est affiché que lorsque l'option -g a été spécifiée.
- USER
- est le numéro d'ID d'utilisateur ou le nom de connexion de l'utilisateur à qui appartient le processus, habituellement le même que celui rapporté par ps(1). Néanmoins, sous Linux, USER est le numéro d'ID ou le nom de connexion de l'utilisateur qui détient le répertoire /proc où lsof trouve de l'information sur le processus. Habituellement, c'est la même valeur que celle rapportée par ps(1), mais elle peut différer quand le processus a changé de UID effectif. (Voyez la description de l'option -l pour obtenir de l'information sur le moment où un numéro UID ou un nom de connexion est affiché.)
- FD
- est le numéro de Descripteur de Fichier du fichier ou :
-
cwd répertoire de travail actuel ;
Lnn références de librairie (AIX) ;
jld répertoire « prison » (FreeBSD) ;
ltx texte de librairie partagée (code et données) ;
Mxx HEX MEMORY-MAPPED TYPE NUMBER xx.
m86 DOS MERGE MAPPED FILE ;
mem fichier projeté en mémoire ;
mmap périphérique projeté en mémoire ;
pd répertoire parent ;
rtd répertoire racine ;
txt texte du programme (code et données) ;
v86 VP/ix MAPPED FILE ; - FD est suivi par l'un de ces caractères, décrivant le mode selon lequel le fichier est ouvert :
- r pour un accès en lecture ;
w pour un accès en écriture ;
u pour un accès en lecture et
en écriture ;
espace si mode inconnu et si aucun
caractère de verrouillage ne suit ;
« - » si mode inconnu et caractère
de verrouillage à la suite. - Le caractère de mode est suivi par l'un de ces caractères de verrouillage, décrivant le type de verrou appliqué au fichier :
- N pour un verrou Solaris NFS de type
inconnu ;
r pour un verrou en lecture sur une partie
du fichier ;
R pour un verrou en lecture sur le fichier
entier ;
w pour un verrou en écriture sur une
partie du fichier ;
W pour un verrou en écriture sur le
fichier entier ;
u pour un verrou en lecture et écriture
de n'importe quelle longueur ;
U pour un verrou de type inconnu ;
x pour un verrou Xenix SCO OpenServer sur
une partie du fichier ;X pour un verrou Xenix SCO OpenServer sur
le fichier entier ;
espace s'il n'y a pas de verrou. - Voyez la section VERROUS pour plus d'informations sur le caractère d'information de verrouillage.
- Le contenu de la colonne FD constitue un champ unique pour l'analyse syntaxique dans les scripts de post-traitement.
- TYPE
- est le type de noeud associé au fichier - p.ex. GDIR, GREG, VDIR, VREG, etc.
- ou « IPv4 » pour un socket IPv4 ;
- ou « IPv6 » pour un fichier réseau IPv6 ouvert - même si son adresse est de type IPv4, convertie en une adresse IPv6 ;
- ou « ax25 » pour un socket Linux AX.25 ;
- ou « inet » pour un socket de domaine Internet ;
- ou « lla » pour un fichier d'accès HP-UX de niveau lien ;
- ou « rte » pour un socket AF_ROUTE ;
- ou « sock » pour un socket de domaine inconnu ;
- ou « unix » pour un socket de domaine UNIX ;
- ou « x.25 » pour un socket x.25 HP-UX ;
- ou « BLK » pour un fichier spécial en mode bloc ;
- ou « CHR » pour un fichier spécial en mode caractère ;
- ou « DEL » pour un LINUX MAP FILE qui a été effacé ;
- ou « DIR » pour un répertoire ;
- ou « DOOR » pour un fichier VDOOR ;
- ou « FIFO » pour un fichier spécial de type FIFO ;
- ou « LINK » pour un fichier lien symbolique ;
- ou « MPB » pour un fichier multiplexé en mode bloc ;
- ou « MPC » pour un fichier multiplexé en mode caractère ;
- ou « PAS » pour un fichier /proc/as ;
- ou « PAXV » pour un fichier /proc/auxv ;
- ou « PCRE » pour un fichier /proc/cred ;
- ou « PCTL » pour un fichier de contrôle de /proc ;
- ou « PCUR » pour le processus courant de /proc ;
- ou « PCWD » pour un répertoire de travail courant de /proc ;
- ou « PDIR » pour un répertoire /proc ;
- ou « PETY » pour un type exécutable de /proc (etype) ;
- ou « PFD » pour un descripteur de fichier de /proc ;
- ou « PFDR » pour un répertoire de descripteurs de fichiers de /proc ;
- ou « PFIL » pour un fichier exécutable de /proc ;
- ou « PFPR » pour un jeu de registres FP de /proc ;
- ou « PGD » pour un fichier /proc/pagedata ;
- ou « PGID » pour un fichier notifieur de groupe de /proc ;
- ou « PIPE » pour les tubes ;
- ou « PLC » pour un fichier /proc/lwpctl ;
- ou « PLDR » pour un répertoire /proc/lpw ;
- ou « PLDT » pour un fichier /proc/ldt ;
- ou « PLPI » pour un fichier /proc/lpsinfo ;
- ou « PLST » pour un fichier /proc/lstatus ;
- ou « PLU » pour un fichier /proc/lusage ;
- ou « PLWG » pour un fichier /proc/gwindows ;
- ou « PLWI » pour un fichier /proc/lwpsinfo ;
- ou « PLWS » pour un fichier /proc/lwpstatus ;
- ou « PLWU » pour un fichier /proc/lwpusage ;
- ou « PLWX » pour un fichier /proc/xregs ;
- ou « PMAP » pour un MAP FILE de /proc (map) ;
- ou « PMEM » pour un fichier d'image mémoire de /proc ;
- ou « PNTF » pour un fichier notifieur de processus de /proc ;
- ou « POBJ » pour un fichier /proc/object ;
- ou « PODR » pour un répertoire /proc/object ;
- ou « POLP » pour un fichier de processus léger de /proc dans l'ancien format ;
- ou « POPF » pour un fichier de PID de /proc dans l'ancien format ;
- ou « POPG » pour un /proc PAGE DATA FILE dans l'ancien format ;
- ou « PORT » pour un tube nommé SYSV ;
- ou « PREG » pour un fichier d'enregistrement à /proc ;
- ou « PRMP » pour un fichier /proc/rmap ;
- ou « PRTD » pour un répertoire racine de /proc ;
- ou « PSGA » pour un fichier /proc/sigact ;
- ou « PSIN » pour un fichier /proc/psinfo ;
- ou « PSTA » pour un fichier de statut de /proc ;
- ou « PUSG » pour un fichier /proc/usage ;
- ou « PW » pour un fichier /proc/watch ;
- ou « PXMP » pour un fichier /proc/xmap ;
- ou « REG » pour un fichier régulier (normal) ;
- ou « SMT » pour un fichier de transport de mémoire partagée ;
- ou « STSO » pour un socket de flux ;
- ou « UNNM » pour un fichier de type anonyme ;
- ou « XNAM » pour un fichier spécial Xenix OpenServer de type inconnu ;
- ou « XSEM » pour un fichier sémaphore Xenix OpenServer ;
- ou « XSD » pour un fichier de données partagées Xenix OpenServer.
- FILE-ADDR
- contient l'adresse de la structure de fichier du noyau quand f a été spécifié à +f;
- FCT
- contient le nombre de références de fichiers à partir de la structure de fichier du noyau quand c a été spécifié à +f;
- FILE-FLAG
- quand g ou G a été spécifié à +f, ce champ contient le contenu du (des) membre(s) f_flag[s] de la structure de fichier du noyau et les attributs des fichiers ouverts par processus du noyau (s'ils sont disponibles) ; « G » provoque leur affichage en hexadécimal ; « g », comme diminutifs ; deux listes peuvent être affichées, les entrées étant séparées par des virgules, les listes étant séparées par un point-virgule (« ; ») ; la première liste peut contenir des diminutifs pour les valeurs de f_flag[s] de la table suivante :
-
AIO E/S asynchrone (p.ex. FAIO) AP concaténation ASYN E/S asynchrone (p.ex. FASYNC) BAS BLOCK, TEST, AND SET IN USE BKIU BLOCK IF IN USE BL utiliser les décalages de blocs BSK recherche de bloc CA évitement de copie CLON clone CLRD CL READ CR créer DF différer DFI différer IND DFLU vidage de données DIR DIRECTz(quelle traduction?) DLY délai DOCL créer un clone DSYN intégrité des données uniquement EX ouverture pour exec EXCL ouverture exclusive FSYN écritures synchrones GCDF différer pendant unp_gc() (AIX) GCMK marquer pendant unp_gc() (AIX) GTTY accédé via /dev/tty HUP HUP en cours KERN noyau KIOC ioctl émis du noyau LCK possède un verrou LG gros fichier MBLK bloc de message de flux MK marqué MNT monté MSYN synchronisation multiplexée NB E/S non bloquantes NBDR pas de contrôle BDRM NBIO E/S SYSV non bloquantes NBF n-buffering en cours NC pas de cache ND pas de délai NDSY pas de synchronisation des données NET réseau NMFS système de fichiers NM NOTO DISABLE BACKGROUND STOP NSH aucun partage NTTY aucun TTY de contrôle OLRM miroir OLR PAIO E/S POSIX asynchrones PP tube POSIX R READ RAIO requête RAIO sur Reliant UNIX RC cache de verrouillage de fichier et d'enregistrement REV révoqué RSH lecture partagée RSYN synchronisation en lecture SL verrou partagé SOCK socket SQSH Sequent SHARED SET ON OPEN(Sequent:type de machine non?) SQSV Sequent SVM SET ON OPEN SQR Sequent SET REPAIR ON OPEN SQS1 Sequent FULL SHARED OPEN SQS2 Sequent PARTIAL SHARED OPEN STPI arrêter les E/S SWR SYNCHROUNOUS READ (rem:ça serait pas écriture plutôt? Synchro WRite) SYN intégrité du fichier lors de l'écriture TCPM éviter les collision TCP TR tronquer W écrire WKUP synchronisation I/O parallèles WTG synchronisation I/O parallèles VH vhangup en attente VTXT texte virtuel XL verrou exclusif
- cette liste de noms a été dérivée des #define F* dans les fichiers d'en-tête de dialecte <fcntl.h>, <linux</fs.h>, sys/fcntl.c>, <sys/fcntlcom.h> et <sys/file.h> ; voyez le fichier d'en-tête lsof.h pour une liste des correspondances entre les diminutifs ci-dessus et les définitions du fichier d'en-tête ;
- la seconde liste (après le point-virgule) peut contenir des diminutifs ci-dessus pour les attributs des fichiers ouverts par processus du noyau en provenance de cette table :
-
ALLC alloué BR le fichier a été lu BHUP activité stoppée par SIGHUP BW le fichier a été écrit CLSG fermeture CX close-on-exec (voir fcntl(F_SETFD)) MP projeté en mémoire LCK verrou appliqué RSVW attente réservée SHMT ensemble UF_FSHMAT (AIX) USE en cours d'utilisation (multi-threadé)
- NODE-ID
- (ou INODE-ADDR dans certains dialectes) contient un identificateur unique pour le noeud du fichier (habituellement l'adresse d'i-noeud ou de v-noeud du noyau, mais parfois également une concaténation du périphérique et du numéro de noeud) quand n a été spécifié à +f;
- DEVICE
- contient les numéros de périphériques, séparés par des virgules, pour un fichier spécial en mode caractère, en mode bloc, pour un fichier régulier, un répertoire ou un fichier NFS ;
- ou « memory » pour un noeud de système fichier mémoire sous DEC OSF/1, Digital UNIX ou Tru64 UNIX;
- ou l'adresse de la zone de données privées d'un flux de socket Solaris ;
- ou une adresse de référence dans le noyau qui identifie le fichier (l'adresse de référence dans le noyau peut être utilisée pour les FIFOs, par exemple.);
- ou l'adresse de base ou le nom de périphérique d'un périphérique de socket Linux AX.25.
- Habituellement, seuls les 32 bits de poids faible des adresses noyau DEC OSF/1, Digital UNIX ou Tru64 UNIX sont affichés.
- SIZE, SIZE/OFF, or OFFSET
- est la taille du fichier ou la position dans le fichier en octets. Une valeur n'est affichée dans cette colonne que si elle est disponible. Lsof affiche la valeur - taille ou position - qui est appropriée et disponible pour le type du fichier et la version de lsof.
- Sous certains dialectes UNIX, lsof ne peut obtenir d'information de position dans le fichier précise ou logique à partir des sources de données du noyau, parfois seulement pour certains types spéciaux de fichiers (p.ex. les fichiers de socket). Dans d'autres cas, les fichiers ne possèdent pas de taille réelle - p.ex. les sockets, FIFOs, tubes - de ce fait, lsof affiche au lieu de leur taille le total contenu trouvé dans leurs descripteurs de tampon dans le noyau (p.ex. SOCKET BUFFER SIZE COUNTS ou tailles de fenêtre TCP/IP.) Consultez la FAQ lsof (La section FAQ vous donne son emplacement.) pour plus d'informations.
- La taille de fichier est affichée en décimal ; la position est normalement affichée en décimal avec un « 0t » de tête s'il contient 8 chiffres ou moins ; en hexadécimal avec un « 0x » de tête s'il est plus long que 8 chiffres. (Consultez la description de l'option -o o pour savoir si 8 est bien la valeur par défaut.)
- Par conséquent, les « 0t » et « 0x » de tête identifient une position quand la colonne peut contenir à la fois une taille et une position (c.-à-d. lorsque son titre est SIZE/OFF).
- Si l'option -o est spécifiée, lsof affiche toujours la position dans le fichier (ou rien du tout si aucune position n'est disponible) et nomme la colonne OFFSET. La position commence toujours par « 0t » ou « 0x » comme décrit plus haut.
- L'utilisateur de lsof peut contrôler le passage de « 0t » en « 0x » avec l'option -o o. Consultez sa description pour plus d'informations.
- Si l'option -s est spécifiée, lsof affiche toujours la taille du fichier (ou rien du tout si aucune taille n'est disponible) et nomme la colonne SIZE. Les options -o et -s sont mutuellement exclusives ; elles ne peuvent être spécifiées en même temps.
- Pour les fichiers qui n'ont pas une taille fixe - p.ex. qui ne résident pas sur un périphérique de disque - lsof affichera une information appropriée sur la taille courante ou la position du fichier si elle est disponible dans les structures du noyau qui définissent le fichier.
- NODE
- est le numéro de noeud d'un fichier local ;
- ou le numéro d'i-noeud d'un fichier NFS sur l'hôte serveur ;
- ou le type de protocole Internet - p.ex. « TCP » ;
- ou « STR » pour un flux ;
- ou « CCITT » pour un socket HP-UX x.25 ;
- ou l'IRQ ou le numéro d'i-noeud pour un périphérique socket Linux AX.25.
- NAME
- est le nom du point de montage et du système de fichiers sur lequel réside le fichier ;
- ou le nom d'un fichier spécifié dans l'option noms (après que tous les liens symboliques aient été résolus) ;
- ou le nom d'un périphérique spécial en mode caractère ou bloc ;
- ou les adresses Internet locale et distante d'un fichier réseau ; le nom d'hôte local ou adresse IP est suivi par un signe deux-points (« : »), le port, « -> », et l'adresse distante en deux parties ; les adresses IP peuvent être rapportées sous forme décimale pointée ou en tant que noms, en fonction des options +|-M, -n et -P ; les numéros IPv6 séparés par des deux-points sont enfermés entre crochets ; les adresses IPv4 INADDR_ANY et IPv6 IN6_IS_ADDR_UNSPECIFIED, et le numéro de port nul (zéro) sont représentés par une astérisque (« * ») ; une adresse destination UDP peut être suivie par la durée écoulée depuis que le dernier paquet a été envoyé à la destination ; les adresses distantes TCP et UDP peuvent être suivies par de l'information TCP/TPI entre parenthèses - état (p.ex. « (ESTABLISHED) », « (Unbound) »), tailles de queue, et tailles de fenêtre (pas sur tous les dialectes) - d'une manière similaire à celle que rapporte netstat(1) ; voyez la description de l'option -T ou la description du champ TCP/TPI dans SORTIE POUR D'AUTRES PROGRAMMES pour en savoir plus sur l'état, la taille de queue, et la taille de fenêtre ;
- ou l'adresse ou nom d'un socket de domaine UNIX, incluant éventuellement un nom de périphérique clone de flux, un nom de chemin d'un objet du système de fichiers, des adresses noyau locales et distantes, SOCKET PAIR INFORMATION, et A BOUND VNODE ADDRESS ;
- ou les noms des points de montage locaux et distants d'un fichier NFS ;
- ou « STR », suivi par le nom du flux ;
- ou un STREAM CHARACTER DEVICE NAME, suivi par « -> » et le nom du flux ;
- ou « STR: » suivi par le périphérique de flux SCO OpenServer et le nom des modules, séparés par « -> »;
- ou un nom de répertoire système, « -- », et autant de composants du nom de chemin que peut en trouver lsof dans le cache de noms du noyau pour les dialectes sélectionnés (Voyez la section CACHE DE NOMS DU NOYAU pour plus d'informations.) ;
- ou « PIPE-> », suivi par une adresse de destination d'un tube noyau Solaris ;
- ou « COMMON: », suivi par le nom de périphérique de la structure d'information sur le périphérique du v-noeud, pour un v-noeud Solaris ordinaire ;
- ou la famille d'adresses, suivie par un slash (« / »), suivie par 14 octets séparés par des virgules d'une adresse de socket non-internet en mode brut ;
- ou l'adresse locale HP-UX x.25, suivie par le numéro de connexion virtuelle (s'il y en a), suivi par l'adresse distante (s'il y en a une) ;
- ou « (dead) » pour des fichiers dissociés OSF/1, Digital UNIX ou Tru64 UNIX - typiquement les fichiers de terminaux qui ont été marqués par ioctl TIOCNOTTY et fermés par des démons ;
- ou « rd=<offset> » et « wr=<offset> » pour les valeurs des positions de lecture et d'écriture d'une FIFO ;
- ou « clone n:/dev/event » pour les clones de fichiers SCO OpenServer du périphérique /dev/event , où n est le numéro mineur de périphérique du fichier ;
- ou « (socketpair: n) » pour un socket Solaris 2.6, 7, 8 BETA ou 8 BETA-Refresh de domaine UNIW, créé par la fonction réseau socketpair(3N) ;
- ou « no PCB » pour les fichiers socket qui n'ont pas de bloc protocole associé, éventuellement suivi par « , CANTSENDMORE » (ne peut plus rien envoyer) si l'envoi sur le socket a été désactivé, ou « , CANTRCVMORE » (ne peut plus rien recevoir) si la réception en provenance du socket a été désactivée (p.ex. par la fonction shutdown(2) ) ;
- ou les adresses locale et distante d'un fichier socket IPX Linux de la forme <net>:[<noeud>:]<port>, suivi entre parenthèses par les tailles des queues de transmission et de réception, et l'état de la connexion ;
- ou « dgram » ou « stream » pour les sockets de domaine Unix du noyau du type UnixWare 7.1.1 et supérieur, suivi par un signe deux-points (« : ») et le nom de chemin local quand il est disponible, suivi par « -> » et le nom de chemin distant ou l'adresse noyau du socket en hexadécimal lorsque c'est disponible.
Pour les dialectes qui supportent un système de fichiers « namefs », permettant à un fichier d'être attaché à un autre avec fattach(3C), lsof ajoutera « (FA:<adresse1><direction><adresse2>) » dans la colonne NAME. <adresse1> et <adresse2> sont des adresses de v-noeuds hexadécimales. <direction> sera « <- » si <adresse2> a été fattach-ée à ce v-noeud dont l'adresse est <adresse1> ; et « -> » si <adresse1>, l'adresse de v-noeud de ce v-noeud, a été fattach-ée à <adresse2>. <adresse1> peut être omise si elle apparaît déjà dans la colonne DEVICE.
VERROUS¶
Lsof ne peux rapporter adéquatement la large variété des verrous de fichier des dialectes UNIX en un seul caractère. Ce qu'il rapporte en un seul caractère est un compromis entre l'information qu'il extrait du noyau et les limitations du format de rapport.
Qui plus est, quand un processus détient plusieurs verrous au niveau octet sur un fichier, lsof ne rapporte que le statut du premier verrou rencontré. S'il s'agit d'un verrou au niveau octet, alors le caractère de verrouillage sera rapporté en minuscule - c.-à-d. « r », « w » ou « x » - plutôt que la majuscule équivalente rapportée pour un verrou de fichier entier.
Généralement, lsof ne peux rapporter que les verrous détenus par des processus locaux sur des fichiers locaux. Quand un processus local pose un verrou sur un fichier monté à distance (p.ex. via NFS), l'hôte serveur distant enregistre habituellement l'état du verrou. Solaris forme une exception - pour certains niveaux de patch des version 2.3, et dans toutes les version supérieures à 2.4, le noyau Solaris enregistre de l'information sur les verrous distants dans des structures locales.
Lsof a du mal à rapporter les verrous pour certains dialectes UNIX. Consultez la section BOGUES de cette page de manuel ou la FAQ lsof (La section FAQ vous donne son emplacement.) pour plus d'informations.
SORTIE POUR D'AUTRES PROGRAMMES¶
Quand l'option -F est spécifiée, lsof produit une sortie qui convient au traitement par un autre programme - p.ex. un script awk ou Perl.
Chaque unité d'information est produite en sortie dans un champ qui est identifié par un caractère de tête et qui est terminé par un NL (012) (ou un NUL (000) si le caractère identificateur de champ 0 (zéro) est spécifié.) Les données du champ suivent immédiatement le caractères d'identification de champ et s'étendent jusqu'au terminateur de champ.
Il est possible de se représenter la sortie en champs comme des ensembles de processus et de fichiers. Un ensemble de processus commence par un champ dont l'identificateur est « p » (pour IDentificateur de processus)). Il s'étend jusqu'au commencement du champ de PID suivant ou jusqu'au début du premier ensemble de fichiers du processus, celui qui vient en premier. Sont également inclus dans l'ensemble de fichiers : les champs qui identifient la commande, le numéro d'IDentification de Groupe de Processus (PGID), et le numéro d'ID d'utilisateur (UID) ou nom de connexion.
Un ensemble de fichiers commence par un champ dont l'identificateur est « f » (pour descripteur de fichier). Il est suivi de lignes décrivant les modes d'accès, état de verrouillage, type, périphérique, taille, offset, i-noeud, protocole et nom du fichier, et les noms des modules de flux. Il s'étend jusqu'au début de l'ensemble de fichiers ou de processus suivant, à savoir celui vient en premier.
Quand le terminateur de champ NUL (000) a été sélectionné avec le caractère identificateur de champ 0 (zéro), lsof termine chaque ensemble de processus et de fichiers par un caractère NL (012).
Lsof produit toujours un champ, le champ PID (« p »). Tous les autres champs peuvent être déclarés facultativement dans la liste de caractères identificateurs de champ qui suit l'option -F. Quand un caractère de sélection de champ identifie un élément que ne liste normalement pas lsof - p.ex. le PPID, sélectionné avec la spécification -R - de caractère de champ - p.ex. « -FR » - sélectionne également le listage de l'élément.
Il est parfaitement possible de sélectionner un groupe de champs qui ne peuvent aisément être analysé - p.ex. si le champ de descripteur de champ n'est pas sélectionné, il peut être difficile d'identifier les ensembles de fichiers. Pour vous aider à éviter cet obstacle, lsof supporte l'option -F ; elle sélectionne la sortie de tous les champs de terminateur NL (le couple d'options -F0 sélectionne la sortie de tous les champs de terminateur NUL). Pour des raisons de compatibilité, ni -F ni -F0 ne sélectionnent le champ raw device.
Voici les champs que produira lsof. Le caractère unique listé en premier lieu est l'identificateur de champ.
a mode d'accès du fichier c nom de commande du processus (tous les caractères provenant de proc ou d'une structure utilisateur) C nombre de partages de la structure fichier d code de caractère du périphérique du fichier D numéro de périphérique majeur/mineur (0x<hexadécimal>) f descripteur du fichier F adresse de la structure fichier (0x<hexadécimal>) G attributs du fichier (0x<hexadécimal> ; NAMES(la commande?) si suivi de +fg) i numéro d'i-noeud du fichier l état de verrouillage du fichier L nom de l'utilisateur exécutant le processus m marqueur entre des sorties répétées n nom du fichier, commentaire, adresse Internet N identificateur de noeud (ox<hexadécimal> o position dans le fichier (décimal) p ID du processus (toujours sélectionné) g ID du groupe de processus P nom du protocole r numéro de périphérique brut (0x<hexadécimal>) R ID du processus père s taille du fichier (décimale) S identification du flux du fichier t type du fichier T information TCP/TPI, identifiée par des préfixes (le « = » fait partie du préfixe) : ST=<état> QR=<taille queue de lecture> QS=<taille queue de écriture> WR=<taille fenêtre de lecture> (pas tous les dialectes) WW=<taille fenêtre d'écriture> (pas tous les dialectes) (L'information d'état TPI et les tailles de fenêtre ne sont pas rapportées sur tous les dialectes UNIX supportés. La sortie d'aide -h ou -? pour l'option -T montrera si on peut requérir le rapportage de la taille de fenêtre.) u ID utilisateur du processus 0 utiliser le caractère de terminaison de champ NUL plutôt que NL 1-9 identificateurs de champs spécifiques au dialecte (La sortie de -F? identifie l'information que l'on peut trouver dans les champs spécifiques au dialecte.)
Vous pouvez obtenir de l'information en ligne sur ces caractères et leur description en spécifiant le couple d'options -F? (Protégez le caractère « ? » si votre shell le requiert.) Des informations supplémentaires sur le contenu des champs peuvent être trouvées dans la section SORTIE.
Par exemple, « -F pcfn » sélectionnera les champs ID de processus (« p »), nom de commande (« c »), descripteur de fichier (« f ») et le nom de fichier (« n ») avec NL servant comme caractère terminateur de champ ; « -F pcfn0 » sélectionne la même sortie mais avec NUL (000) comme caractère terminateur de champ.
Lsof ne produit pas tous les champs pour chaque ensemble de processus ou de fichiers, mais uniquement ceux qui sont disponibles. Certains champs sont mutuellement exclusifs : les caractères de périphérique de fichier et les numéros de périphérique majeur/mineur ; numéro d'i-noeud du fichier et nom de protocole ; nom du fichier et identification du flux ; taille du fichier et position. Un seul membre de ces ensembles mutuellement exclusifs apparaîtra dans la sortie des champs, mais pas les deux.
Normalement, lsof termine chaque champ par un caractère NL (012). Le caractère identificateur de champ 0 (zéro) peut être spécifié pour remplacer le caractère terminateur de champ par un NUL (000). Un terminateur NUL peut être plus facile à traiter avec xargs (1), par exemple, ou avec des programmes dont les mécanismes de protection ne peuvent facilement gérer l'intervalle de caractères dans la sortie en champs. Quand le terminateur de champ NUL est utilisé, lsof termine chaque ensemble de processus et de fichiers par un NL (012).
Deux aides à la production de programmes pouvant traiter la sortie en champs de lsof sont incluses dans la distribution de lsof. La première est un fichier d'en-tête, lsof_fields.h, qui contient des symboles pour les caractères d'identification de champs, des index pour les stocker dans une table, et des chaînes de caractères d'explication qui peuvent être compilées dans les programmes. Lsof utilise ce fichier d'en-tête.
La seconde aide et un jeu de scripts d'exemples qui traitent la sortie en champs, qui sont écrits en awk, Perl 4, et Perl 5. Ils sont situés dans le sous-répertoire scripts de la distribution de lsof.
BLOCAGES ET TEMPORISATIONS¶
Lsof peut être bloqué par certaines fonctions du noyau qu'il utilise - lstat(2), readlink(2) et stat(2). Ces fonctions sont bloquées dans le noyau, par exemple, quand les hôtes où résident des systèmes de fichiers montés NFS deviennent inaccessibles.
Lsof essaie de se dégager de ces blocages grâce à des temporisateurs et des processus enfants, mais les techniques ne sont pas entièrement fiables. Quand lsof arrive à se dégager d'un blocage, il rapportera ce blocage par un message d'erreur. Les messages peuvent être supprimés avec les options -t et -w.
La valeur de temporisation par défaut peut être affichée avec l'option -h ou -? , et peut être modifiée avec l'option -S [t]. Le minimum pour t est deux secondes, mais vous devriez éviter de faibles valeurs, car le temps de réponse de systèmes lents peut provoquer l'expiration de temporisateurs de façon inattendue et peut-être stopper lsof avant qu'il n'ait pu produire quoi que ce soit en sortie.
Quand lsof doit se dégager d'un blocage pendant un accès à de l'information sur le système de fichiers monté, il continue normalement, bien que disposant de moins d'information disponible à afficher sur les fichiers ouverts.
Lsof peut également être enjoint à éviter la protection des temporisateurs et des processus enfants quand il utilise des fonctions du noyau qui pourraient bloquer en spécifiant l'option -O. Bien que cela permette à lsof de démarrer avec une moins grande surcharge, cela expose complètement lsof aux situations de noyau qui pourraient le bloquer. Utilisez cette option avec précaution.
ÉVITER LES BLOCAGES DU NOYAU¶
Vous pouvez utiliser l'option -b pour indiquer à lsof d'éviter d'utiliser les fonctions du noyau qui pourraient bloquer. Certaines précautions sont de mise.
D'abord, l'utilisation de cette option requiert habituellement que votre système fournisse des numéros de périphériques alternatifs en lieu et place des numéros de périphériques qu'obtiendrait normalement lsof via les fonctions du noyau lstat(2) et stat(2). Voyez la section NUMÉROS DE PÉRIPHÉRIQUES ALTERNATIFS pour en savoir plus sur les numéros de périphériques alternatifs.
Ensuite, vous ne pouvez spécifier de noms à faire localiser par lsof à moins qu'ils ne soient des noms de systèmes de fichiers. Cela est dû au fait que lsof doit connaître les numéros de périphérique et d'i-noeud des fichiers listés avec noms dans les options de lsof , et que l'option -b empêche lsof de les obtenir. De plus, puisque lsof ne dispose de numéro de périphériques que pour les systèmes de fichiers qui ont des alternatives, sa faculté à localiser des fichiers sur des systèmes de fichiers dépend entièrement de la disponibilité et de la précision des alternatives. Si aucune alternative n'est disponible, ou si elles sont incorrectes, lsof ne sera pas en mesure de localiser des fichiers sur les systèmes de fichiers nommés.
De plus, si les noms des répertoires de votre système de fichiers obtenus par lsof à partir de la table de montage de votre système sont des liens symboliques, lsof ne sera pas capable de résoudre les liens. Cela est dû au fait que l'option -b fait éviter à lsof l'utilisation de la fonction du noyau readlink(2) qu'il utilise pour résoudre les liens symboliques.
Finalement, l'utilisation de l'option -b fait émettre des messages d'avertissement à lsof quand il a besoin d'utiliser les fonctions du noyau que l'option -b lui ordonne d'éviter. Vous pouvez supprimer ces messages en spécifiant l'option -w , mais si vous le faites, vous ne verrez pas les numéros de périphériques alternatifs rapportés dans les messages d'avertissement.
NUMÉROS DE PÉRIPHÉRIQUES ALTERNATIFS¶
Sur certains dialectes, quand lsof doit se dégager d'un blocage parce qu'il ne peut obtenir d'information sur un système de fichiers monté via les fonctions du noyau lstat(2) et stat(2) , ou parce que vous avez spécifié l'option -b , lsof peut obtenir certaines informations qu'il désire - le numéro de périphérique et peut-être le type du système de fichiers - à partir de la table de montage du système. Quand cela est possible, lsof rapportera le numéro de périphérique qu'il a obtenu. (Vous pouvez empêcher l'émission du rapport en spécifiant l'option -w.)
Vous pouvez favoriser ce processus si votre table de montage est supportée via un fichier /etc/mtab ou /etc/mnttab qui contient un champs d'options en ajoutant un champ « dev=xxxx » pour les points de montage qui n'en possèdent pas dans leur chaîne d'options.
La partie « xxxx » du champ est la valeur hexadécimale du numéro de périphérique du système de fichiers. (Consultez le champ st_dev de la sortie des fonctions lstat(2) et stat(2) pour obtenir les valeurs appropriées pour vos systèmes de fichiers.) Voici un exemple provenant d'un fichier /etc/mnttab sous Solaris 2.6 pour un système de fichiers monté à distance via NFS :
nfs ignore,noquota,dev=2a40001
Il y a un avantage à avoir des entrées « dev=xxxx » dans votre fichier de table de montage, spécialement pour les systèmes de fichiers qui sont montés à partir de serveurs NFS distants. Quand un serveur distant se crashe et que vous voulez identifier ses utilisateurs en exécutant lsof sur l'un de ses clients, lsof ne sera probablement pas capable d'obtenir la sortie des fonctions lstat(2) et stat(2) pour le système de fichiers. S'il peut obtenir le numéro de périphérique du système de fichiers à partir de la table de montage, il sera capable d'afficher les fichiers ouverts sur le serveur NFS crashé.
Quelques dialectes qui n'utilisent pas de fichier ASCII /etc/mtab ou /etc/mnttab pour la table de montage peuvent tout de même fournir un numéro de périphérique alternatif dans leurs tables de montage internes. Ils se composent de AIX, Apple Darwin, DEC OSF/1, Digital UNIX, FreeBSD, NetBSD, OpenBSD et Tru64 UNIX. Lsof sait comment obtenir le numéro de périphérique alternatif pour ces dialectes, et l'utilise quand sa tentative de lstat(2) ou stat(2) -er le système de fichiers est bloquée.
Si vous n'êtes pas certain que votre dialecte supporte les numéros de périphériques alternatifs pour les systèmes de fichiers présents dans sa table de montage, utilisez cette incantation de lsof pour voir si elle rapporte des numéros de périphériques alternatifs :
- lsof -b
Recherchez parmi les messages d'avertissement concernant les fichiers sur la sortie d'erreur standard, ceux qui commencent par « assuming "dev=xxxx" from ... ».
CACHE DE NOMS DU NOYAU¶
Lsof est capable d'examiner le cache de noms du noyau ou d'utiliser d'autres mécanismes du noyau (p.ex. la fonction tag_to_path() ADVFS 4.x sous Digital UNIX ou Tru64 UNIX) sous certains dialectes pour la plupart des types de systèmes de fichiers, AFS exclus, et d'en extraire des composants de noms de chemin récemment utilisés. (Les recherches de chemin dans le système de fichiers AFS n'utilisent pas le cache de noms du noyau.)
Lsof rapporte les chemins complets qu'il trouve dans la colonne NAME. Si lsof ne peut rapporter tous les composants d'un chemin, il rapporte dans la colonne NAME le nom du système de fichiers, suivi par une espace, deux caractères « - », une autre espace, et les composants du nom qu'il a localisé, séparés par le caractère « / ».
Quand lsof est exécuté en mode répétition - c.-à-d. lorsque l'option -r est spécifiée - la faculté qu'il a à rapporter les composants de noms de chemin pour le même fichier peut varier de période en période. Cela est dû au fait que les autres processus s'exécutant peuvent faire supprimer par le noyau des entrées de son cache de noms et les remplacer par d'autres.
L'utilisation par lsof du cache de noms du noyau pour identifier les chemins des fichiers peut l'amener à rapporter incorrectement des composants dans certaines circonstances. Cela peut se produire quand le cache de noms du noyau utilise les numéros de périphérique et de noeud comme clé (p.ex. Linux et SCO OpenServer) et qu'une clé est réutilisée sur un systèmes de fichiers subissant des changements fréquents est réutilisée. Si le noyau du dialecte UNIX ne purge pas l'entrée d'un fichier du cache de noms quand il est supprimé, lsof peut trouver une référence vers la mauvaise entrée dans le cache. La FAQ lsof (La section FAQ vous donne son emplacement.) dispose de plus d'informations sur cette situation.
Lsof peut rapporter les composants de noms de chemin pour ces dialectes :
BSDI BSD/OS DC/OSx DEC OSF/1, Digital UNIX, Tru64 UNIX FreeBSD HP-UX Linux NetBSD NEXTSTEP OpenBSD Reliant UNIX Caldera OpenUNIX SCO OpenServer SCO UnixWare Solaris
Lsof ne peut rapporter les composants de noms de chemin pour ces dialectes :
AIX
Si vous voulez savoir pourquoi lsof ne peut rapporter les composants de noms de chemin pour certains dialectes, voyez la FAQ lsof (La section FAQ vous donne son emplacement).
FICHIER DE CACHE DES PÉRIPHÉRIQUES¶
L'examen de tous les membres de l'arbre de noeuds /dev (ou /devices) avec les fonctions stat(2) peut prendre du temps. Qui plus est, l'information dont a besoin lsof - numéro de périphérique, numéro d'i-noeud, et chemin - change rarement.
Par conséquent, lsof maintient normalement un fichier texte ASCII servant de cache d'information sur /dev (ou /devices) (exception : les systèmes Linux utilisant le mécanisme /proc lsof où cela n'est pas nécessaire.) L'administrateur du système local qui construit lsof peut contrôler la façon dont le chemin du fichier de cache des périphériques est formé, en utilisant les possibilités suivantes :
Chemin provenant de l'option -D ; Chemin provenant d'une variable d'environnement ; Chemin global au système ; Chemin personnel (défaut) ; Chemin personnel, modifié par une variable d'environnement.
Consultez la sortie des options d'aide -h, -D? ou -? pour obtenir l'état courant du support du cache des périphériques. La sortie d'aide liste le chemin du fichier de cache des périphériques en mode lecture par défaut qui est utilisé par l'invocation actuelle de lsof. La sortie de l'option -D? liste les chemins de fichiers de cache des périphériques dans les modes lecture seule et écriture, le nom de toutes les variables d'environnement pertinentes, et le format du fichier de cache des périphériques personnel.
Lsof peut détecter que le fichier de cache des périphériques actuel a été modifié accidentellement ou avec malveillance par des contrôles d'intégrité, qui incluent le calcul et la vérification d'une somme de Contrôle de Redondance Cyclique (CRC) de 16 bits sur le contenu du fichier. Quand lsof perçoit qu'il y a un problème avec le fichier, il émet un avertissement et essaie de supprimer le fichier de cache actuel et de créer une nouvelle copie, mais seulement dans un chemin où le processus peut légitimement écrire.
Le chemin à partir duquel un processus lsof peut essayer de lire un fichier de cache de périphériques ne peut pas être le même que le chemin dans lequel il peut légitimement écrire. Ainsi, quand lsof prend conscience qu'il doit mettre à jour le fichier de cache des périphériques, il peut choisir, pour l'écriture, un chemin différent de celui utilisé pour la lecture d'une version incorrecte ou périmée.
Si elle est disponible, l'option -Dr empêchera l'écriture d'un nouveau fichier de cache des périphériques. (Cela est toujours disponible quand c'est spécifié sans argument de nom de chemin.)
Quand un nouveau périphérique est ajouté au système, il se peut que le fichier de cache des périphériques doive être recréé. Puisque lsof compare le mtime du fichier de cache des périphériques avec les mtime et ctime du répertoire /dev (ou /devices) , il détecte habituellement qu'un nouveau périphérique a été ajouté ; dans ce cas, lsof émet un message d'avertissement et essaie de reconstruire le fichier de cache des périphériques.
À chaque fois que lsof écrit un fichier de cache des périphériques, il fixe sa propriété à l'UID réel du processus exécutant, et ses modes de permission à 0600, ne permettant ainsi la lecture et l'écriture que par le seul propriétaire du fichier.
PERMISSIONS DE LSOF QUI AFFECTENT L'ACCÈS AU FICHIER DE CACHE DES PÉRIPHÉRIQUES¶
Deux permissions de l'exécutable lsof affectent sa faculté à accéder aux fichiers de cache de périphériques. Les permissions sont établies par l'administrateur local quand lsof est installé.
La première permission et la plus rare est setuid-root. Elle entre en vigueur quand lsof est exécuté ; son UID effectif est alors root, alors que son UID réel (c.-à-d. celui de l'utilisateur connecté) ne l'est pas. La distribution de lsof recommande que les versions pour ces dialectes soient exécutées dans le mode setuid-root :
DC/OSx 1.1 pour les systèmes Pyramid Reliant UNIX 5.4[34] pour les systèmes Pyramid
La seconde permission plus ordinaire est setgid. Elle entre en vigueur quand le numéro d'IDentification de Groupe (GID) effectif du processus lsof compte parmi ceux qui peuvent accéder aux périphériques mémoire du noyau - p.ex. « kmem », « sys » ou « system ».
Un processus lsof qui possède la permission setgid délaisse habituellement la permission après avoir accédé aux périphériques mémoire du noyau. Quand il fait cela, lsof peut permettre des formations de chemin de cache de périphériques plus permissives. La distribution de lsof recommande que les versions pour ces dialectes soient exécutées dans le mode setgid et délaissent leur permission setgid.
AIX 4.3.[23], 5L et 5.1 Apple Darwin 1.[23] et 1.4 pour les systèmes Power Macintosh BSDI BSD/OS 4.1 pour les systèmes à base de processeurs Intel DEC OSF/1, Digital UNIX, Tru64 UNIX 4.0 et 5.[01] FreeBSD 4.[234] et 5.0 pour les systèmes à base de processeurs Intel HP-UX 11.00 NetBSD 1.5 pour les systèmes d'architecture Alpha, Intel et SPARC NEXTSTEP 3.[13] pour les architectures NEXTSTEP OpenBSD 2.[89] et 3.0 pour les systèmes à base de processeurs Intel Caldera OpenUNIX SCO OpenServer Release 5.0.[46] pour les systèmes à base de processeurs Intel SCO UnixWare 7.1.1 pour les systèmes à base de processeurs Intel Solaris 2.6, 7, 8 et 9 BETA
(Note : lsof sous AIX 5L et supérieur a besoin de la permission setuid-root si l'option -X est utilisée.)
Lsof ne supporte pas de cache de périphériques pour les dialectes suivants, et les permissions ainsi données à l'exécutable ne s'appliquent pas au fichier de cache des périphériques.
Linux 2.1.72 et supérieur (lsof utilisant /proc)
CHEMIN DU FICHIER DE CACHE DES PÉRIPHÉRIQUES PROVENANT DE¶
L'OPTION -D¶
L'option -D fournit des moyens limités de spécification du chemin du fichier de cache des périphériques. Sa fonction ? rapportera les chemins de fichiers de cache des périphériques dans les modes lecture seule et écriture qu'utilisera lsof.
Quand les fonctions -D b, r et u sont disponibles, vous pouvez les utiliser pour requérir que le fichier de cache soit construit dans un endroit spécifique (b[chemin]) ; lu mais non reconstruit (r[chemin]) ; ou lu et reconstruit (u[chemin]). Les fonctions b, r et u sont interdites dans certaines circonstances. Elles sont interdites quand le processus lsof s'exécute dans le mode setuid-root. Le chemin spécifié par l'option r est toujours accessible en lecture seule, même quand il est disponible.
Les fonctions b, r et u sont également interdites quand le processus lsof tourne dans le mode setgid et que lsof ne délaisse pas la permission setgid. (Voyez la section PERMISSIONS DE LSOF QUI AFFECTENT L'ACCÈS AU FICHIER DE CACHE DES PÉRIPHÉRIQUES pour une liste des implémentations qui ne délaissent normalement pas leur permission setgid.)
Une fonction supplémentaire de -D , à savoir i (pour ignorer), est toujours disponible.
Quand elle est disponible, la fonction b indique à lsof de lire de l'information sur un périphérique à partir du noyau avec la fonction stat(2) et de construire un fichier de cache des périphériques dans le chemin indiqué/
Quand elle est disponible, la fonction r indique à lsof de lire le fichier de cache des périphériques, mais de ne pas le mettre à jour. Quand un argument chemin accompagne -Dr, celui-ci nomme le chemin du fichier de cache des périphériques. La fonction r est toujours disponible quand elle est spécifiée sans argument de nom de chemin. Si lsof ne tourne pas dans le mode setuid-root et abandonne sa permission setgid, un argument de nom de chemin peut accompagner la fonction r.
Quand elle est disponible, la fonction u indique à lsof d'essayer de lire et d'utiliser le fichier de cache des périphériques. S'il ne peut pas lire le fichier, ou s'il juge que le contenu du fichier est incorrect ou périmé, il lira l'information à partir du noyau, et essaiera d'écrire une version mise à jour du fichier de cache des périphériques, mais uniquement dans un chemin qu'il considère comme légitime pour les UIDs effectif et réel du processus lsof.
CHEMIN DU CACHE DES PÉRIPHÉRIQUES PROVENANT D'UNE VARIABLE¶
D'ENVIRONNEMENT¶
Le second choix de lsof pour le fichier de cache des périphériques est le contenu de la variable d'environnement LSOFDEVCACHE. Il évite ce choix si le processus tourne dans le mode lsof setuid-root, ou si l'UID réel du processus est root.
Une restriction supplémentaire s'applique au fichier de cache des périphériques obtenu à partir de la variable d'environnement LSOFDEVCACHE : lsof n'écrira pas de fichier de cache de périphériques dans le chemin si le processus lsof ne délaisse pas sa permission setgid. (Voyez la section PERMISSIONS DE LSOF QUI AFFECTENT L'ACCÈS AU FICHIER DE CACHE DES PÉRIPHÉRIQUES pour une liste des implémentations qui ne délaissent pas leur permission setgid.)
L'administrateur du système local peut désactiver l'utilisation de la variable d'environnement LSOFDEVCACHE ou changer son nom lors de la construction de lsof. Consultez la sortie de -D? pour connaître le nom de la variable d'environnement.
FICHIER DE CACHE DES PÉRIPHÉRIQUES GLOBAL¶
L'administrateur du système local peut choisir d'avoir un fichier de cache des périphériques global lors de la construction de lsof. Le fichier sera généralement construit via une procédure d'administration spéciale du système lorsque le système est démarré ou quand le contenu de /dev ou /devices) change. S'il est défini, c'est le troisième choix chemin du fichier de cache des périphériques de lsof .
Vous pouvez savoir si un fichier de cache des périphériques global est en vigueur sur votre installation locale en examinant la sortie de l'option d'aide de lsof - c.-à-d. la sortie de l'option -h ou -?.
Lsof n'écrira jamais par défaut dans le fichier de cache des périphériques global. Il doit explicitement être nommé via une fonction -D dans une procédure appartenant à root. Une fois que le fichier a été écrit, la procédure doit remplacer ses modes de permission par 0644 (lecture et écriture par le propriétaire, lecture par le groupe, lecture pour les autres).
CHEMIN DU CACHE PERSONNEL DES PÉRIPHÉRIQUES (DÉFAUT)¶
Le chemin du cache des périphériques par défaut de la distribution de lsof est enregistré dans le répertoire personnel de l'UID réel qui exécute lsof. On ajoute au répertoire personnel un second composant de chemin de la forme .lsof_nomhôte.
C'est le quatrième choix de lsof lors de la recherche du chemin du fichier de cache des périphériques, et est habituellement le défaut. Si un fichier de cache global des périphériques a été défini quand lsof a été construit, ce quatrième choix sera utilisé quand lsof ne trouve pas le fichier de cache global des périphériques. C'est la seule fois où lsof utilise deux chemins lors de la lecture du fichier de cache des périphériques.
La partie nomhôte du second composant est le nom de base de l'hôte exécutant, comme renvoyé par gethostname(2). Le nom de base est défini par les caractères précédant le premier « . » dans la sortie de gethostname(2) , ou toute la sortie de gethostname(2) si elle ne contient aucun « . ».
Le fichier de cache des périphériques global appartient à l'ID utilisateur et n'est accessible en lecture et écriture que par l'ID de l'utilisateur seul, c.-à-d. que ses modes sont 0600. Chaque ID utilisateur distinct sur un hôte donné qui exécute lsof possède un fichier de cache des périphériques distinct. La partie nomhôte du chemin permet de distinguer les fichiers de cache de périphériques d'un répertoire personnel monté via NFS dans lequel les fichiers de cache de périphériques sont écrits à partir d'hôtes différents.
Le fichier de cache des périphériques personnel formé par cette méthode représente un fichier de cache de périphériques que lsof essaiera de lire et d'écrire, qu'il existe ou pas, ou que son contenu soit incorrect ou périmé ou pas.
L'option -Dr sans un argument de nom de chemin empêchera l'écriture d'un nouveau fichier de cache de périphériques.
L'option -D? listera la spécification de format pour la construction du fichier de cache de périphériques personnel. Les conversions utilisées dans la spécification de format sont décrites dans le fichier 00DCACHE de la distribution de lsof.
CHEMIN DE CACHE DE PÉRIPHÉRIQUES PERSONNEL MODIFIɶ
Si cette option est définie par l'administrateur du système local quand lsof est construit, le contenu de la variable d'environnement LSOFPERSDCPATH peut être utilisé pour ajouter un composant du chemin du fichier de cache de périphériques personnel.
Le contenu de la variable d'environnement LSOFPERSDCPATH est inséré dans le chemin à l'endroit spécifié par l'administrateur du système local avec la conversion « %p » de la spécification de format HASPERSDC du fichier d'en-tête machine.h du dialecte. (Il est placé juste après le répertoire personnel dans la distribution par défaut de lsof .)
Ainsi, par exemple, si LSOFPERSDCPATH contient « LSOF », le répertoire personnel est « /Homes/abe », le nom d'hôte est « vic.cc.purdue.edu », et le format HASPERSDC est le défaut (« %h/%p.lsof_%L »), le chemin du fichier de cache de périphériques personnel modifié est :
/Homes/abe/LSOF/.lsof_vic
La variable d'environnement LSOFPERSDCPATH est ignorée quand le processus lsof tourne dans le mode setuid-root ou quand l'UID réel du processus est root.
Lsof n'écrira pas dans un chemin du fichier de cache de périphériques personnel modifié si le processus lsof ne délaisse pas sa permission setgid. (Voyez la section PERMISSIONS DE LSOF QUI AFFECTENT L'ACCÈS AU FICHIER DE CACHE DES PÉRIPHÉRIQUES pour une liste des implémentations qui ne délaissent normalement pas leur permission setgid.)
Si, par exemple, vous voulez créer un sous-répertoire de chemins de fichiers de cache de périphériques personnels en utilisant la variable d'environnement LSOFPERSDCPATH pour le nommer, et si lsof ne délaisse pas sa permission setgid, vous devrez permettre à lsof de créer des fichiers de cache de périphériques dans le chemin personnel standard, et ensuite les déplacer dans votre sous-répertoire avec des commandes shell.
L'administrateur du système local peut : désactiver l'option lors de la construction de lsof , remplacer le nom de la variable d'environnement LSOFPERSDCPATH par un autre nom, modifier le format HASPERSDC pour inclure le composant du chemin personnel à un autre endroit, ou exclure entièrement le composant de chemin personnel. Consultez la sortie de l'option -D? pour connaître le nom de la variable d'environnement et la spécification du format de HASPERSDC.
DIAGNOSTICS¶
Les erreurs sont identifiées par des messages émis dans le fichier d'erreur standard.
Lsof retourne un (1) si des erreurs ont été détectées, ce qui inclut les échecs de localisation de noms de commandes, de noms de fichiers, d'adresses ou de fichiers Internet, de noms de connexion, de fichiers NFS, de PIDs, de PGIDs ou d'UIDs qu'on lui a demandé de lister. Si l'option -V est spécifiée, lsof indiquera les éléments de recherche qu'il n'a pas réussi à lister.
Il renvoie zéro (0) si aucune erreur n'a été détectée et s'il a été capable de lister un tant soit peu d'information sur les arguments de recherche spécifiés.
Quand lsof ne peut accéder à /dev (ou /devices) ou à l'un de ses sous-répertoires, ou obtenir de l'information sur un fichier qui y est présent avec stat(2), il émet un message d'avertissement et continue. Le fait que lsof émette des messages d'avertissement au sujet de fichiers de /dev (ou /devices) inaccessibles est indiqué dans sa sortie d'aide - requise avec les options -h ou -? - avec le message :
Inaccessible /dev warnings are enabled.
(Les avertissements sur l'inaccessibilité de /dev sont autorisés). Le message d'avertissement peut être supprimé avec l'option -w. Il peut également être supprimé par l'administrateur système quand lsof a été compilé en définissant WARNDEVACCESS. Dans ce cas, la sortie des options d'aide inclura le message :
Inaccessible /dev warnings are disabled.
(Les avertissements sur l'inaccessibilité de /dev sont désactivés). Les messages d'avertissement concernant des périphériques inaccessibles disparaissent habituellement après que lsof ait créé un fichier de cache des périphériques en état de fonctionnement.
EXEMPLES¶
Pour un jeu d'exemples plus étendu, documenté plus complètement, lisez le fichier 00QUICKSTART de la distribution de lsof.
Pour lister tous les fichiers ouverts, utilisez :
- lsof
Pour lister tous les fichiers ouverts Internet, x.25 (HP-UX), et de domaine UNIX, utilisez :
- lsof -i -U
Pour lister tous les fichiers réseau IPv4 utilisés par le processus de PID 1234, utilisez :
- lsof -i 4 -a -p 1234
En supposant que le dialecte UNIX supporte IPv6, pour ne lister que les fichiers réseau IPv6, utilisez :
- lsof -i 6
Pour lister tous les fichiers utilisant un protocole quelconque sur les ports 513, 514 ou 515 de l'hôte wonderland.cc.purdue.edu, utilisez :
- lsof -i @wonderland.cc.purdue.edu:513-515
Pour lister tous les fichiers utilisant un protocole quelconque sur n'importe quel port de mace.cc.purdue.edu (cc.purdue.edu est le domaine par défaut), utilisez :
- lsof -i @mace
Pour lister tous les fichiers ouverts sous le nom de connexion « abe », ou par l'ID utilisateur 1234, ou par le processus 456, 123 ou 789, utilisez :
- lsof -p 456,123,789 -u 1234,abe
Pour lister tous les fichiers ouverts sur le périphérique /dev/hd4, utilisez :
- lsof /dev/hd4
Pour trouver le processus qui a ouvert /u/abe/foo, utilisez :
- lsof /u/abe/foo
Pour envoyer un SIGHUP au processus qui a ouvert /u/abe/bar, utilisez :
- kill -HUP `lsof -t /u/abe/bar`
Pour trouver tous les fichiers ouverts, fichiers de socket de domaine UNIX inclus, de nom /dev/log, utilisez :
- lsof /dev/log
Pour trouver les processus ayant des fichiers ouverts sur le système de fichiers NFS nommé /nfs/point/montage dont le serveur est inaccessible, et en supposant que votre table de montage fournit le numéro de périphérique pour /nfs/point/montage , utilisez :
- lsof -b /nfs/point/montage
Pour effectuer la recherche précédente en supprimant les messages d'avertissement, utilisez :
- lsof -bw /nfs/point/montage
Pour ignorer le fichier de cache des périphériques, utilisez :
- lsof -Di
Pour obtenir la sortie des champs de PID et de nom de commande pour chaque processus, le descripteur du fichier, le numéro de périphérique du fichier, et le numéro d'i-noeud du fichier pour chaque fichier de chaque processus, utilisez :
- lsof -FpcfDi
Pour lister les fichiers de descripteurs 1 et 3 de chaque processus exécutant la commande lsof pour l'ID de connexion « abe » toutes les 10 secondes, utilisez :
- lsof -c lsof -a -d 1 -d 3 -u abe -r10
Pour lister le répertoire de travail courant des processus exécutant une commande qui est longue d'exactement 4 caractères, et qui possède un « o » ou un « O » comme troisième caractère, utilisez cette forme d'expression régulière de l'option -c c :
- lsof -c /^..o.$/i -a -d cwd
Pour trouver un fichier socket IPv4 à partir de son adresse numérique en notation pointée associée, utilisez :
- lsof -i@128.210.15.17
Pour trouver un fichier socket IPv6 (quand le dialecte UNIX supporte IPv6) à partir de son adresse numérique en notation double-pointée associée, utilisez :
- lsof -i@[0:1:2:3:4:5:6:7]
Pour trouver un fichier socket IPv6 (quand le dialecte UNIX supporte IPv6) à partir d'une adresse numérique en notation double-pointée associée qui comprend beaucoup de zéros - p.ex. l'adresse loop-back - utilisez :
- lsof -i@[::1]
BOGUES¶
Puisque lsof lit la mémoire du noyau lors de la recherche de fichiers ouverts, des changements rapides dans la mémoire du noyau peuvent produire des résultats imprévisibles.
Quand un fichier détient de multiples verrous d'enregistrements, le caractère d'état de verrouillage (qui suit le descripteur de fichier) est dérivé du test de la première structure de verrou, et pas d'une combinaison quelconque des verrous d'enregistrement individuels qui pourraient être décrits par de multiples structures de verrous.
Lsof ne peut rechercher des fichiers ayant des permissions d'accès limitatives par nom à moins qu'il n'ait été installé avec la permission setuid-root. Sinon, il est limité à la recherche de fichiers pour lesquels l'utilisateur ou le groupe set-GID (le cas échéant) a la permission d'accès.
L'affichage de l'adresse de destination d'un socket brut (raw socket) (p.ex. pour ping) dépend du système d'exploitation UNIX. Certains dialectes stockent l'adresse de destination dans le bloc de contrôle du socket brut, d'autres ne le font pas.
Lsof ne peut pas toujours représenter les numéros de périphériques Solaris de la même manière que ls(1). Par exemple, les numéros de périphériques mineur et majeur que rapportent les fonctions lstat(2) et stat(2) pour le répertoire sur lequel les fichiers de CD-ROM sont montés (typiquement /cdrom) ne sont pas les mêmes que ceux qu'il rapporte pour le périphérique sur lequel les fichiers de CD-ROM sont montés (typiquement /dev/sr0). (Lsof rapporte les numéros des répertoires.)
Le support pour les systèmes de fichiers /proc n'est disponible que pour les dialectes BSD, DEC OSF/1, Digital UNIX et Tru64 UNIX, Linux, et les dialectes dérivés de SYSV R4 - p.ex. FreeBSD, NetBSD, OpenBSD, Solaris, UnixWare.
Certains éléments de fichiers de /proc - numéro de périphérique, numéro d'i-noeud, et taille de fichier - sont indisponibles dans certains dialectes. La recherche de fichiers dans un système de fichier /proc peut requérir que le nom du chemin complet soit spécifié.
Aucun descripteur de fichier texte (txt) n'est affiché pour les processus Linux. Toutes les entrées des fichiers situés ailleurs que dans le répertoire de travail courant, le répertoire racine, et les descripteurs de fichiers numériques sont classifiés comme étant des descripteurs mem.
Lsof ne peut rechercher de tubes nommés DEC OSF/1, Digital UNIX et Tru64 UNIX par leur nom, car leur implémentation noyau de lstat(2) renvoie un numéro de périphérique incorrect pour un tube nommé.
Lsof ne peut rapporter complètement ou correctement les verrous sous HP-UX 9.01, 10.20 et 11.00 à cause d'un accès insuffisant aux données de noyau, ou à des erreurs dans les données du noyau. Voyez la FAQ lsof (La section FAQ vous donne son emplacement.) pour les détails.
Le type de fichier AIX SMT est une fabrication. Il est constitué de structures de fichier dont le type (15) n'est pas défini dans le fichier d'en-tête AIX /usr/include/sys/file.h. Une façon de créer de telles structures de fichier est de lancer des clients X avec la variable d'environnement DISPLAY fixée à « :0.0 ».
L'option +|-f[cfgGn] n'est pas supportée sous les systèmes Linux utilisant le mécanisme /proc, car lsof ne lit alors pas les structures noyau depuis la mémoire du noyau.
ENVIRONNEMENT¶
Lsof peut accéder aux variables d'environnement suivantes.
- LSOFDEVCACHE
- définit le chemin d'un fichier de cache de périphériques. Voyez la section CHEMIN DE CACHE DE PÉRIPHÉRIQUES PROVENANT D'UNE VARIABLE D'ENVIRONNEMENT pour plus d'informations.
- LSOFPERSDCPATH
- définit le composant médian d'un chemin de fichier de cache de périphériques personnel modifié. Voyez la section CHEMIN DE CACHE DE PÉRIPHÉRIQUES PERSONNEL MODIFIÉ pour plus d'informations.
FAQ¶
Les questions fréquemment posées (la foire aux questions) et leurs réponses (une FAQ) sont disponibles dans le fichier 00FAQ de la distribution de lsof.
Ce fichier est également disponible via ftp anonyme sur vic.cc.purdue.edu dans le répertoire pub/tools/unix/lsofFAQ. L'URL est :
FICHIERS¶
- /dev/kmem
- périphérique de mémoire virtuelle du noyau
- /dev/mem
- périphérique de mémoire physique
- /dev/swap
- périphérique de pagination du système
- .lsof_nomhôte
- fichier de cache de périphériques de lsof (Le suffixe, nomhôte, est le premier composant du nom d'hôte retourné par gethostname(2).)
AUTEURS¶
Lsof a été écrit par Victor A. Abell <abe@purdue.edu> de l'Université de Purdue. Beaucoup d'autres personnes ont contribué à lsof. Elles sont reprises dans le fichier 00CREDITS de la distribution de lsof.
DISTRIBUTION¶
La dernière distribution de lsof est disponible via ftp anonyme sur vic.cc.purdue.edu. Vous trouverez la distribution lsof dans le répertoire pub/tools/unix/lsof.
Vous pouvez également utiliser cette URL :
Lsof dispose également de miroirs ailleurs. Quand vous accédez à vic.cc.purdue.edu et que vous vous rendez dans le répertoire pub/tools/unix/lsof , vous obtiendrez une liste de quelques sites miroirs. Le répertoire pub/tools/unix/lsof contient également une liste plus complète dans le fichier mirrors. Utilisez les miroirs prudemment - ils n'ont pas tous la dernière révision de lsof.
Certains exécutables lsof précompilés sont disponibles sur vic.cc.purdue.edu, mais leur utilisation est découragée - il vaut mieux que vous construisiez le vôtre à partir des sources. Si vous pensez devoir utiliser un exécutable précompilé, lisez s'il vous plaît les avertissements qui apparaissent dans les fichiers README des sous-répertoires de pub/tools/unix/lsof/binaries et dans les fichiers 00* de la distribution.
On peut trouver plus d'informations sur la distribution de lsof dans son fichier README.lsof_<version>. Si vous avez l'intention d'obtenir la distribution de lsof et de la construire, lisez s.v.p. README.lsof_<version> ainsi que les autres fichiers 00* de la distribution avant d'envoyer des questions à l'auteur.
VOIR AUSSI¶
Les versions 2 et 3 de lsof ont été testées sous des dialectes UNIX plus anciens. Elles sont disponibles via ftp anonyme sur vic.cc.purdue.edu dans le répertoire pub/tools/unix/lsof/OLD.
access(2), awk(1), crash(1), fattach(3C), ff(1), fstat(8), fuser(1), gethostname(2), isprint(3), kill(1), lstat(2), modload(8), mount(8), netstat(1), ofiles(8L), perl(1), ps(1), readlink(2), stat(2), uname(1).
TRADUCTION¶
Frédéric Delanoy, 2002.
Révision-4.60 | Linux |