Si todo en Linux es un archivo, tiene que haber más que solo archivos en su disco duro. Este tutorial le mostrará cómo usar lsof
para ver todos los demás dispositivos y procesos que se manejan como archivos.
La frase citada a menudo de que todo en Linux es un archivo es cierta. Un archivo es una colección de bytes. Cuando se leen en un programa o se envían a una impresora, parecen generar un flujo de bytes. Cuando se escriben a, que aceptan un flujo de bytes.
Muchos otros componentes del sistema aceptan o generan flujos de bytes, como teclados, conexiones de socket, impresoras y procesos de comunicación. Debido a que aceptan, generan o aceptan y generan flujos de bytes, estos dispositivos se pueden manejar, a un nivel muy bajo, como si fueran archivos.
Este concepto de diseño simplificó la implementación del sistema operativo Unix . Significaba que se podía crear un pequeño conjunto de controladores, herramientas y API para manejar una amplia gama de recursos diferentes.
Los archivos de datos y programas que residen en su disco duro son archivos del sistema de archivos antiguos. Podemos usar el ls
comando para enumerarlos y conocer algunos detalles sobre ellos.
¿Cómo nos enteramos de todos los demás procesos y dispositivos que se tratan como si fueran archivos? Usamos el lsof
comando. Esto enumera los archivos abiertos en el sistema. Es decir, enumera todo lo que se maneja como si fuera un archivo.
Muchos de los procesos o dispositivos que lsof
pueden informar pertenecen a root o fueron iniciados por root, por lo que deberá usar el sudo
comando con lsof
.
Y debido a que esta lista será muy larga, la vamos a canalizar less
.
sudo lsof | Menos
Antes de lsof
que aparezca la salida, los usuarios de GNOME pueden ver un mensaje de advertencia en la ventana del terminal.
lsof: ADVERTENCIA: no se puede stat () fuse.gvfsd-fusionar el sistema de archivos / run / user / 1000 / gvfs La información de salida puede estar incompleta.
lsof
intenta procesar todos los sistemas de archivos montados. Este mensaje de advertencia se genera porque se lsof
ha encontrado con un sistema de archivos virtual GNOME (GVFS). Este es un caso especial de un sistema de archivos en el espacio de usuario (FUSE). Actúa como un puente entre GNOME, sus API y el kernel. Nadie, ni siquiera el root, puede acceder a uno de estos sistemas de archivos, aparte del propietario que lo montó (en este caso, GNOME). Puede ignorar esta advertencia.
La salida de lsof
es muy amplia. Las columnas más a la izquierda son:
Las columnas de la derecha son:
No todas las columnas se aplican a todos los tipos de archivos abiertos. Es normal que algunos de ellos estén en blanco.
/proc
donde lsof
encuentra información sobre el proceso.El descriptor de archivo en la columna FD puede ser una de muchas opciones; la página de manual los enumera todos .
La entrada de la columna FD puede constar de tres partes: un descriptor de archivo, un carácter de modo y un carácter de bloqueo. Algunos descriptores de archivos comunes son:
El carácter de modo puede ser uno de los siguientes:
El carácter de bloqueo puede ser uno de los siguientes:
Hay más de 70 entradas que pueden aparecer en la columna TIPO. Algunas entradas comunes que verá son:
Para ver los procesos que han abierto un archivo determinado, proporcione el nombre del archivo como parámetro para lsof
. Por ejemplo, para ver los procesos que han abierto un kern.log
archivo, use este comando:
sudo lsof /var/log/kern.log
lsof
responde mostrando el proceso único, rsyslogd
que fue iniciado por el usuario syslog
.
Para ver los archivos que se han abierto desde un directorio y los procesos que los abrieron, pase el directorio a lsof
como parámetro. Debe utilizar la +D
opción (directorio).
Para ver todos los archivos que están abiertos en el /var/log/
directorio, use este comando:
sudo lsof + D / var / log /
lsof
responde con una lista de todos los archivos abiertos en ese directorio.
Para ver todos los archivos que se han abierto desde el /home
directorio, use el siguiente comando:
sudo lsof + D / inicio
Se /home
muestran los archivos que se han abierto desde el directorio. Tenga en cuenta que con descripciones más cortas en algunas de las columnas, la lista completa es más limitada.
Para ver los archivos que han sido abiertos por un proceso en particular, use la -c
opción (comando). Tenga en cuenta que puede proporcionar más de un término de búsqueda a la lsof
vez.
sudo lsof -c ssh -c init
lsof
proporciona una lista de los archivos que han sido abiertos por cualquiera de los procesos proporcionados en la línea de comando.
Para limitar la visualización a los archivos que han sido abiertos por un usuario específico, use la -u
opción (usuario). En este ejemplo, veremos los archivos que han sido abiertos por procesos que son propiedad de Mary o se han iniciado en nombre de Mary.
sudo lsof -u mary
Todos los archivos enumerados se han abierto en nombre del usuario Mary. Esto incluye archivos que han sido abiertos por el entorno de escritorio, por ejemplo, o simplemente como resultado de que Mary haya iniciado sesión.
Para excluir los archivos que ha abierto un usuario, utilice el ^
operador. La exclusión de usuarios del listado facilita la búsqueda de la información que le interesa. Debe usar la -u
opción como antes y agregar el ^
carácter al comienzo del nombre del usuario.
sudo lsof + D / inicio -u ^ mary
Esta vez, la lista del /home
directorio no incluye ninguno de los archivos abiertos por el usuario Mary.
Para enumerar los archivos que han sido abiertos por un proceso específico, use la -p
opción (proceso) y proporcione el ID del proceso como parámetro.
sudo lsof - p 4610
Todos los archivos que se han abierto con el ID de proceso que proporcionas se enumeran automáticamente.
Para ver los ID de proceso de los procesos que han abierto un archivo en particular, use la -t
opción (conciso) y proporcione el nombre del archivo en la línea de comando.
sudo lsof -t /usr/share/mime/mime.cache
Los ID de proceso se muestran en una lista simple.
Enumeremos los archivos que ha abierto el usuario Mary, que están relacionados con los procesos SSH. Sabemos que podemos proporcionar más de un elemento de búsqueda en la línea de comando, por lo que debería ser fácil.
sudo lsof -u mary -c ssh
Ahora veamos la salida de lsof
. Eso no se ve bien; hay entradas en la salida que fueron iniciadas por root.
Eso no es lo que esperábamos. ¿Que pasó?
Cuando proporcione varios términos de búsqueda, lsof
se devolverá cualquier archivo que coincida con el primer término de búsqueda o el segundo término de búsqueda, y así sucesivamente. En otras palabras, realiza una búsqueda OR.
Para lsof
realizar una búsqueda Y, use la -a
opción (y). Esto significa que los únicos archivos que se enumerarán serán los que coincidan con el primer término de búsqueda y el segundo término de búsqueda, y así sucesivamente.
Intentémoslo de nuevo y usemos la -a
opción.
sudo lsof -u mary -c ssh -a
Ahora, cada archivo de la lista es uno que ha sido abierto por o en nombre de Mary y está asociado con el comando SSH.
Podemos usar la +|-r
opción (repetir) para poner lsof
en modo de repetición. La opción de repetición se puede aplicar de dos formas, +r
o -r
. También debemos agregar el número de segundos que queremos lsof
esperar antes de actualizar la pantalla.
El uso de la opción de repetición en cualquier formato hace que se lsof
muestren los resultados como de costumbre, pero agrega una línea discontinua en la parte inferior de la pantalla. Espera el número de segundos proporcionado en la línea de comando y luego actualiza la pantalla con un nuevo conjunto de resultados.
Con la -r
opción esto continuará hasta que presione Ctrl + C. Con el +r
formato, continuará hasta que no haya resultados para mostrar, o hasta que presione Ctrl + C.
sudo lsof -u mary -c ssh -a -r5
Tenga en cuenta la línea punteada en la parte inferior de la lista. Esto separa cada nueva visualización de datos cuando se actualiza la salida.
La -i
opción (Internet) le permite ver los archivos abiertos por procesos asociados con la red y las conexiones a Internet.
lsof -i
Se muestran todos los archivos abiertos por la red y las conexiones a Internet.
Para ver los archivos abiertos por conexiones a Internet que están asociados con un ID de proceso específico, agregue la -p
opción y la -a
opción.
Aquí buscamos archivos abiertos mediante una conexión a Internet o de red, mediante un proceso con un ID de 606.
sudo lsof -i -a -p 606
Se muestran todos los archivos abiertos por el ID de proceso 606 que están asociados con conexiones de red o de Internet.
Podemos usar la -c
opción (comando) para buscar archivos abiertos por procesos específicos. Para buscar archivos que hayan sido abiertos por Internet o conexiones de red asociadas con el ssh
proceso, use el siguiente comando:
lsof -i -a -c ssh
Todos los archivos abiertos debido a los procesos ssh se enumeran en la salida.
Podemos hacer un lsof
informe sobre los archivos que se abrieron por Internet o conexiones de red en un puerto específico. Para hacer esto, usamos el :
carácter seguido del número de puerto.
Aquí le pedimos lsof
que enumere los archivos que se han abierto mediante conexiones de red o de Internet mediante el puerto 22.
lsof -i: 22
Todos los archivos enumerados fueron abiertos por procesos asociados con el puerto 22 (que es el puerto predeterminado para las conexiones SSH).
Podemos solicitar lsof
mostrar los archivos que han sido abiertos por procesos asociados con conexiones de red e Internet, que están usando un protocolo específico. Podemos elegir entre TCP, UDP y SMTP. Usemos el protocolo TCP y veamos qué obtenemos.
sudo lsof -i tcp
Los únicos archivos enumerados son los abiertos por procesos que utilizan el protocolo TCP.
Esa es una buena base en algunos casos de uso común lsof
, pero hay mucho más que eso. Cuánto más se puede juzgar por el hecho de que la página de manual tiene más de 2.800 líneas.
El lsof
comando se puede utilizar para profundizar cada vez más en los estratos de archivos abiertos y pseudoarchivos. Hemos proporcionado un mapa esquemático; el atlas está en la página de manual .
El mundo del gaming ha experimentado un crecimiento exponencial en los últimos años. La…
Stokkete/Shutterstock.com ¿Sigue utilizando una unidad flash USB obsoleta para almacenar sus archivos? ¿Por qué no…
LG Los fabricantes siempre intentan mejorar el rendimiento de imagen de los monitores. Como resultado,…
Patty Chan/Shutterstock.com Si cree en lo que ve en las redes sociales, puede pensar en…
Seksan.TH/Shutterstock.com Los servicios de suscripción como Netflix, Game Pass y Spotify nos permiten consumir tantas…
fatmawati achmad zaenuri/Shutterstock El acceso a Internet, oa cualquier otra red, se rige por la…