Il y a deux raisons lsof | wc -l
ne compte pas les descripteurs de fichiers. La première est qu'il répertorie les éléments qui ne sont pas des fichiers ouverts, tels que les bibliothèques liées dynamiquement chargées et les répertoires de travail actuels. vous devez les filtrer. Une autre est que lsof
prend un certain temps à s'exécuter, donc peut manquer des fichiers qui sont ouverts ou fermés pendant son exécution ; par conséquent, le nombre de fichiers ouverts répertoriés est approximatif. En regardant /proc/sys/fs/file-nr
vous donne une valeur exacte à un moment donné.
cat /proc/sys/fs/file-nr
n'est utile que lorsque vous avez besoin du chiffre exact, principalement pour vérifier l'épuisement des ressources. Si vous voulez lister les fichiers ouverts, vous devez appeler lsof
, ou utiliser une méthode équivalente telle que le chalutage /proc/*/fd
manuellement.
Les informations de processus sont conservées dynamiquement par le système dans des répertoires sous /proc. Par exemple, le processus avec le PID 1234 aura un répertoire appelé /proc/1234.
Il y a pas mal d'informations dedans mais en ce moment vous êtes intéressé par le /proc/1234/fd sous-répertoire.
REMARQUE :Vous devez disposer des autorisations root pour afficher ou ouvrir les fichiers des processus qui ne vous appartiennent pas, ainsi que pour les processus SetUID.
Exemple :
[email protected]:/proc# ls -l 2443/fd
total 0
lr-x------ 1 johan johan 64 Feb 27 10:26 0 -> pipe:[13637]
l-wx------ 1 johan johan 64 Feb 27 10:26 1 -> /home/johan/.xsession-errors
lrwx------ 1 johan johan 64 Feb 27 10:26 10 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 11 -> anon_inode:[eventfd]
lrwx------ 1 johan johan 64 Feb 27 10:26 12 -> socket:[39495]
lrwx------ 1 johan johan 64 Feb 27 10:26 13 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 14 -> anon_inode:inotify
lrwx------ 1 johan johan 64 Feb 27 10:26 15 -> anon_inode:[eventfd]
l-wx------ 1 johan johan 64 Feb 27 10:26 16 -> pipe:[37885]
lr-x------ 1 johan johan 64 Feb 27 10:26 17 -> pipe:[37886]
l-wx------ 1 johan johan 64 Feb 27 10:26 2 -> /home/johan/.xsession-errors
l-wx------ 1 johan johan 64 Feb 27 10:26 21 -> pipe:[167984]
lr-x------ 1 johan johan 64 Feb 27 10:26 22 -> pipe:[167985]
l-wx------ 1 johan johan 64 Feb 27 10:26 23 -> pipe:[170009]
lr-x------ 1 johan johan 64 Feb 27 10:26 24 -> pipe:[170010]
lrwx------ 1 johan johan 64 Feb 27 10:26 3 -> anon_inode:[eventfd]
lr-x------ 1 johan johan 64 Feb 27 10:26 4 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 5 -> socket:[14721]
l-wx------ 1 johan johan 64 Feb 27 10:26 6 -> pipe:[14726]
lrwx------ 1 johan johan 64 Feb 27 10:26 7 -> socket:[14730]
lrwx------ 1 johan johan 64 Feb 27 10:26 8 -> socket:[13984]
lrwx------ 1 johan johan 64 Feb 27 10:26 9 -> socket:[14767]
[email protected]:/proc# cat 2443/fdinfo/2
pos: 1244446
flags: 0102001
Jetez également un coup d'œil au reste des fichiers sous /proc ... de nombreuses informations utiles sur le système se trouvent ici.