GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo:usar lsof:10 comandos esenciales para solucionar problemas de su servidor Linux

Introducción

En algún momento de su carrera, todos van a solucionar un problema. Y todos tienen su paso favorito de solución de problemas para usar. Para muchos administradores de sistemas, el primer paso que deben hacer es asegurarse de que todo esté actualizado. Para otros, solo es cuestión de revisar los archivos de registro antes de encontrar la solución. Para mí y para otros aquí en Atlantic.Net, es lsof; una utilidad de línea de comandos que se utiliza para mostrar información sobre los archivos que abren varios procesos.

Utilizado principalmente para solucionar problemas de conexión de red, lsof es una aplicación poderosa pero poco conocida. Si está familiarizado con los comandos generales de Linux, lsof es una herramienta fácil de recordar porque "enumera los archivos abiertos".

Requisitos

lsof es un comando específico de Unix. Para usarlo para identificar la información del sistema, deberá usar un sistema de estilo Unix, como CentOS o Ubuntu. lsof viene preinstalado en estos sistemas.

Si está utilizando un sistema Windows, puede obtener resultados similares utilizando el menú Process Explorer, así como los comandos netstat y sysinternals.

Indicadores de uso de lsof

Una cosa que es importante entender es que lsof tiene una gran cantidad de indicadores disponibles que se pueden usar para modificar la salida que recibe. A continuación se muestran todas las banderas disponibles:

[[email protected] ~]# lsof --help
    usage: [-?abhlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
    [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
    [+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]

Revisar cada indicador sería un artículo mucho más largo, por lo que simplificaremos las cosas y cubriremos solo las opciones más utilizadas en el día a día.

Indicadores de opciones clave

Es importante comprender cómo funciona lsof, especialmente de forma predeterminada. Cuando pasa opciones al comando lsof, el comportamiento predeterminado es O Los resultados. Esto significa que ejecutar lsof usando tanto el -i así como el -p marca obtendrá los resultados de ambos.

Estas son las banderas que usamos con más frecuencia en nuestra resolución de problemas:

default : with no options flags, lsof lists all open files for active processes
grouping : it's possible to group options, such as passing the flags though -nPi. Just keep an eye out for which options take additional parameters
-a : AND the result (instead of the default OR)
-l : show the userID instead of the username in the output
-h : get help
-i : selects the listing of files that match
-n : stop host name resolution of network numbers
-t : get process IDs only
-P : stop conversion of port numbers to port names

Cómo empezar

Lista de todos los archivos abiertos.

# lsof

Muestra todos los archivos abiertos.

Mostrar todas las conexiones:

# lsof -i

Mostrar todas las conexiones

El servidor en el que estamos probando es un nuevo servidor Atlantic.Net CentOS6 que no tiene ningún paquete de software adicional instalado. Puede ver en el resultado anterior que el servidor solo escucha el tráfico SSH y SMTP. Si desea ver el número de puerto real en lugar del nombre del servicio, necesitaremos ejecutar el comando usando -Pi bandera:

lsof -Pi

Muestra todas las conexiones que escuchan en los puertos sin resolver el nombre del servicio.

Como puede ver, todos los *:ssh y localhost:smtp la salida se ha convertido a *:22 y localhost:25 . Para la mayoría de los administradores de sistemas, especialmente si no está acostumbrado a revisar y analizar los servicios del sistema, a menudo es más fácil solucionar problemas identificando el puerto directamente en lugar de usar el nombre del servicio.

Mostrar conexiones en puertos IPv6:

lsof -i6

Mostrar conexiones en puertos IPv6

Comparado con lsof -i comando anterior, este comando busca específicamente servicios con un TIPO de IPv6 .

Mostrar conexiones en un puerto específico sin resolver el nombre del servicio:

lsof -Pi :25

Mostrar conexiones en un puerto específico sin resolver el nombre del servicio

Buscar específicamente todos los procesos actuales que escuchan en el puerto 25 muestra que hay dos procesos actuales en el sistema (uno IPv4, uno IPv6) en ejecución. Ninguno de estos procesos escucha conexiones externas.

Mostrar puertos de escucha:

lsof -i -sTCP:LISTEN

Mostrar puertos de escucha

Este comando enumera todos los procesos en ejecución que están en LISTEN estado, lo que significa que están escuchando activamente las conexiones entrantes.

Mostrar quién está usando un archivo:

lsof /path/of/file

Puede ver en el comando anterior que dos procesos se están ejecutando activamente y usan /var/log/ mensajes archivo de alguna manera.

Mostrar recursivamente todos los archivos abiertos en un directorio:

lsof +D /usr/lib

Mostrar recursivamente todos los archivos abiertos en un directorio

En nuestro sistema de prueba, usando +D bandera muestra seis procesos abiertos separados que se originan en /usr/lib directorio.

Mostrar archivos abiertos por usuario:

lsof -u atlantic-noc

Mostrar archivos abiertos por usuario

El usuario atlantic-noc tiene una sesión SSH activa con un ID de proceso (PID) de 7769.

Mostrar todos los archivos abiertos con ID de proceso específico:

lsof -p 7790

Mostrar todos los archivos abiertos con ID de proceso específico

El -p La opción filtró los archivos abiertos para que solo se muestren los que tienen el ID de proceso especificado. En este caso, PID 7790. Puede seleccionar varios PID especificando una coma, como -p 7789,7790

Mostrar toda la actividad de red de un usuario específico:

lsof -a -u atlantic-noc -i

El -a combina (cambia el comportamiento OR predeterminado a AND) el -u-i banderas para proporcionar una lista de uso de archivos de red para el usuario atlantic-noc; en este caso solo una única sesión SSH.

¿Algo más?

Los comandos presentados arriba son solo el comienzo de lsof; una herramienta versátil que se puede usar sola o en combinación con otras herramientas de solución de problemas de Unix, como strace. Pero ese es un artículo para otro momento.

Recuerde consultar nuestro blog para obtener actualizaciones de este artículo, otras publicaciones relacionadas con Linux y otros manuales básicos de comandos de Unix u obtener más información sobre nuestros servicios confiables de alojamiento de VPS.


Linux
  1. Cómo solucionar problemas cuando su sitio está inactivo en un servidor Linux

  2. Cómo solucionar problemas cuando su sitio está inactivo en un servidor Linux

  3. Cómo transferir archivos entre dos computadoras usando los comandos nc y pv

  4. Cómo administrar archivos de registro usando Logrotate en Linux

  5. Cómo ordenar archivos en Linux usando el comando Ordenar

Cómo verificar la carga de su servidor en Linux

Cómo verificar la carga de su servidor en el sistema Linux

Cómo verificar el tiempo de actividad de su servidor Linux

Cómo usar los comandos FTP de Linux

Cómo configurar un demonio Rsync en su servidor Linux

Cómo configurar un cortafuegos en su servidor Linux