GNU/Linux >> Tutoriales Linux >  >> Linux

7 ejemplos del comando lsof en Linux

Supongo que en algún momento te habrás preguntado si hay alguna forma de mostrar los archivos abiertos por un proceso o un usuario. Lo bueno es que la respuesta a esa pregunta es lsof command.

Probablemente ya sepa que el comando ls es la abreviatura de 'lista'. lsof significa 'Lista de archivos abiertos'. Y eso es exactamente lo que hace, enumerar los archivos abiertos por procesos, usuarios e ID de procesos.

Déjame mostrarte algunos de los usos más comunes del comando lsof.

ejemplos de comandos lsof

Si usa el comando lsof sin opciones ni argumentos, enumerará todos los archivos abiertos por todos los procesos en el sistema.

lsof

La salida debería ser así:

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

systemd       1                   root  cwd       DIR              252,1      4096          2 /

systemd       1                   root  rtd       DIR              252,1      4096          2 /

systemd       1                   root  txt       REG              252,1   1595792      17384 /lib/systemd/systemd

systemd       1                   root  mem       REG              252,1   1700792       2077 /lib/x86_64-linux-gnu/libm-2.27.so

El resultado se explica por sí mismo en su mayoría, pero aún puede preguntarse acerca de las columnas FD y TYPE.

FD significa descriptor de archivo. Algunos de los valores comunes para FD son:

  • cwd:directorio de trabajo actual
  • txt:archivos de texto
  • mem:archivo asignado a la memoria
  • mmap:dispositivo de memoria asignada
  • NÚMERO:el descriptor de archivo real. También tiene información sobre en qué permiso de archivo se abre.

TIPO es una obviedad. Especifica el tipo de archivo. Estos son algunos ejemplos:

  • REG:archivo normal
  • DIR – Directorio
  • CHR:archivo especial de caracteres
  • FIFO:primero en entrar, primero en salir

Confía en mí. No querrías ejecutar el comando lsof sin argumentos.

¿Por qué digo esto? Porque comenzará a inundar tu pantalla con miles de resultados.

Si ejecuto el comando lsof en un servidor Ubuntu y cuento el número de líneas con el comando wc, este es el resultado.

lsof | wc -l
11432

¡Sí! Así es. Hay más de once mil archivos abiertos por varios procesos en el sistema.

No te preocupes. El comando lsof es muy útil en la depuración porque puede ver qué procesos abren qué archivos y qué archivo abre qué proceso.

Si no ha iniciado sesión como root, la salida del comando lsof sería muy limitada. Es una buena idea usar sudo si ha iniciado sesión como usuario no root.

1. Listar todos los procesos que han abierto un archivo

Esto es simple. Solo necesita especificar la ruta al archivo.

lsof <path_to_file>

2. Listar todos los archivos abiertos por el usuario

Esto es útil en un entorno multiusuario. Puede enumerar todos los archivos abiertos por un determinado usuario de la siguiente manera:

lsof -u <user_name>

También puede especificar más de un usuario como este:

lsof -u user1, user2

o así:

lsof -u user1 -u user2

3. Listar todos los archivos abiertos en un directorio

Si se pregunta cuál de los archivos se ha abierto en un directorio determinado, puede usar el comando lsof con la opción +D.

lsof +D <path_to_directory>

La búsqueda es recursiva. Entonces listará todos los archivos abiertos en el directorio mencionado y todos sus subdirectorios.

4. Listar todos los archivos abiertos por un proceso

En este caso, debe conocer la identificación del proceso (pid). Si conoce la identificación del proceso, puede usar la opción -p del comando lsof para encontrar los archivos que abrió.

lsof -p <pid>

También puede especificar varios ID de proceso.

lsof -p pid1, pid2, pid3

5. Listar todos los archivos abiertos por un comando

Esto es especialmente útil en la depuración. Suponga que desea ver qué archivos usa el demonio http, solo necesita especificar el nombre del comando (httpd en nuestro ejemplo).

lsof -c <command>

6. Buscar abierto por un usuario y un comando o un proceso

Puede combinar opciones como usuario y comando y un proceso usando la opción –a. Piense en ello como el operador AND. Esto le brinda un filtro adicional mientras intenta restringir su búsqueda.

lsof -a -u user_name -c command_name

7. Enumere las conexiones de red y los puertos con el comando lsof

También puede usar el comando lsof para encontrar puertos abiertos o para encontrar qué proceso está usando un puerto.

Puede archivar todo tipo de puertos abiertos con la opción -i:

lsof -i

La salida puede verse así:

lsof -i
 COMMAND     PID            USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
 sshd        920            root    3u  IPv4    20507      0t0  TCP *:ssh (LISTEN)
 sshd        920            root    4u  IPv6    20535      0t0  TCP *:ssh (LISTEN)
 docker-pr  1163            root    4u  IPv6    21687      0t0  TCP *:https (LISTEN)
 docker-pr  1175            root    4u  IPv6    21717      0t0  TCP *:http (LISTEN)
 sshd       7528            root    3u  IPv4 39506588      0t0  TCP testing:ssh->212.91.91.19:58904 (ESTABLISHED)
 systemd-r 10993 systemd-resolve   12u  IPv4 20901990      0t0  UDP localhost:domain 
 systemd-r 10993 systemd-resolve   13u  IPv4 20901991      0t0  TCP localhost:domain (LISTEN)

También puede especificar el tipo de conexión de red. Por ejemplo, para listar todos los puertos TCP abiertos, puede usar:

lsof -i tcp

Para encontrar qué proceso está utilizando un puerto específico, puede proporcionar el número de puerto:

lsof -i :<port_number>

Consejo extra:Uso del operador de negación con lsof

Puede usar el operador de negación para excluir a un usuario o proceso mientras usa el comando lsof.

Por ejemplo, si desea enumerar todos los archivos abiertos por un usuario que no sea root, utilícelo de esta manera:

lsof -u ^root

El comando lsof se vuelve aún más útil cuando lo usa con el comando grep.

Espero que hayas aprendido algo nuevo con este artículo. Si tiene preguntas o sugerencias, deje un comentario a continuación.


Linux
  1. Ejemplos de comandos sa en Linux

  2. w Ejemplos de comandos en Linux

  3. Ejemplos de comandos ac en Linux

  4. Ejemplos de comandos df en Linux

  5. Ejemplos de comandos du en Linux

9 ejemplos de comandos diff en Linux

Comando ip de Linux con ejemplos

15 comandos ps de Linux con ejemplos

Comando lsof en Linux (10 ejemplos)

Ejemplos de comandos id en Linux

Comando lsof en Linux con ejemplos