Búsqueda de sitios web

/proc - Obtener información sobre el hardware y el proceso de Linux


Hoy profundizaremos en el contenido del directorio /proc para desarrollar una mejor comprensión de sus funcionalidades. Es importante tener en cuenta que el directorio /proc es una característica común en todas las distribuciones de Linux, independientemente de su versión o arquitectura.

Una idea errónea que debemos aclarar de inmediato es que el directorio /proc NO es un sistema de archivos convencional en el sentido tradicional del término.

Es un sistema de archivos virtual que contiene información sobre procesos y otros datos relacionados con el sistema dentro de procfs. Este sistema de archivos se asigna al directorio /proc y se monta durante el proceso de inicio del sistema.

¿Qué es /proc en Linux?

El sistema de archivos /proc sirve como interfaz para las estructuras de datos del kernel y la información del tiempo de ejecución, lo que proporciona una manera para que tanto los usuarios como las aplicaciones accedan a información detallada sobre procesos, configuración del sistema, hardware y más, al exponer estos datos a través de una jerarquía de archivos virtuales.

Para ver una lista completa de archivos y directorios en el sistema de archivos /proc, puede usar el comando ls como se muestra.

ls /proc

Navegando /proc en Linux

Cuando navega al directorio /proc, notará que hay algunos archivos que le resultarán familiares y luego un montón de directorios numerados, cada uno de los cuales corresponde a un proceso en ejecución en el sistema.

cd /proc
ls

Estos directorios numerados representan los procesos, más conocidos como ID de proceso (PID), y dentro de ellos, un comando que los ocupa. Los archivos contienen información del sistema, como memoria (meminfo), información de la CPU (cpuinfo) y sistemas de archivos disponibles.

Aquí hay algunos archivos y directorios clave que encontrará:

  • /proc/cpuinfo: muestra información sobre las CPU del sistema, como el modelo, la velocidad y la cantidad de núcleos.
  • /proc/meminfo: enumera detalles sobre el uso de la memoria y estadísticas que contienen la cantidad total de memoria, la memoria libre y la memoria utilizada por cada proceso.
  • /proc/filesystems: contiene una lista de todos los sistemas de archivos compatibles con el kernel.
  • /proc/sys: enumera los parámetros de configuración y tiempo de ejecución del kernel.
  • /proc/loadavg: muestra el promedio de carga del sistema en diferentes intervalos de tiempo, como 1, 5 y 15 minutos.
  • /proc/self: un enlace simbólico al propio directorio del proceso.
  • /proc/stat: contiene una variedad de estadísticas sobre el sistema, como la cantidad de procesos en ejecución, la cantidad de interrupciones y la cantidad de tiempo empleado en cada estado de la CPU.
  • /proc/uptime: contiene la cantidad de tiempo que el sistema ha estado funcionando.
  • /proc/PID: contiene información sobre un proceso específico, donde PID es el ID del proceso.

Extracción de información del sistema

/proc/meminfo se utiliza para mostrar información sobre el uso de la memoria y estadísticas de un sistema Linux, que contiene una instantánea de varias métricas relacionadas con la memoria, que pueden ser útiles para monitorear el rendimiento del sistema y la utilización de recursos. .

cat /proc/meminfo

Como puede ver, /proc/meminfo contiene mucha información sobre la memoria de su sistema, incluida la cantidad total disponible (en kb) y la cantidad libre en los dos primeros. líneas.

Al ejecutar el comando cat en cualquiera de los archivos en /proc se generará su contenido. La información sobre cualquier archivo está disponible en la página de manual ejecutando:

man 5 /proc/<filename>

Le daré un resumen rápido de los archivos /proc:

  • /proc/cmdline: información de la línea de comandos del kernel.
  • /proc/console: información sobre las consolas actuales, incluido tty.
  • /proc/devices: controladores de dispositivo configurados actualmente para el kernel en ejecución.
  • /proc/dma: información sobre los canales DMA actuales.
  • /proc/fb: dispositivos Framebuffer.
  • /proc/filesystems: sistemas de archivos actuales admitidos por el kernel.
  • /proc/iomem: mapa de memoria del sistema actual para dispositivos.
  • /proc/ioports: regiones de puertos registrados para la comunicación de entrada y salida con el dispositivo.
  • /proc/loadavg – Promedio de carga del sistema.
  • /proc/locks: archivos actualmente bloqueados por el kernel.
  • /proc/meminfo: información sobre la memoria del sistema (ver el ejemplo anterior).
  • /proc/misc: controladores varios registrados para los dispositivos principales diversos.
  • /proc/modules: módulos del kernel actualmente cargados.
  • /proc/mounts: lista de todos los soportes que utiliza el sistema.
  • /proc/partitions: información detallada sobre las particiones disponibles para el sistema.
  • /proc/pci: información sobre cada dispositivo PCI.
  • /proc/stat: registro o varias estadísticas guardadas desde el último reinicio.
  • /proc/swap: información sobre el espacio de intercambio.
  • /proc/uptime: información de tiempo de actividad (en segundos).
  • /proc/version: versión del kernel, versión de gcc y distribución de Linux instaladas.

Extracción de información del proceso

Dentro de los directorios numerados de /proc encontrará algunos archivos y enlaces. Recuerde que los números de estos directorios se correlacionan con el PID del comando que se ejecuta dentro de ellos.

Por ejemplo, navegar a /proc/ proporciona detalles como:

  • /proc//cmdline: argumentos de la línea de comandos utilizados para iniciar el proceso.
  • /proc//status: información de estado detallada, incluido el uso de memoria y estadísticas de proceso.
  • /proc//fd: enlaces simbólicos a archivos abiertos por el proceso.

Usemos un ejemplo para ver una carpeta llamada /proc/12.

cd /proc/12
ls

Si corro:

cat /proc/12/status

Obtengo lo siguiente:

¿Entonces, qué significa esto? Bueno, la parte importante está arriba. Podemos ver en el archivo de estado que este proceso pertenece a rcu_tasks_rude_kthread. Su estado actual es inactivo y su proceso ID es 12, obviamente.

También podemos ver quién está ejecutando esto, ya que UID y GID son 0, lo que indica que este proceso pertenece a la raízusuario.

En cualquier directorio numerado tendrás una estructura de archivos similar, y los más importantes con sus descripciones, son los siguientes:

  • cmdline – línea de comando del proceso
  • entorno – variables ambientales
  • fd – descriptores de archivos
  • límites: contiene información sobre los límites del proceso.
  • montajes – información relacionada

También notará varios enlaces en el directorio numerado:

  • cwd: un enlace al directorio de trabajo actual del proceso
  • exe – enlace al ejecutable del proceso
  • root – enlace al directorio de trabajo del proceso

Esto debería ayudarle a familiarizarse con el directorio /proc. También debería proporcionar información sobre cómo varios comandos obtienen su información, como uptime, lsof, mount y ps, solo por nombrar algunos.