GNU/Linux >> Tutoriales Linux >  >> Linux

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

El lsof El comando en Linux muestra en su salida información sobre los archivos que abren los procesos. En este artículo, discutiremos la herramienta lsof de Linux usando 15 ejemplos fáciles de entender. Tenga en cuenta que todos los ejemplos mencionados en este tutorial se han probado en Ubuntu 20.04 LTS, pero también funcionarán en otras distribuciones de Linux como Debian, Fedora y CentOS.

Acerca del comando lsof

Si desea ver rápidamente el nombre de los archivos que ha abierto un proceso en particular (o todos los procesos), el comando lsof le permite hacerlo. Un archivo abierto puede ser un archivo normal o un directorio, una biblioteca, un archivo especial o un dispositivo de bloque, un archivo especial de caracteres, una referencia de texto en ejecución o incluso un flujo o un archivo de red. También puede enumerar los procesos por número de puerto. Si no ha iniciado sesión como usuario raíz, es posible que deba anteponer 'sudo' a los comandos.

Instalar el comando lsof de Linux

La mayoría de las distribuciones de Linux vienen con lsof preinstalado. Si aún no está instalado en su sistema, use los siguientes comandos:

En Ubuntu y Debian:

$ sudo apt install lsof

Ond CentOS y Fedora:

$ dnf install lsof

1. Cómo listar todos los archivos abiertos

Para enumerar todos los archivos abiertos, ejecute el comando lsof sin ningún argumento:

lsof

Por ejemplo, aquí está la captura de pantalla de una parte de la salida que produjo el comando anterior en mi sistema:

La primera columna representa el proceso mientras que la última columna contiene el nombre del archivo. Para obtener detalles sobre todas las columnas, diríjase a la página de manual del comando.

2. Cómo listar archivos abiertos por procesos pertenecientes a un usuario específico

La herramienta también le permite listar archivos abiertos por procesos pertenecientes a un usuario específico. Se puede acceder a esta característica usando -u opción de línea de comandos.

lsof -u [nombre de usuario]

Por ejemplo:

lsof -u administrador

3. Cómo listar archivos según su dirección de Internet

La herramienta le permite enumerar archivos según su dirección de Internet. Esto se puede hacer usando -i opción de línea de comandos. Por ejemplo, si lo desea, puede hacer que los archivos IPv4 e IPv6 se muestren por separado. Para IPv4, ejecute el siguiente comando:

lsof -i 4

Por ejemplo:

De manera similar, para IPv6, ejecute el siguiente comando:

lsof -i 6

Por ejemplo:

lsof -i 6

4. Cómo listar todos los archivos por nombre de aplicación

La opción de línea de comandos -c le permite abrir todos los archivos por nombre de programa.

$ lsof -c apache

No tiene que usar el nombre completo del programa ya que se muestran todos los programas que comienzan con la palabra 'apache'. Entonces, en nuestro caso, enumerará todos los procesos de la aplicación 'apache2'.

La opción -c es básicamente un atajo para los dos comandos:

$ lsof | grep apache

5. Cómo enumerar archivos específicos de un proceso

La herramienta también le permite mostrar los archivos abiertos según los números de identificación del proceso (PID). Esto se puede hacer usando -p opción de línea de comandos.

lsof -p [PID]

Por ejemplo:

lsof -p 856

Continuando, también puede excluir PID específicos en la salida agregando ^ símbolo ante ellos. Para excluir un PID específico, puede ejecutar el siguiente comando:

lsof -p [^PID]

Por ejemplo:

lsof -p ^1

Como puede ver en la captura de pantalla anterior, el proceso con id 1 está excluido de la lista.

6. Cómo enumerar los ID de los procesos que han abierto un archivo en particular

La herramienta le permite enumerar los ID de los procesos que han abierto un archivo en particular. Esto se puede hacer usando -t opción de línea de comando.

$ lsof -t [file-name]

Por ejemplo:

$ lsof -t /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0.9.0

7. Cómo listar todos los archivos abiertos en un directorio

Si lo desea, también puede hacer que lsof busque todas las instancias abiertas de un directorio (incluidos todos los archivos y directorios que contiene). Se puede acceder a esta función usando +D opción de línea de comandos.

$ lsof +D [ruta-directorio]

Por ejemplo:

$ lsof +D /usr/lib/locale

8. Cómo enumerar todos los archivos de red de Internet y x.25 (HP-UX)

Esto es posible usando el -i opción de línea de comandos que describimos anteriormente. Solo que tienes que usarlo sin ningún argumento.

$ lsof-i

9. Averigüe qué programa está usando un puerto

El interruptor -i del comando le permite encontrar un proceso o aplicación que escucha un número de puerto específico. En el siguiente ejemplo, verifiqué qué programa está usando el puerto 80.

$ lsof -i :80

En lugar del número de puerto, puede usar el nombre del servicio como se indica en /etc/services expediente. Ejemplo para verificar qué aplicación escucha en el puerto HTTPS (443):

$ lsof -i :https

Resultado:

Los ejemplos anteriores comprobarán tanto TCP como UDP. Si desea verificar solo TCP o UDP, anteponga la palabra 'tcp' o 'udp'. Por ejemplo, qué aplicación está usando el puerto 25 TCP:

$ lsof -i tcp:25

o qué aplicación usa el puerto UDP 53:

$ lsof -i udp:53

10. Cómo listar archivos abiertos según el rango de puertos

La utilidad también le permite enumerar archivos abiertos en función de un puerto específico o rango de puertos. Por ejemplo, para mostrar archivos abiertos para el puerto 1-1024, use el siguiente comando:

$ lsof -i :1-1024

11. Cómo listar archivos abiertos según el tipo de conexión (TCP o UDP)

La herramienta le permite enumerar archivos según el tipo de conexión. Por ejemplo, para archivos específicos de UDP, use el siguiente comando:

$ lsof -i udp

De manera similar, puede hacer que lsof muestre archivos específicos de TCP.

12. Cómo hacer que lsof enumere el PID principal de los procesos

También hay una opción que obliga a lsof a enumerar el número de identificación del proceso principal (PPID) en la salida. La opción en cuestión es -R .

$ lsof -R

Para obtener información de PPID para un PID específico, puede ejecutar el siguiente comando:

$ lsof -p [PID] -R

Por ejemplo:

$ lsof -p 3 -R

13. Cómo encontrar actividad de red por usuario

Al usar una combinación de las opciones de línea de comandos -i y -u, podemos buscar todas las conexiones de red de un usuario de Linux. Esto puede ser útil si inspecciona un sistema que podría haber sido pirateado. En este ejemplo, verificamos toda la actividad de red del usuario www-data:

$ lsof -a -i -u www-data

14. Listar todos los archivos mapeados en memoria

Este comando enumera todos los archivos asignados a la memoria en Linux.

$ lsof -d mem

15. Listar todos los archivos NFS

La opción -N le muestra una lista de todos los archivos NFS (Network File System).

$lsof -N

Conclusión

Aunque lsof ofrece una plétora de opciones, las que hemos discutido aquí deberían ser suficientes para comenzar. Una vez que haya terminado de practicar con estos, diríjase a la página de manual de la herramienta para obtener más información al respecto. Ah, y en caso de que tengas dudas o consultas, deja un comentario a continuación.


Linux
  1. Tutorial de comando cd de Linux para principiantes (8 ejemplos)

  2. Tutorial de comandos de comunicación de Linux para principiantes (5 ejemplos)

  3. Tutorial de comando Linux df para principiantes (8 ejemplos)

  4. Tutorial de comando de fecha de Linux para principiantes (8 ejemplos)

  5. Tutorial de comando de nombre de host de Linux para principiantes (5 ejemplos)

Linux who Command Tutorial para principiantes (8 ejemplos)

Tutorial de comandos Linux nl para principiantes (7 ejemplos)

Tutorial de comandos de Linux nm para principiantes (10 ejemplos)

Tutorial de comandos OD de Linux para principiantes (6 ejemplos)

Tutorial de comando Linux w para principiantes (5 ejemplos)

Tutorial de comandos ss de Linux para principiantes (8 ejemplos)