Comando Linux LSOF

Comando Linux LSOF
La herramienta de comando "LSOF" en Linux es una de las muchas herramientas incorporadas que es súper útil para revisar la "Lista de archivos abiertos". Sí, el término "LSOF" es la abreviatura de la tarea.

Hay una serie de procesos que se ejecutan en el sistema todo el tiempo, accediendo a diferentes archivos del sistema. Estos archivos pueden ser archivos de disco, scripts, sockets de red, dispositivos, tuberías con nombre y otros. Usando "LSOF", es posible realizar muchas cosas, como la depuración. También es bastante útil para los administradores del sistema descubrir a qué archivos se accede por qué procesos. Uno de los escenarios más útiles que he encontrado es cuando estás a punto de desmontar un sistema de archivos, pero todavía se accede.

Sin más preámbulos, comencemos con "LSOF"! Supongo que su sistema UNIX/Linux actual ya tiene "LSOF" instalado.

Ubicación

Que LSOF

Esto informa la ruta completa del comando, en este caso, "LSOF".

Versión "LSOF"
LSOF -V

Esto informará información de versión en profundidad de "LSOF", incluida la fecha de compilación de la versión binaria, compiladora, banderas de compiladores y otros.

Uso básico de "LSOF"

Ejecutar "LSOF" por sí mismo.

LSOF

Esto informa una gran lista de todos los archivos a los que el sistema accede el sistema en el momento de ejecutar el comando.

Mientras que todos los campos se explican por sí mismos, se confundan principalmente sobre las columnas "FD" y "tipo" y sus valores. Vamos a verlos.

FD: abreviatura del "descriptor de archivos". Se le ocurre los siguientes valores.

  • CWD: directorio de trabajo actual
  • RTD: directorio raíz
  • txt: texto del programa (datos, código y otros)
  • MEM: archivo mapeado de memoria
  • Err: error de información de FD
  • MMAP: dispositivo mapeado de memoria
  • LTX: texto de la biblioteca compartida (datos y código)
  • M86: archivo mapeado de fusión de DOS

También hay otros valores que notará en la columna, como "1u" seguido de U, R, W, etc. valor. Que significan esos?

  • R: Acceso de lectura
  • W: Acceso de escritura
  • U: Acceso de lectura y escritura
  • - : Modo desconocido y contiene un personaje de bloqueo
  • ": El modo es desconocido y no hay carácter de bloqueo

Tipo: describe el tipo de archivo y su identificación. Los valores son los siguientes.

  • Dir: Directorio
  • CHR: archivo especial de personajes
  • Reg: archivo regular
  • FIFO: Primero en, primero fuera

Archivos abiertos específicos del usuario

Linux es una brillante plataforma de usuarios múltiples. Múltiples usuarios pueden acceder al sistema al mismo tiempo y realizar operaciones para las que tienen permiso.

Para consultar los archivos a los que accede un usuario determinado, ejecute el siguiente comando.

LSOF -u

Sin embargo, para ver a los usuarios con un rango más alto, "LSOF" necesitará privilegios de "superusador".

sudo lsof -u

¿Qué tal ver todos los comandos y archivos que está accediendo a un determinado usuario?? Ejecute el siguiente.

LSOF -I -U

Nuevamente, para los usuarios con mayor rango, "LSOF" necesitará el privilegio "Superuser".

sudo lsof -i -u

Procesos de ejecución específicos de puerto

Para descubrir todos los procesos que actualmente están utilizando un puerto determinado, llame a "LSOF" con el indicador "-I" seguido del protocolo y la información del puerto.

LSOF -I<46><@hostname|host_address>
:

Por ejemplo, para consultar todos los programas que actualmente acceden al puerto 80 a través del protocolo TCP/IP, ejecute el siguiente comando.

LSOF -I TCP: 80

Este método también se puede utilizar para mostrar todos los procesos que utilizan puertos dentro de un rango determinado, por ejemplo, de 1 a 1000. La estructura de comando es similar a antes con un poco de magia en la parte del número de puerto.

LSOF -I TCP: 1-1000

Procesos específicos de protocolo

Aquí hay 2 ejemplos que muestran los procesos que actualmente están utilizando los protocolos IPv4 e IPv6.

LSOF -I 4
LSOF -I 6

Listado de conexiones de red

El siguiente comando informará todas las conexiones de red desde el sistema actual.

LSOF -I

Excluyendo con ^

Sí, podemos excluir el usuario, el puerto, el FD y otros específicos que usan el personaje "^". Todo lo que tiene que hacer es usarlo con precaución para que no arruine toda la salida.

En este ejemplo, excluyamos todos los procesos del usuario "root".

LSOF -U^raíz

Hay otras formas de usar este mecanismo de exclusión con "LSOF", por ejemplo, con las banderas como "-C", "-d", etc. No todas las banderas admiten este mecanismo. Es por eso que recomiendo probar una demostración con este método con cualquier indicador antes de implementarlo en algunos scripts.

Búsqueda de pid

PID es una propiedad importante de cualquier proceso en ejecución en el sistema. Permite que el punto más fina a un determinado proceso. El nombre del proceso no es muy útil en muchas situaciones, ya que el mismo binario puede crear copias de sí misma y realizar diferentes tareas en paralelo.

Si no sabe cómo obtener el PID de un proceso, simplemente use "PS" para enumerar todos los procesos de ejecución y filtrar la salida utilizando "GREP" con el nombre y/o comandos del proceso.

PS -A

Ahora, realice el filtrado usando "Grep".

ps -a | grep

Ahora, consulte a qué archivos está accediendo a PID.

LSOF -P

Listado de archivos abiertos para un dispositivo específico

La funcionalidad de "LSOF" no se limita solo a estas funciones. También puede filtrar el resultado de "LSOF" por dispositivo. Para este propósito, el comando se verá algo así.

LSOF

Este comando es muy útil para descubrir todos los procesos de ejecución con su información de propietario accediendo a un sistema de archivos en particular. Si tiene problemas para desmontar un sistema de archivos, esta es la mejor manera de hacerlo.

LSOF

Lista de archivos abiertos en un directorio

Similar al ejemplo anterior, simplemente pase la ruta del directorio a "LSOF" para averiguar si algún proceso está accediendo a él.

Nota: "LSOF" verificará el directorio de manera recursiva, por lo que puede llevar tiempo.

= LSOF +D

Bonificación: terminar toda actividad del usuario

Sea extremadamente cauteloso con esta parte, ya que simplemente puede estropear todo. El siguiente comando matará todos los procesos de ejecución de un usuario.

sudo kill -9 'lSof -t -u

Pensamientos finales

Las características de "LSOF" no solo se detienen aquí. Los mencionados aquí son los que más necesitaremos en el día a día. Hay muchas otras funcionalidades de "LSOF" que pueden ser útiles (en casos específicos, por supuesto).

Para ver todas las características disponibles y su uso, consulte las páginas de Hombre e Información de "LSOF".

Hombre LSOF
Información LSOF
LSOF -?

Disfrutar!