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, canalizaciones con nombre y otros. Con "lsof", es posible realizar muchas cosas, como depurar. También es bastante útil para los administradores del sistema averiguar a qué archivos se accede mediante 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 aún se accede a él.
Sin más preámbulos, comencemos con "lsof"! Supongo que su sistema UNIX / Linux actual ya tiene "lsof" instalado.
Localización
cual lsof
Esto informa la ruta completa del comando, en este caso, "lsof".
Versión "lsof"lsof -v
Esto proporcionará información detallada de la versión de "lsof", incluida la fecha de compilación del binario, la versión del compilador, los indicadores del compilador y otros.
Uso básico de "lsof"
Ejecuta "lsof" solo.
lsof
Esto informa una lista GRANDE de todos los archivos a los que está accediendo el sistema en el momento de ejecutar el comando.
Si bien todos los campos se explican por sí mismos, la mayoría de las veces se confunden con las columnas "FD" y "TYPE" y sus valores. Vamos a verlos.
FD: abreviatura de "descriptor de archivo". Viene con los siguientes valores.
- cwd: directorio de trabajo actual
- rtd: directorio raíz
- txt: texto del programa (datos, código y otros)
- mem: archivo mapeado en memoria
- err: error de información de FD
- mmap: dispositivo mapeado en memoria
- ltx: texto de biblioteca compartida (datos y código)
- m86: Archivo mapeado de combinació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 carácter 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 carácter
- REG: archivo regular
- FIFO: primero en entrar, primero en salir
Archivos abiertos específicos del usuario
Linux es una brillante plataforma multiusuario. Varios usuarios pueden acceder al sistema al mismo tiempo y realizar operaciones para las que tienen permiso.
Para verificar los archivos a los que está accediendo un determinado usuario, ejecute el siguiente comando.
lsof -u
Sin embargo, para verificar a los usuarios con rango más alto, "lsof" necesitará privilegios de "superusuario".
sudo lsof -u
¿Qué tal si revisa todos los comandos y archivos a los que accede un determinado usuario?? Ejecuta el siguiente.
lsof -i -u
Nuevamente, para los usuarios con un rango más alto, "lsof" necesitará el privilegio de "superusuario".
sudo lsof -i -u
Procesos en ejecución específicos del puerto
Para conocer todos los procesos que actualmente están usando un determinado puerto, llame a "lsof" con la bandera "-i" seguida del protocolo y la información del puerto.
lsof -i<46>:
Por ejemplo, para ver 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, 1 a 1000. La estructura de comando es similar a la anterior con un poco de magia en la parte del número de puerto.
lsof -i TCP: 1-1000
Procesos específicos de protocolo
A continuación, se muestran 2 ejemplos que muestran los procesos que actualmente utilizan los protocolos IPv4 e IPv6.
lsof -i 4lsof -i 6
Listado de conexiones de red
El siguiente comando informará todas las conexiones de red del sistema actual.
lsof -i
Excluyendo con ^
Sí, podemos excluir usuarios específicos, puertos, FD y otros usando el carácter "^". Todo lo que tiene que hacer es usarlo con precaución para no estropear toda la salida.
En este ejemplo, excluiremos todos los procesos del usuario "root".
lsof -u ^ raíz
Hay otras formas de utilizar este mecanismo de exclusión con "lsof", por ejemplo, con 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 bandera 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 una localización más precisa de un determinado proceso. El nombre del proceso no es muy útil en muchas situaciones, ya que el mismo binario puede crear copias de sí mismo y realizar diferentes tareas en paralelo.
Si no sabe cómo obtener el PID de un proceso, simplemente use "ps" para listar todos los procesos en ejecución y filtre la salida usando "grep" con el nombre del proceso y / o comandos.
ps -A
Ahora, realice el filtrado usando "grep".
ps -A | grep
Ahora, compruebe a qué archivos accede el PID.
lsof -pListado de archivos abiertos para un dispositivo específico
La funcionalidad de "lsof" no solo se limita a estas funciones. También puede filtrar el resultado de "lsof" por dispositivo. Para este propósito, el comando se verá así.
lsof
Este comando es muy útil para descubrir todos los procesos en ejecución con la información de su 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.
lsofLista de archivos abiertos en un directorio
Al igual que en el ejemplo anterior, simplemente pase la ruta del directorio a "lsof" para averiguar si algún proceso está accediendo a él.
Nota: "lsof" comprobará el directorio de forma recursiva, por lo que puede llevar tiempo.
= lsof + D
Bono: terminar toda la actividad del usuario
Sea extremadamente cauteloso con esta parte, ya que simplemente puede estropear todo lo que hace un usuario. El siguiente comando matará todos los procesos en ejecución de un usuario.
sudo kill -9 'lsof -t -uLas características de "lsof" no se detienen aquí. Los aquí mencionados 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 conocer todas las funciones disponibles y su uso, consulte las páginas de información y manual de "lsof".
hombre lsofinfo lsof
lsof -?
Disfrutar!