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.
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.
También hay otros valores que notará en la columna, como "1u" seguido de U, R, W, etc. valor. Que significan esos?
Tipo: describe el tipo de archivo y su identificación. Los valores son los siguientes.
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 -uPensamientos 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 LSOFInformación LSOFLSOF -?Disfrutar!