FeaturedNOTICIAS

Cómo usar lsof en Linux (con un ejemplo práctico) – CloudSavvy IT


Cómo usar lsof en Linux con un ejemplo práctico

¿Alguna vez se ha preguntado cómo saber qué archivos están abiertos y en uso en su sistema? El comando lsof de Linux enumera los archivos abiertos y proporciona mucha información adicional. Descubra cómo utilizar lsof con estos ejemplos prácticos.

Qué es esto lsof?

Disponible de forma nativa en cualquier sistema operativo Linux, el lsof El comando proporciona una lista de archivos abiertos. Sin embargo, el resultado puede ser un poco críptico y largo, especialmente cuando se utilizan muchas aplicaciones en un sistema determinado. Echemos un vistazo a los conceptos básicos. lsof producción. Correremos lsof como raíz.

Para iniciar sesión como root, puede abrir una ventana de terminal y escribir un comando como sudo su o su para recibir una solicitud de autenticación de root. Alternativamente, puede ejecutar sudo lsof. Tenga en cuenta que si bien puede correr lsof incluso como un usuario no root normal, puede encontrar que la salida está incompleta.

Ejemplo: Base lsof Producción

sudo su
lsof | head -n10

Inicio de la salida lsof y los nombres de columna lsof en una terminal Bash

Aquí comenzamos el lsof herramienta usando el lsof comando y capturó las primeras diez líneas de la salida usando una tubería (|) para enviar la información producida por lsof a uno secundario head -n10 comando que captura solo las primeras diez líneas (encabezado).

El lsof El comando enumera varias columnas. Primero veamos el MANDO columna que enumera el archivo binario que contiene el archivo abierto / bloque de archivo abierto. A continuación, vemos la columna ID de proceso. PID que es extremadamente útil cuando se trata de depurar varios problemas de aplicaciones, incluidos los bloqueos de archivos retenidos incorrectamente. En la siguiente sección veremos un ejemplo de cómo podemos usar lsof en combinación con kill para terminar (destructivamente) aplicaciones que contienen bloques de archivos defectuosos.

TE INTERESA>>  ‘Exponiendo infieles' no va más: Vitteri Ponce se va del Perú tras amenazas

Si es compatible con su sistema operativo, el TID puede ayudarlo a comprender si una fila en particular es un proceso o una actividad. Si la salida está vacía, como se puede ver en nuestro ejemplo (que se ejecuta en Linux Mint, un sistema operativo que admite el TID salida de columna), la línea / comando dado es un proceso, no una tarea. Por ejemplo, si inicia una aplicación de calculadora en su sistema operativo, como una tarea, esta columna se completará con un número de identificación de tarea / hilo.

El TASKCMD La columna contiene el nombre del comando de tarea. Nuevamente, solo es visible si la fila indicada es una actividad y no un proceso. Esto es normalmente el mismo que el comando / proceso que se muestra en el primero. MANDO columna, sin embargo, por ejemplo, Linux permite que una tarea cambie el nombre del comando, por lo que puede contener información adicional sobre la tarea. El USUARIO La columna enumera el usuario que inició el proceso / actividad.

Entonces tenemos una columna importante FD (Descriptor de archivo) que puede enumerar i Número de descriptor de archivo o una cadena de texto específica que indique qué tipo de descriptor de archivo es. Por ejemplo, si ves cwd en esta columna, significa directorio de trabajo actual e indica que el proceso o la tarea especificada tiene un candado abierto en el directorio de trabajo actual y que el directorio de trabajo aparece en la lista PRIMER NOMBRE columna.

Para obtener una lista completa de todos los posibles FD cuerdas, como man lsof en el símbolo del sistema seguido de escribir / FD (con 3 espacios después de la barra y antes de FD) una vez en el manual, luego presionando INICIAR SESIÓN EN para buscar la sección FD.

Cuando se trata de archivos normales, puede pensar en FD columna como un contador o un contador de ID único, comenzando en 0 y ascendiendo hasta el número total de archivos abiertos regulares en el sistema, con el número máximo de archivos abiertos definido por el ulimit -n ajuste, etc.

Al mirar archivos normales, el FD la columna mostrará por ejemplo 102u o 13w. Estos dos ejemplos representan respectivamente el archivo 102o abierto en el sistema, en modo de acceso mixto de lectura / escritura, como lo indica el u indicador / etiqueta Y el decimotercer archivo abierto en el sistema, solo en modo de acceso de escritura.

TE INTERESA>>  ¡La UEFA podría prohibir jugar Europa al United!

El GÉNERO la columna se explica por sí misma; indica si se mantiene un bloque de apertura de directorio o archivo normal. Hay varias otras etiquetas que pueden aparecer aquí y una búsqueda de / TYPE en man lsof (como se explicó anteriormente) proporcionará una lista completa.

El DISPOSITIVO La columna suele enumerar los números de dispositivo, separados por comas, para la mayoría de los tipos de archivos. El SIZE/OFF columna es el tamaño del archivo, o el desplazamiento del archivo en bytes, y el NODO La columna normalmente muestra el nodo de archivo o el número de inodo de archivo NFS de archivos locales. También puede enumerar, por ejemplo TCP o UDP cuando el candado dado es una conexión a Internet abierta.

Ejemplo: use lsof con asesinato

Utilizando lsof en combinación con grep, awk Y kill puede buscar un archivo específico en un sistema dado y luego terminar el proceso (usando el PIDo Identificador de proceso, descrito anteriormente).

Tenga en cuenta que esto solo debe hacerse en situaciones en las que tenga sentido hacerlo. Por ejemplo, puede tener un script Bash de subprocesos múltiples que inicie muchas subcapas diferentes donde cada una contiene un archivo determinado y espera que uno de los subprocesos se suspenda. Conoce el nombre del archivo abierto del proceso de suspensión, pero no sabe cuál es el PID para ese proceso / actividad lo es.

En tal situación, podemos ejecutar los siguientes comandos:

sudo su
lsof | grep 'some_file_descriptor' | awk '{print $2}' | xargs -I{} kill -9 {}

Pongamos esto en un ejemplo práctico. Supongamos que hemos creado el siguiente script test.sh en /tmp:

rm -Rf workspace
mkdir workspace
cd workspace
sleep 36000

Este script, cuando se ejecuta, creará un directorio llamado workspace, cambie los directorios dentro de él con cd y luego sleep durante 10 horas. Si bien no parece abrir ningún archivo a primera vista, recuerde que cwd Discutido antes; el script tiene un directorio de trabajo actual en uso, a saber /tmp/workspace!

Veamos cómo funciona prácticamente. Primero, definamos (usando su editor de texto favorito como vi), luego inicie el script en una sesión de terminal:

Ejecute un script test.sh que mantendrá los directorios abiertos como se enumeran a continuación por lsof

Luego cambiamos a una sesión de terminal secundaria / nueva y ejecutamos lsof, buscando el directorio de trabajo del script, es decir workspace:

lsof con un grep para la coincidencia de texto es una excelente manera de buscar la salida detallada de lsof

Como podemos ver, lsof es capaz de encontrar no solo nuestro script de prueba test.sh quien se aferra a cwd encerrar /tmp/workspace, pero también vemos que sleep, comenzó desde dentro del guión, contiene un cwd abre el descriptor de archivo (o más bien directorio) en el mismo directorio.

TE INTERESA>>  Celebrate ‘The Outsiders’ Anniversary With the Most Memorable Quotes From the Movie

También podemos ver ambos PID Para el test.sh guión así como para el sleep mando. Asumamos por un segundo que lo nuestro test.sh el guión se suspendió y queríamos terminarlo de forma completamente destructiva, por ejemplo, con kill -9 que es la forma más destructiva de terminar un proceso sin ningún nivel de cierre regular, y esto se basa en los archivos abiertos (o en nuestro caso, los directorios abiertos) al que se aferra el script. Damos el siguiente comando desde el terminal secundario:

lsof | grep "workspace" | awk '{print $2}' | xargs -I{} kill -9 {}

Mata un proceso usando kill -9 basado en una búsqueda lsof usando grep

Este comando tomará la salida anterior y la analizará más a fondo. El awk '{print $2}' Básicamente toma muestras de la columna secundaria (los ID de proceso) y el xargs el comando pasará esta segunda columna a kill -9 (la {} en el comando será reemplazado por cualquier entrada xargs recibe).

Bien podríamos anticiparlo lsof tiene una fila de encabezado que contiene PID y este texto también se pasará a matar. Si bien no creará un problema, un comando general mejor leería lsof | grep "workspace" | grep -v "PID" | awk '{print $2}' | xargs -I{} kill -9 {}o alguna otra forma de filtrar la primera fila por completo.

El resultado en nuestra primera sesión terminal / primaria es que nuestro script se mata instantáneamente:

El script test.sh eliminó la salida como resultado de la eliminación ejecutada en la otra terminal

Si quieres saber más sobre xargs, puede leer sobre el uso de xargs en combinación con bash -c para crear comandos complejos. Para la programación Bash multiproceso, consulte Cómo utilizar el procesamiento multiproceso en scripts Bash.

Terminando

En este artículo hemos explorado el uso de lsof, el comando list open files y qué información representa cada una de las columnas en su salida predeterminada. También analizamos un caso de uso práctico en el que usamos lsof en combinación con grep, awk Y kill para encontrar un archivo en particular (o en nuestro caso un directorio) mantenido abierto por un script y luego terminar ese script cerrando así el directorio abierto.

Si disfrutó leyendo este artículo, consulte nuestras afirmaciones, errores y fallas: ¿cuál es la diferencia? Articulo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Botón volver arriba
hentai creampir hentairulz.com saoff summer xxxx hot zoztube.mobi xhamsted ماياخليفة سكس parabg.com سكس قذف جماعى سكس جنوب افريقيا arab-porno.net سكس بنات محجبة freefuck redwap2.com karnataka blue film نيك خادمة freetvtube.info قصص نيك محارم الارشيف 23 sexy rapes teenextube.mobi latest scandals in bollywood milf manga truehentai.com la blue girl manga ang probinsyano june 19 pinoyshowstv.com enchong pokemon henatai hentaicredo.com boku no pico nokare .com gotporn.mobi www.freesexdoor.com indian first night xxx pornxvideos.info xxx six india sex samantha sex zatube.mobi cuddling porn mom son sleeping sex hdtporno.org velamma episode 74 indian free porn mms youjizz.sex velamma episode 79