GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo usar el comando lsof en Linux

El trabajo del comando lsof es “listar archivos abiertos” en el sistema. Un archivo abierto no significa necesariamente un pdf o un archivo de texto, incluye archivos de disco o canalizaciones utilizadas por procesos en segundo plano.

Este comando es una herramienta útil para los depuradores y administradores de sistemas operativos.

Aunque el comando lsof es una utilidad de Linux preinstalada, los usuarios de Ubuntu/Debian pueden instalar usando apt si no lo tienen instalado:

sudo apt install lsof

Otros usuarios de Linux pueden instalar a través de su comando de instalación estándar seguido de lsof .

Pasemos rápidamente al uso de lsof comando:

Lista de todos los archivos abiertos en el sistema

Al ejecutar el comando lsof sin ninguna opción, podemos enumerar todos los archivos abiertos en el sistema. Si lo hace, vaciará el terminal con una gran cantidad de datos. Por lo tanto, es recomendable usar less comando que limita los datos arrojados por cualquier comando

sudo lsof | less

Presionando el 'ENTER' o la tecla de flecha hacia abajo, podemos navegar hasta el final de la lista.

Cada archivo en la salida proporciona información importante sobre su tipo y uso.

  • MANDO – El comando de Linux asociado con el proceso responsable de abrir el archivo.
  • PID – ID de proceso del proceso que contiene el archivo.
  • TID – El ID del subproceso para el proceso respectivo.
  • USUARIO – El usuario de Linux que gestiona el proceso.
  • FD – Descriptor de archivo utilizado por el proceso para asociarse con el archivo.
    • cwd – directorio de trabajo actual
    • rtd – directorio raíz
    • texto – un programa textual como un código
    • mem – archivo mapeado en memoria
  • TIPO – El tipo de archivo
    • REG – Archivo normal
    • DIR – Directorio
    • CDH – Archivo de caracteres
    • ENLACE – Archivo de enlace simbólico
  • DISPOSITIVO – Los números de dispositivo relacionados con el archivo.
  • TALLA/NO – El tamaño del archivo o su desplazamiento en bytes.
  • NODO – El número de inodo.
  • NOMBRE – El nombre del archivo.

Nota: Parte de la información, como el inodo o el número de dispositivo, puede redactarse si el comando no se ejecuta con permisos de root.

Podemos obtener más información sobre el resultado de las páginas del manual a las que se puede acceder desde la terminal ejecutando man lsof.

Enumere todos los archivos abiertos por un usuario específico usando el comando lsof

El lsof El comando admite muchas opciones que se pueden aplicar para filtrar los archivos abiertos. Uno de estos es -u opción para mostrar archivos abiertos para un usuario específico.

sudo lsof -u <USER_NAME> | less

La tercera columna se basa en el usuario responsable de la apertura del archivo. Similar a la salida básica, la terminal está sobrecargada con datos sin sentido y, por lo tanto, usa less se recomienda comando.

Lista de archivos abiertos en un directorio en particular

Los archivos existen dentro de un directorio, por lo que es bastante trivial que podamos extraer archivos abiertos en un directorio en particular.

lsof +D <DIR_NAME>

En la figura anterior, enumeramos el archivo actualmente abierto en la carpeta Documentos. El archivo abierto es un archivo normal de C++.

Lista de archivos abiertos en un sistema de archivos particular con el comando lsof

En lugar de un solo directorio, lsof El comando puede enumerar los archivos abiertos de un sistema de archivos en particular. Esto se logra colocando el nombre del sistema de archivos después de lsof comando.

lsof <FILE_SYSTEM>

En la figura anterior, mostramos los archivos abiertos en el sistema de archivos /proc.

Lista de archivos abiertos por un proceso particular

Usando los ID de proceso, podemos filtrar los archivos abiertos. Esto se puede hacer con la ayuda de -p opción.

lsof -p <PID>

El fragmento anterior de la terminal muestra la lista de archivos abiertos para el proceso con PID como 3404.

Nota: El símbolo de intercalación (^) se usa para negar los parámetros en el lsof dominio. Por ejemplo, lsof -p ^3404 , muestra la lista de archivos abiertos para todos los PID excepto 3404.

Lista de archivos de red abiertos

Linux almacena una variedad de archivos de red para almacenar direcciones IP o configuración de interfaz de red. Este tipo de archivos abiertos se pueden filtrar mediante -i bandera.

lsof -i 

Estos archivos tienen ciertas características como los tipos de protocolos de red. Los archivos abiertos se pueden filtrar aún más usando parámetros específicos como:

  • '4' – Los archivos de red para IPv4
  • '6' – Los archivos de red para IPv6
  • 'TCP' – Los archivos de red para TCP
  • 'UDP' – Los archivos de red para UDP
  • 'TCP:25' – Los archivos de red para TCP, con número de puerto 25
  • 'TCP:1-25' – Los archivos de red para TCP, con número de puerto del 1 al 25

Por ejemplo:

lsof -i 6

Uso del comando lsof para buscar archivos abiertos sobre la base del comando

Con miles de archivos abiertos en el sistema, parece imposible buscar linealmente un comando en particular. Por lo tanto, el lsof el comando tiene el -c opción para filtrar archivos abiertos según el comando.

lsof -c <COMMAND>

Conclusión

El lsof El comando admite muchas opciones que son efectivas para depurar y solucionar problemas del sistema. Los lectores interesados ​​pueden visitar las páginas del manual a través de la terminal ejecutando man lsof , para obtener más conocimiento sobre los privilegios y la salida del comando.

Siéntase libre de comentar a continuación para cualquier consulta o comentario.


Linux
  1. Cómo usar el comando Disown en Linux

  2. Cómo usar el comando md5sum en Linux

  3. Cómo usar el comando Tar en Linux

  4. Cómo usar el comando Su en Linux

  5. Cómo usar el comando tar en Linux

Cómo usar un comando de archivo en Linux

Cómo usar el comando sysctl en Linux

Cómo usar el comando de apagado de Linux

Cómo usar el comando SCP en Linux

¿Cómo usar el comando Gzip en Linux?

Cómo usar el comando shred de Linux