GNU/Linux >> Tutoriales Linux >  >> Linux

Comando lsof en Linux (10 ejemplos)

En Linux, todo se considera como archivos y se organiza dentro de directorios. lsof (Lista de archivos abiertos) muestra una lista de archivos abiertos. Principalmente ayuda a encontrar la información sobre el proceso que abrió los archivos. Además de los archivos, puede enumerar un directorio, un archivo especial de bloque, una biblioteca compartida, un archivo especial de caracteres, una canalización normal, una canalización con nombre, un conector de Internet, un conector de dominio UNIX y muchos otros.

En este tutorial, aprendemos sobre el comando lsof en Linux usando ejemplos fáciles de entender .

comando lsof

El comando lsof por defecto está disponible en la mayoría de las distribuciones de Linux. Muy comúnmente, el comando lsof se usa cuando no podemos desmontar un disco, luego el comando lsof ayuda a encontrar el archivo abierto y su proceso que lo causa.

Sintaxis:

lsof [options] [names]

La sintaxis anterior listará todos los archivos que han sido abiertos por todos los procesos en el sistema.

1. Listar todos los archivos abiertos

Para obtener rápidamente una lista de archivos abiertos, escriba lsof. Enumera todos los archivos que han sido abiertos por los diversos procesos del sistema.

$ lsof 

Normalmente, la salida será muy larga, usa $ sudo lsof | more , si desea ver el contenido de una pantalla a la vez.

2. Listar archivos abiertos por nombre de usuario

lsof tiene un comando que se puede usar para encontrar una lista de archivos específicos abiertos por un usuario específico.

Para listar archivos abiertos por nombre de usuario use el siguiente comando:

$ lsof -u bobbin

Para varios usuarios, utilice la siguiente sintaxis:

$ lsof -u [username1] -u [username2]

O

$ lsof -u [username1], [username2]

Para listar archivos abiertos excepto para ciertos usuarios:

$ lsof -u ^root

Para enumerar solo la identificación del proceso, use -t opción.

$ lsof -t -u sonar

Esto será útil en caso de que necesite eliminar todos los procesos relacionados con un uso específico.

$ kill -9 lsof -t -u sonar

3. Listar archivos abiertos por proceso

lsof también se puede usar para listar archivos abiertos por un proceso específico usando -c opción seguida del nombre del proceso.

Por ejemplo, para listar todos los archivos abiertos por ssh:

$ lsof -c ssh

4. Listar archivos abiertos por nombre de archivo

Podemos especificar el nombre del archivo como argumento para listar todos los procesos que han abierto un archivo específico.

Para enumerar todos los procesos abiertos por el archivo /var/log/messages, escriba:

$ lsof /var/log/messages

5. Lista de archivos abiertos por ID de proceso

A cada archivo se le asigna un ID de proceso. Un solo proceso puede abrir una gran cantidad de archivos. Podemos usar el comando lsof para enumerar todos los archivos abiertos para una ID de proceso determinada.

Por ejemplo, para enumerar los archivos abiertos con ID de proceso 2, escriba:

$ lsof -p 2

En caso de listar archivos abiertos para múltiples ID de proceso, escriba

$ lsof -p 2,3

Un sistema contiene una gran cantidad de procesos, cada uno de los cuales tiene archivos abiertos para su uso. Un proceso puede tener muchos procesos secundarios, y este proceso también se conoce como proceso principal.

El comando lsof se usa con -R opción para obtener una lista de archivos abiertos por PPID (identificación de proceso principal).

$ lsof -R

Desde la salida, la quinta columna mostrará el PPID de los archivos abiertos.

Para encontrar el PPID para un PID específico, escriba:

$ lsof -p [PID] -R

6. Listar archivos abiertos en un Directorio

Para enumerar los archivos abiertos en un directorio específico, podemos usar el comando lsof.

Utilice +d opción para mostrar una lista de archivos abiertos en el directorio provisto, sin embargo, no va a los subdirectorios.

El siguiente ejemplo busca archivos abiertos en el directorio /var/log:

$ lsof +d /var/log

La opción +D ordena a lsof que busque en toda la profundidad del directorio todas las instancias abiertas, así como todos los archivos y directorios que contiene.

En este caso, lsof busca archivos abiertos en /var/log y sus subdirectorios:

$ lsof +D /var/log

7. Lista de archivos abiertos con protocolo de red

Un sistema se puede vincular a varias redes para varios propósitos. Todo en Linux es un archivo, podemos examinar los archivos que se abren mediante alguna conexión de red en el sistema.

Para listar los archivos abiertos en el protocolo TCP, podemos ejecutar el siguiente comando.

$ lsof -i TCP 

Para listar los archivos abiertos en el protocolo UDP, podemos ejecutar el siguiente comando.

$ sudo lsof -i UDP 

8. Lista de archivos abiertos por número de puerto

lsof tiene un comando que enumera específicamente los archivos abiertos en un número de puerto determinado para enumerar todos los procesos que se ejecutan en ese puerto.

Por ejemplo, para listar archivos abiertos en el número de puerto 443

$ lsof -i :443

Puede enumerar los archivos abiertos para múltiples números de puertos de la siguiente manera:

$ lsof -i :80,443

También puede enumerar los archivos abiertos de TCP o UDP por intervalos de puertos.

$ lsof -i TCP:1-49151

9. Listar archivos abiertos por IPv4/IPv6

Hay una opción en lsof para enumerar los archivos de red IPv4 o IPv6 abiertos.

Para mostrar los archivos abiertos de IPv4, escriba

$ lsof -i4

La siguiente sintaxis se puede utilizar para mostrar archivos abiertos de IPv6:

$ lsof -i6

10. Ejecutar lsof continuamente

El modo de repetición permite a lsof repetir continuamente con actualizaciones con retrasos específicos. El modo de repetición se puede habilitar usando la opción '-r' o '+r', donde '+r' terminará cuando no se encuentren archivos abiertos y '-r' continuará en la lista hasta que se inicie una interrupción manual. Cada salida del ciclo de retardo se separará usando '========'.

Sintaxis:

$ lsof [options] -r/+r[time-interval]

Por ejemplo:

$ lsof -u sonar -r5

Encabezados de comandos lsof

El lsof tiene varias columnas.

COMMAND     PID   TID TASKCMD               USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME

El nombre del comando UNIX asociado con el proceso se almacena en el COMMAND columna.

El PID muestra el ID de proceso del comando.

El USER muestra el nombre del usuario asociado con el siguiente proceso.

El TID muestra el ID de la tarea.

El FD es un descriptor de archivo que incluye abreviaturas como cwd (directorio de trabajo actual), txt (archivos de texto), mem (archivo asignado a la memoria), rtd (directorio raíz) y muchos otros.

TYPE es una abreviatura de un tipo de archivo específico, como REG (archivo normal), DIR (directorio), CHR (archivo especial de caracteres), etc.

El DEVICE contiene los números de dispositivo.

El SIZE/OFF contiene el tamaño del archivo o el desplazamiento del archivo en bytes.

El NODE el valor de la columna representa el número de nodo de un archivo local.

El NAME muestra el nombre del punto de montaje y el sistema de archivos del archivo, así como la dirección de Internet.

Conclusión

En este tutorial, aprendimos sobre el comando lsof y sus usos con ejemplos. lsof proporciona una serie de opciones para personalizar su salida para satisfacer sus necesidades. Le permite combinar fácil y rápidamente múltiples argumentos para obtener el resultado requerido.


Linux
  1. 7 ejemplos del comando lsof en Linux

  2. 7 ejemplos de comandos Linux df

  3. 8 ejemplos de comandos TR de Linux

  4. Ejemplos de comandos rm en Linux

  5. Ejemplos de comandos ps en Linux

Comando wc Linux con ejemplos

Comando Rm en Linux

Tutorial del comando lsof de Linux para principiantes (15 ejemplos)

Ejemplos de comandos id en Linux

Comando lsof en Linux con ejemplos

Comando Linux comm con ejemplos