/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.