Open Featured

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

Lo bueno de Linux es que puede ver y administrar fácilmente todo, 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 tomar las acciones necesarias para procesos específicos.

Comando Lsof

Para ver los 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:

sudo apt-get install lsof

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:

Use el comando lsof para listar 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.

COMMAND PID TID TASKCMD USER   FD      TYPE             DEVICE SIZE/OFF            NODE NAME
init      1             root  cwd       DIR               8,48     4096               2 /
init      1             root  rtd       DIR               8,48     4096               2 /
init      1             root  txt       REG               0,19   632048 281474976743906 /init
init      1             root    0u      CHR                1,3      0t0           15362 /dev/null
init      1             root    1u      CHR                1,3      0t0           15362 /dev/null
init      1             root    2u      CHR                1,3      0t0           15362 /dev/null
init      1             root    3w      CHR               1,11      0t0           15367 /dev/kmsg
init      1             root    4u     sock                0,8      0t0           22689 protocol: AF_VSOCK
init      1             root    5r      REG                0,4        0      4026532185 mnt
init      1             root    6r      REG                0,4        0      4026532201 mnt
init      1             root    7r      DIR               8,48     4096             240 /home/cap
init      1             root    8u      DIR               8,48     4096               2 /
init      1             root    9u     sock                0,8      0t0           21853 protocol: AF_VSOCK

Nota: si tiene privilegios 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:

ColumnaRepresentación
Dominio Muestra el nombre del proceso que utiliza el archivo de destino.
PID El identificador único para el proceso que usa el archivo.
T.I.D. La columna muestra el identificador del subproceso.
TAREACMD El nombre del comando de tarea.
USUARIO Nombre de usuario o UID del usuario que ejecuta el proceso.
DF 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/DESACTIVADO Tamaño de archivo en bytes de tamaño de compensación de archivo
NODO Valor de inodo del archivo local. Puede usar 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 un proceso específico

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 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 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:

sudo ps aux | grep firefox

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 para 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:

LsofU Debian

Cómo filtrar por un archivo específico

Supongamos 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:

Dormir

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

Terminando

En este tutorial simple, 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 usted enumere el contenido de un directorio en la terminal.

Experto Geek - Tu Guía en Tendencias Tecnológicas