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