Hay dos razones lsof | wc -l
no cuenta los descriptores de archivos. Una es que enumera cosas que no son archivos abiertos, como bibliotecas vinculadas dinámicamente cargadas y directorios de trabajo actuales; necesitas filtrarlos. Otra es que lsof
tarda algún tiempo en ejecutarse, por lo que puede perder archivos que se abren o cierran mientras se ejecuta; por lo tanto, el número de archivos abiertos enumerados es aproximado. Mirando /proc/sys/fs/file-nr
le da un valor exacto en un momento determinado.
cat /proc/sys/fs/file-nr
solo es útil cuando necesita la cifra exacta, principalmente para verificar el agotamiento de los recursos. Si desea enumerar los archivos abiertos, debe llamar a lsof
, o utilice algún método equivalente, como rastrear /proc/*/fd
manualmente.
El sistema mantiene dinámicamente la información del proceso en directorios bajo /proc. Por ejemplo, el proceso con PID 1234 tendrá un directorio llamado /proc/1234.
Hay bastante información allí, pero en este momento está interesado en /proc/1234/fd subdirectorio.
NOTA:Debe tener permisos de raíz para ver o abrir archivos para procesos que no son de su propiedad, así como para procesos SetUID.
Ejemplo:
[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
También eche un vistazo al resto de los archivos en /proc... mucha información útil del sistema reside aquí.