Explorando el sistema de archivos/proc en Linux

Explorando el sistema de archivos/proc en Linux

Hoy, vamos a echar un vistazo al directorio /proc. y familiarizarnos con él. El directorio /proc. está presente en todos los sistemas Linux. sin importar el sabor o la arquitectura.

Un error que debemos aclarar de inmediato es que el El directorio /proc. NO. es un sistema de archivos. real, en el sentido del término. Es un sistema de archivos virtual. Dentro de los procfs. hay información sobre procesos y otra información del sistema. Se asigna a /proc. y se monta en el momento del arranque.

sistema de archivos proc de Linux  Sistema de archivos de proceso de Linux Explorando el sistema de archivos/proc

Primero, vayamos al directorio /proc. y echemos un vistazo:

# cd/proc

Lo primero que notará es que hay algunos archivos que suenan familiares. y luego un montón de directorios numerados. Los directorios numerados. representan procesos. más conocidos como PIDs. y dentro de ellos, un comando que los ocupa. Los archivos contienen información del sistema, como memoria. ( meminfo. , información de CPU. ( cpuinfo. y filesystems.

Lea también:. Comando gratuito de Linux para verificar la memoria física y la memoria de intercambio

freestar.config.enabled_slots.push

Echemos un vistazo a uno de los archivos primero:

# cat/proc/meminfo Salida de muestra

que devuelve algo similar a esto:

MemTotal: 604340 kB MemFree: 54240 kB Buffers: 18700 kB Caché: 369020 kB SwapCached: 0 kB Activo: 312556 kB Inactivo: 164856 kB Activo (anon): 89744 kB Inactivo (anon): 360 kB Activo (archivo): 222812 kB Inactivo (archivo): 164496 kB Inevictable: 0 kB Mlocked: 0 kB SwapTotal: 0 kB SwapFree: 0 kB Sucio: 0 kB Writeback: 0 kB AnonPages: 89724 kB Mapeado: 18012 kB Shmem: 412 kB Slab: 50104 kB S Recuperable: 40224 kB …

Como puede ver, /proc/meminfo. contiene un montón de información sobre la memoria de su sistema, incluida la cantidad total disponible (en kb. y la cantidad libre en las dos líneas superiores.

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

# man 5/proc/

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

  1. /proc/cmdline. información de la línea de comandos del kernel.
  2. /proc/console. información sobre las consolas actuales incluido tty.
  3. /proc/devices. controladores de dispositivo configurados actualmente para el kernel en ejecución.
  4. /proc/dma. Información sobre los canales DMA actuales.
  5. /proc/fb. dispositivos Framebuffer.
  6. /proc/filesystem. s: sistemas de archivos actuales compatible con el kernel.
  7. /proc/iomem. mapa de memoria del sistema actual para dispositivos.
  8. /proc/ioports. Regiones de puerto registradas para la comunicación de entrada y salida con el dispositivo.
  9. /proc/loadavg. promedio de carga del sistema.
  10. /proc/locks. Archivos actualmente bloqueados por el kernel.
  11. /proc/meminfo. Información sobre la memoria del sistema (ver el ejemplo anterior).
  12. /proc/misc:. varios controladores registrados para varios ma jor device.
  13. /proc/modules. módulos del kernel cargados actualmente.
  14. /proc/mounts. lista de todos los montajes en uso por el sistema.
  15. /proc/partitions. información detallada sobre las particiones disponibles para el sistema.
  16. /proc/pci. Información sobre cada dispositivo PCI.
  17. /proc/stat. Registro o varias estadísticas guardadas desde el último reinicio.
  18. /proc/swap. información sobre el espacio de intercambio.
  19. /proc/uptime. información sobre el tiempo de actividad (en segundos).
  20. /proc/version. Versión de kernel, versión de gcc y distribución de Linux instaladas.

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. Usemos un ejemplo. En mi sistema, hay un nombre de carpeta /proc/12.

# cd/proc/12 # ls Salida de muestra attr coredump_filter io mounts oom_score_adj smaps wchan autogroup cpuset latency mountstats pagemap stack auxv cwd límites net personalidad stat cgroup environment loginuid ns root statm clear_refs exe maps numa_maps sched status cmdline fd mem oom_adj schedstat syscall comm fdinfo mountinfo oom_score sessionid task

Si ejecuto:

# cat/proc/12/status

Obtengo lo siguiente:

Nombre: xenwatch Estado: S (durmiendo) Tgid: 12 Pid: 12 PPid: 2 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 64 Grupos: Subprocesos: 1 SigQ: 1/4592 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: ffffffffffffffff SigCgt: 0000000000000000 CapInh: 000000000000 0000 CapPrm: ffffffffffffffff CapEff: ffffffffffffffffff CapBnd: ffffffffffffffff Cpus_allowed: 1 Cpus_allowed_list: 0 Mems_allowed: 00000000,00000001 Mems_allowed_list: 0 voluntario_ctxt_switches: 0xtp> Bueno, la parte importante está arriba. Podemos ver en el archivo de estado que este proceso pertenece a xenwatch. Su estado actual es durmiendo. y su ID. de proceso 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íz. usuario.

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

  1. cmdline. línea de comando del proceso
  2. environment -variables ambientales
  3. fd. descriptores de archivo
  4. límites. contiene información sobre los límites del proceso
  5. montajes. información relacionada

También notará una serie de enlaces en el directorio numerado:

  1. cwd. un enlace al directorio de trabajo actual del proceso
  2. exe. enlace al ejecutable del proceso
  3. raíz. enlace al directorio de trabajo del proceso

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