GNU/Linux >> Tutoriales Linux >  >> Cent OS

Comprender el sistema de archivos /proc

El sistema de archivos proc contiene una jerarquía de archivos especiales que representan el estado actual del kernel. Lleva el nombre de su propósito original, que es una interfaz para las estructuras dentro de los procesos en ejecución para admitir herramientas de depuración. Linux adoptó esto de Solaris pero también agregó la interfaz al núcleo. El sistema de archivos proc se ha vuelto bastante desordenado a lo largo de los años, por lo que Linux creó el sistema de archivos sysfs para limpiarlo.

Los archivos en el directorio /proc contienen información sobre su hardware y los procesos actuales que se ejecutan en su sistema. Los archivos que tienen permiso de escritura se pueden modificar para cambiar la configuración del kernel.

Sistema de archivos virtuales

Los archivos del directorio /proc son archivos virtuales; por lo tanto, proc se conoce como un sistema de archivos virtual. La mayoría de los archivos virtuales se enumeran con un tamaño de cero bytes, pero contienen una gran cantidad de información cuando se visualizan. La mayoría de las marcas de fecha y hora en los archivos virtuales reflejan la fecha y la hora actuales; sin embargo, estos archivos se actualizan constantemente.

Los archivos virtuales como /proc/interrupts, /proc/meminfo, /proc/cpuinfo y /proc/devices brindan una vista del hardware del sistema. Otros, como el archivo /proc/filesystems y el directorio /proc/sys, proporcionan interfaces e información de configuración del sistema. Los archivos que contienen información sobre temas similares se agrupan en directorios virtuales. Por ejemplo, los directorios de procesos contienen información sobre cada proceso en ejecución en el sistema.

Ver archivos virtuales

La mayoría de los archivos virtuales dentro de /proc se pueden ver usando comandos como cat, more y less. Por ejemplo, para ver información sobre la CPU del sistema, ingrese:

# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 79
model name	: Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping	: 1
microcode	: 0x1
cpu MHz		: 2199.998
cache size	: 30720 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
bogomips	: 4399.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:

Solo se puede acceder a ciertos archivos con privilegios de root. Algunos archivos en /proc contienen información que no es legible por humanos. Use utilidades como lspci, free y top para ver estos archivos. Por ejemplo, use el comando lspci para enumerar todos los dispositivos PCI:

# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:06.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:07.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon

Cambiar archivos virtuales

La mayoría de los archivos virtuales dentro del directorio /proc son de solo lectura. Sin embargo, algunos se pueden escribir y se pueden usar para ajustar la configuración en el kernel. Esto es especialmente cierto para los archivos en el directorio /proc/sys. Para cambiar el valor de un archivo virtual, use la siguiente sintaxis:

# echo value > /proc/file

Por ejemplo, para cambiar el nombre de host, ingrese:

# echo www.example.com > /proc/sys/kernel/hostname

Otros archivos actúan como conmutadores binarios o booleanos. Ver el archivo devuelve un 0 (desactivado o falso) o un 1 (activado o verdadero). Ejemplo:

# cat /proc/sys/net/ipv4/ip_forward 
0

El 0 indica que el núcleo no está reenviando paquetes de red. Para activar el reenvío de paquetes:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_forward
1

Archivos de nivel superior dentro de /proc

Aquí se describen algunos de los archivos virtuales más útiles en el nivel superior del directorio /proc. Esta no pretende ser una lista exhaustiva, sino dar ejemplos de algunos de los archivos y su propósito. Muchos de estos archivos se describen con más detalle en las lecciones correspondientes.

  • /proc/info de amigo :este archivo se usa principalmente para diagnosticar problemas de fragmentación de la memoria.
  • /proc/líneacmd :Este archivo muestra los parámetros pasados ​​al núcleo en el momento en que se inicia.
  • /proc/cpuinfo :este archivo virtual identifica el tipo de procesador utilizado por su sistema.
  • /proc/cripto :este archivo enumera todos los cifrados criptográficos instalados utilizados por el kernel de Linux, incluidos detalles adicionales para cada uno.
  • /proc/dispositivos :este archivo muestra los diversos dispositivos de caracteres y bloques actualmente configurados (sin incluir dispositivos cuyos módulos no están cargados).
  • /proc/dma :este archivo contiene una lista de los canales ISA DMA registrados en uso.
  • /proc/execdominios :este archivo enumera los dominios de ejecución admitidos actualmente por el kernel de Linux, junto con el rango de personalidades que admiten.
  • /proc/sistemas de archivos :este archivo muestra una lista de los tipos de sistemas de archivos actualmente admitidos por el kernel. La primera columna indica si el sistema de archivos está montado en un dispositivo de bloque. Aquellos que comienzan con nodev no están montados en un dispositivo. La segunda columna enumera los nombres de los sistemas de archivos admitidos. El comando de montaje recorre los sistemas de archivos enumerados aquí cuando no se especifica uno como argumento.
  • /proc/interrupciones :este archivo registra el número de interrupciones por IRQ en la arquitectura x86.
  • /proc/iomem :este archivo le muestra el mapa actual de la memoria del sistema para cada dispositivo físico.
  • /proc/ioports :este archivo proporciona una lista de las regiones de puerto actualmente registradas que se utilizan para la comunicación de entrada o salida con un dispositivo.
  • /proc/kcore :este archivo representa la memoria física del sistema y se almacena en el formato de archivo principal. El contenido de este archivo está diseñado para ser examinado por un depurador, como gdb, y no es legible por humanos.
  • /proc/kmsg :este archivo se utiliza para almacenar mensajes generados por el núcleo. Estos mensajes luego son recogidos por otros programas, como /bin/dmesg.
  • /proc/carga media :este archivo proporciona un vistazo al promedio de carga con respecto a la CPU y la E/S a lo largo del tiempo, así como datos adicionales utilizados por el tiempo de actividad y otros comandos.
  • /proc/bloqueos :Este archivo muestra los archivos actualmente bloqueados por el núcleo. El contenido de este archivo contiene datos internos de depuración del kernel y puede variar enormemente, según el uso del sistema.
  • /proc/mdstat :este archivo contiene la información actual para configuraciones RAID de varios discos.
  • /proc/meminfo :Este archivo reporta una gran cantidad de información valiosa sobre el uso de RAM del sistema.
  • /proc/módulos :Este archivo muestra una lista de todos los módulos cargados en el núcleo. La mayor parte de esta información también se puede ver usando el comando /sbin/lsmod.

Procesar directorios en /proc

El directorio /proc contiene directorios con nombres numéricos. Estos directorios llevan el nombre del ID de proceso de un programa y contienen información sobre ese proceso. El propietario y el grupo de cada directorio de procesos se establecen para el usuario que ejecuta el proceso. Cada directorio de proceso contiene varios archivos, incluidos:

  • línea de comando :El comando emitido al iniciar el proceso
  • cwd :un enlace simbólico al directorio de trabajo actual para el proceso
  • entorno :Una lista de las variables de entorno para el proceso
  • exe :Un enlace simbólico al ejecutable de este proceso
  • fd :el directorio que contiene todos los descriptores de archivo para un proceso en particular
  • mapas :una lista de mapas de memoria para ejecutables y archivos de biblioteca asociados con el proceso
  • mem :La memoria retenida por el proceso (el archivo no puede ser leído por el usuario)
  • raíz :Un enlace al directorio raíz del proceso
  • estadística :el estado del proceso, incluido el estado de ejecución y el uso de la memoria
  • estado :El estado de la memoria en uso por el proceso
  • estado :El estado del proceso en una forma más legible que stat o statm

Otros directorios en /proc

Otros directorios dentro del directorio/proc agrupan información similar por tema. La siguiente es una lista parcial de estos directorios:

  • /proc/bus :Este directorio contiene información sobre los distintos buses disponibles en el sistema. Los subdirectorios y archivos disponibles dentro de /proc/bus varían según los dispositivos conectados al sistema.
  • /proc/bus/pci, /proc/bus/usb :Puede obtener una lista de todos los dispositivos PCI y USB presentes en el sistema usando el comando cat en el archivo de dispositivos dentro de estos directorios, pero la salida es difícil de leer e interpretar. Para obtener una lista de dispositivos legible por humanos, ejecute los comandos lspci y lsusb.
  • /proc/controlador :este directorio contiene información sobre controladores específicos que utiliza el kernel.
  • /proc/fs :este directorio muestra qué sistemas de archivos se exportan. Si ejecuta un servidor NFS, al escribir cat /proc/fs/nfsd/exports se muestran los sistemas de archivos que se comparten y los permisos.
  • /proc/irq :este directorio se utiliza para establecer la afinidad de IRQ con la CPU, lo que permite que el sistema conecte una IRQ particular a una sola CPU. Alternativamente, puede excluir una CPU del manejo de cualquier IRQ.
  • /proc/self/net :este directorio proporciona una visión completa de varios parámetros y estadísticas de red. Cada directorio y archivo virtual dentro de este directorio describe aspectos de la configuración de red del sistema. El archivo /proc/net es un enlace simbólico a este directorio.
  • /proc/scsi :El archivo principal de este directorio es /proc/scsi/scsi, que contiene una lista de todos los dispositivos SCSI reconocidos. En esta lista, está disponible el tipo de dispositivo, así como el nombre del modelo, el proveedor, el canal SCSI y los datos de ID.
  • /proc/sys :Este directorio es diferente de otros en /proc, porque no solo brinda información sobre el sistema, sino que también le permite habilitar y deshabilitar de inmediato las funciones del kernel. Si un archivo tiene permisos de escritura, puede usarse para configurar el kernel. El cambio de un valor dentro de un archivo /proc/sys/ se realiza haciendo eco del nuevo valor en el archivo. Por ejemplo, para cambiar el nombre de host a www.example.com :
    # echo www.example.com > /proc/sys/kernel/hostname

    Otros archivos actúan como conmutadores binarios o booleanos. Un valor de 0 representa apagado o falso. Un valor de 1 representa encendido o verdadero. Por ejemplo, para activar el reenvío de paquetes:

    # echo 1 > /proc/sys/net/ipv4/ip_forward

    Los cambios realizados con el comando echo no son persistentes y desaparecen cuando se reinicia el sistema. Para que los cambios de configuración surtan efecto después de reiniciar el sistema, agréguelos al archivo /etc/sysctl.conf.

  • /proc/sys/dev :este directorio proporciona parámetros para dispositivos particulares en el sistema.
  • /proc/sys/fs :este directorio contiene opciones e información sobre varios aspectos del sistema de archivos, incluida la cuota, el manejo del archivo y la información de inodo.
  • /proc/sys/núcleo :Este directorio contiene una variedad de diferentes archivos de configuración que afectan directamente la operación del kernel.
  • /proc/sys/net :Este directorio contiene subdirectorios relacionados con varios temas de redes. Puede modificar los archivos dentro de estos directorios para ajustar la configuración de red en un sistema en ejecución.
  • /proc/sysvipc :este directorio contiene información sobre los recursos de comunicación entre procesos (IPC) de System V. Los archivos en este directorio se relacionan con llamadas System V IPC para mensajes (msg), semáforos (sem) y memoria compartida (shm).
  • /proc/tty :este directorio contiene información sobre los dispositivos tty disponibles y actualmente en uso en el sistema. El archivo de controladores es una lista de los dispositivos tty actualmente en uso.
Comprender el sistema de archivos sysfs (/sys) en Linux


Cent OS
  1. Explorando el sistema de archivos /proc de Linux

  2. ¿Cómo maneja Linux múltiples separadores de rutas consecutivas (/home////username///file)?

  3. Linux:¿con qué frecuencia se actualiza el sistema de archivos Proc en Linux?

  4. Centos:¿cuál es la diferencia entre /usr/lib/systemd/system y /etc/systemd/system?

  5. Descripción del archivo de configuración de dm-multipath /etc/multipath.conf

Comprender el archivo /etc/passwd

Comprender el archivo /etc/shadow

Archivos /proc/cpuinfo y /proc/meminfo en Linux

Comprender el archivo /etc/fstab en Linux

Comprender los archivos /proc/mounts, /etc/mtab y /proc/partitions

Entendiendo Linux /proc/id/maps