GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo mostrar descriptores de archivos abiertos pero sin usar el comando lsof

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í.


Linux
  1. Cómo extraer el archivo tar.gz en Linux usando la línea de comandos

  2. Cómo calcular la suma de verificación CRC en Linux usando el comando Cksum

  3. ¿Cómo adjuntar un archivo usando el comando de correo en Linux?

  4. ¿Cómo recuperar un archivo abierto pero eliminado en Linux usando ln en lugar de cp?

  5. Cómo abrir un archivo en vim usando pipe

Cómo descomprimir (abrir) un archivo Gz

Cómo crear un enlace simbólico en Linux usando el comando Ln

Cómo abrir un archivo en Linux

Cómo bloquear un archivo de texto en Linux usando el comando flock

Cómo quitar líneas de un archivo usando el comando Sed

Cómo usar el comando lsof en Linux