Cómo verificar los archivos abiertos en Linux

Cómo verificar los archivos abiertos en Linux

Es posible que haya encontrado el dicho: “Todo es un archivo en Linux."Aunque esto no es del todo cierto, tiene un conjunto de verdades.

En sistemas similares a Linux y Unix, todo es como un archivo. Eso significa que los recursos en el sistema UNIX se les asigna un descriptor de archivo, que incluye dispositivos de almacenamiento, sockets de red, procesos, etc.

Un descriptor de archivo es un número único que identifica un archivo y otros dispositivos de entrada/salida. Describe los recursos y cómo el kernel accede a ellos. Piense en ello como una puerta de entrada a los recursos de hardware de abstracción del kernel.

Desafortunadamente, el concepto de descriptores de archivos está más allá del alcance de este tutorial; Considere el enlace proporcionado a continuación para comenzar a aprender más:

https: // en.Wikipedia.org/wiki/file_descriptor

Eso significa que los sistemas de unix y unix como Linux usan tales archivos en gran medida. Como usuario de Linux Power, ver los archivos abiertos y el proceso y los usuarios que los usan es increíblemente útil.

Este tutorial se centrará en las formas de ver los archivos abiertos y qué proceso o usuario es responsable.

Requisitos previos

Antes de comenzar, asegúrese de tener:

  • Un sistema de Linux
  • Usuario con privilegios root o sudo

Si tiene estos, comencemos:

LSOF Utilidad

Creado por Victor A Abell, enumere los archivos abiertos, o LSOF para abreviar, es una utilidad de línea de comandos que nos permite ver los archivos abiertos y los procesos o usuarios que los abrieron.

La utilidad LSOF está disponible en las principales distribuciones de Linux; Sin embargo, puede encontrarlo no instalado y, por lo tanto, puede necesitar instalar manualmente.

Cómo instalar LSOF en Debian/Ubuntu

Para instalarlo en Debian, use el comando:

actualización de sudo apt-get
sudo apt -get install lsof -y

Cómo instalar en rehl/centos

Para instalar en Rehl y CentOS, use el comando:

actualización de sudo DNF
sudo DNF Instalar LSOF

Cómo instalar en Arch

En Arch, llame al Administrador de paquetes usando el comando:

sudo Pacman -Sy
sudo Pacman -S LSOF

Cómo instalar en Fedora

En Fedora, usa el comando:

sudo yum install lsof

Una vez que tenga la utilidad LSOF instalada y actualizada, podemos comenzar a usarla.

Uso básico de LSOF

Para usar la herramienta LSOF, ingrese el comando:

sudo lsof

Una vez que ejecute el comando anterior, LSOF arrojará mucha información como se muestra a continuación:

La salida anterior muestra todos los archivos abridos por los procesos. La salida tiene varias columnas, cada una que representa información específica sobre el archivo.

  • La columna de comando - muestra el nombre del proceso que está utilizando el archivo.
  • Pid - muestra el identificador del proceso del proceso utilizando el archivo.
  • El tid - Muestra el ID de tarea (hilos) del proceso.
  • Taskcmd - Representar el nombre del comando de tareas.
  • USUARIO - El propietario del proceso.
  • Fd - Muestra el número de descriptor del archivo. Así es como los procesos usan el archivo; Las opciones disponibles en esta salida de columna incluyen:
  • CWD - directorio de trabajo actual.
  • memorando - archivo mapeado de memoria
  • pd - directorio de padres
  • jld - directorio de la cárcel
  • ltx - texto de la biblioteca compartida
  • rtd - directorio raíz.
  • TXT - Código de programa y datos
  • TR - archivo de rastreo de kernel.
  • errar - Error de información del descriptor del archivo
  • MMP - Dispositivo mapeado de memoria.
  • TIPO - Muestra el tipo de nodo asociado con el archivo, como:
  • Desastre - Para el socket de dominio unix.
  • Prostituta - representa el directorio
  • Regular - representando el archivo regular
  • Chr - representa el archivo de caracteres especiales.
  • ENLACE - archivo de enlaces simbólicos
  • Bisquematado - Bloquear un archivo especial
  • Inet - Zócalo de dominio de Internet
  • FIFO - una tubería con nombre (primero en el archivo de primera salida)
  • TUBO - para tuberías

Y muchos más.

  • DISPOSITIVOS - Muestra los números de dispositivo separados por comas en el orden de archivo de caracteres especiales, bloqueo especial, regular, directorio y archivo NFS.
  • Tamaño/apagado - Muestra el tamaño del archivo PR de compensación de archivo en bytes.
  • NODO - muestra el número de nodo del archivo local, escriba para el tipo de protocolo de Internet, etc.
  • NOMBRE - muestra el nombre del punto de montaje y fs en el que se encuentra el archivo.

Nota: Consulte el manual de LSOF para obtener información detallada sobre las columnas.

Cómo mostrar procesos que abrieron un archivo

LSOF nos proporciona opciones que nos ayudan a filtrar la salida para mostrar solo los procesos que abrieron un archivo específico.

Por ejemplo, para ver el archivo que abrió el archivo /bin /bash, use el comando como:

sudo lsof /bin /bash

Esto le dará una salida como se muestra a continuación:

Comando Nombre del dispositivo Tipo de dispositivo Tipo FD PID Nombre del nodo
KSMTUNED 1025 ROOT TXT REG 253,0 1150704 428303/usr/bin/bash
Bash 2968 CentOS TXT Reg 253,0 1150704 428303/usr/bin/bash
Bash 3075 CentOS TXT Reg 253,0 1150704 428303/usr/bin/bash

Cómo mostrar archivos abridos por un usuario específico

También podemos filtrar la salida para mostrar los archivos abiertos por un usuario específico. Hacemos esto usando la bandera -u seguida del nombre de usuario como:

sudo lsof -u centos

Esto le dará una salida como se muestra a continuación:

Cómo mostrar archivos abiertos por un proceso específico

Supongamos que queremos ver todos los archivos abridos por un proceso específico? Para esto, podemos usar el PID del proceso para filtrar la salida.

Por ejemplo, el comando a continuación muestra los archivos abiertos por Bash.

sudo lsof -p 3075

Esto le dará solo los archivos abridos por Systemd como se muestra:

Cómo mostrar archivos abiertos en un directorio

Para que se abran los archivos en un directorio específico, podemos pasar la opción +D seguida de la ruta del directorio.

Por ejemplo, enumere los archivos abiertos en el directorio /etc.

sudo lsof +d /etc

A continuación se muestra la salida para esto:

Cómo mostrar la conexión de red

Dado que todo en Linux es un archivo, podemos obtener los archivos de red como archivos TCP o conexiones.

Podemos usar el comando:

sudo lsof -i tcp

Esto le dará las conexiones TCP en el sistema.

También puede filtrar por el puerto específico utilizando el comando que se muestra a continuación:

sudo lsof -i: 22

Esto le dará la salida como se muestra a continuación:

Cómo mostrar continuamente archivos

LSOF nos proporciona un modo para recorrer la salida cada pocos segundos. Esto le permite monitorear los archivos abiertos por un proceso o usuario continuamente.

Esta opción, sin embargo, requiere que termine el proceso manualmente.

Por ejemplo, el siguiente comando monitorea continuamente los archivos abiertos en el puerto 22:

sudo lsof -r -i: 22

Como puede ver, en el tercer bucle, LSOF capta la conexión establecida al servidor en SSH.

Conclusión

LSOF es una utilidad increíblemente útil. Le permite monitorear archivos críticos, así como monitorear a los usuarios y procesos de apertura de archivos. Esto puede ser increíblemente útil al solucionar problemas o buscar intentos maliciosos para el sistema.

Como se muestra en este tutorial, utilizando varios ejemplos y métodos, puede combinar la funcionalidad proporcionada por la herramienta LSOF para el monitoreo personalizado.

Gracias por leer y compartir! Espero que hayas aprendido algo nuevo!