Cómo usar el comando lsof en Linux para enumerar archivos abiertos

Destacados abiertos

Lo bueno de Linux es que puede ver y administrar todo fácilmente, desde el proceso de arranque hasta la instalación de paquetes de software. Aquí discutimos cómo puede usar el comando lsof en Linux para ver archivos abiertos y los procesos que los usan. Saber cómo ver esto puede ayudarlo a comprender cómo funciona el sistema e incluso a tomar las acciones necesarias para procesos específicos.

Comando Lsof

Para ver archivos abiertos y los usuarios o procesos responsables de ellos, utilizamos el lsof utilidad. Por defecto, lsof está preinstalado en la mayoría de las distribuciones.

Sin embargo, si no lo tiene instalado, puede usar el administrador de paquetes para instalarlo en su sistema.

Debian / Ubuntu

En Debian, ejecute el comando:

Arco / Manjaro

En Manjaro y otras distribuciones basadas en Arch, use pacman ejecutando el comando:

CentOS / REHL / Fedora

Para CentOS y la familia REHL, puede usar dnf:

Utilice el comando lsof para enumerar archivos abiertos para un proceso de Linux

Como la mayoría de los comandos de Linux, la utilidad lsof es increíblemente fácil de usar. Comience escribiendo el comando lsof:

Una vez que ejecute el comando anterior, lsof debería devolver información sobre los archivos abiertos en el sistema.

Nota: si tiene privilegios de sudo, ejecute el comando con sudo para evitar errores de «permiso denegado» en archivos específicos.

Como se muestra en el resultado anterior, el resultado de lsof tiene las siguientes columnas:

Columna Representación
Mando Muestra el nombre del proceso que utiliza el archivo de destino.
PID El identificador único para el proceso que usa el archivo.
TID La columna muestra el identificador del hilo.
TASKCMD El nombre del comando de tarea.
USUARIO Nombre de usuario o UID del usuario que ejecuta el proceso.
FD Descriptor de archivo del archivo y modos.
ESCRIBE Nodo asociado con el archivo de destino.
DISPOSITIVO Número de dispositivo separado por comas.
TAMAÑO / APAGADO Tamaño de archivo en bytes de tamaño de compensación de archivo
NODO Valor de inodo del archivo local. Puede utilizar el comando stat para mostrar inode información para el archivo.
NOMBRE Punto de montaje del archivo.

Ahora que comprende lo que representa el contenido de la impresión del comando lsof, usemos el comando para filtrar información específica.

Cómo filtrar por procesos específicos

Para filtrar solo archivos específicos abiertos por el proceso específico, podemos usar el nombre del proceso o el valor PID.

Por ejemplo, para mostrar los archivos usados ​​por el proceso de Firefox, podemos usar el comando:

Lsof C Firefox

El comando mostrará todos los archivos abiertos por el proceso de Firefox.

Para filtrar por ID de proceso, podemos usar el -p opción y pase el ID del proceso. Puedes usar el top comando para obtener el ID de proceso del proceso de destino.

Por ejemplo, para obtener el PID del proceso de Firefox, podemos usar el comando:

Una vez que tenga el PID del proceso de destino, use lsof para mostrar los archivos abiertos:

Lsof Pid

El comando anterior imprimirá los archivos abiertos por el proceso con el PID especificado.

Cómo filtrar por un usuario específico

Para ver solo los archivos abiertos por un usuario específico, podemos usar el -u bandera. Por ejemplo, para filtrar por el usuario de Debian, use el comando:

Lsof U Debian

Cómo filtrar por un archivo específico

Suponga que solo desea conocer el proceso y el usuario que abrió un archivo específico. Para hacer esto, pase el nombre del archivo a lsof:

Lsof Sleep

Lo anterior solo filtrará el archivo específico y devolverá la información relacionada, incluido el usuario, la identificación del proceso y más.

Terminando

En este sencillo tutorial, discutimos cómo consultar el sistema para obtener información sobre archivos abiertos usando el comando lsof en Linux. Aquí hay algunos comandos adicionales para que enumere el contenido de un directorio en la terminal.