Cómo usar el comando lsof en Linux para enumerar archivos 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:
sudoapt-get install lsofArco / Manjaro
En Manjaro y otras distribuciones basadas en Arch, use pacman ejecutando el comando:
sudo pacman -S lsofCentOS / REHL / Fedora
Para CentOS y la familia REHL, puede usar dnf:
sudodnfinstall lsofUtilice 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:
sudo lsofUna 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,4840962/
init 1 root rtd DIR 8,4840962/
init 1 root txt REG 0,19632048281474976743906/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,404026532185 mnt
init 1 root 6r REG 0,404026532201 mnt
init 1 root 7r DIR 8,484096240/home/cap
init 1 root 8u DIR 8,4840962/
init 1 root 9u sock 0,8 0t0 21853 protocol: AF_VSOCKNota: 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:
ColumnaRepresentaciónMandoMuestra el nombre del proceso que utiliza el archivo de destino.PIDEl identificador único para el proceso que usa el archivo.TIDLa columna muestra el identificador del hilo.TASKCMDEl nombre del comando de tarea.USUARIONombre de usuario o UID del usuario que ejecuta el proceso.FDDescriptor de archivo del archivo y modos.ESCRIBENodo asociado con el archivo de destino.DISPOSITIVONúmero de dispositivo separado por comas.TAMAÑO / APAGADOTamaño de archivo en bytes de tamaño de compensación de archivoNODOValor de inodo del archivo local. Puede utilizar el comando stat para mostrar inode información para el archivo.NOMBREPunto 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:
sudo 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:
sudops aux |grep firefoxUna vez que tenga el PID del proceso de destino, use lsof para mostrar los archivos abiertos:
sudo lsof -p2121
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:
sudo 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:
sudo lsof /bin/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.
¿Te gustó este artículo?
Suscribite para recibir más contenido como este.