5.3. Directorios en /proc/

Grupos comunes de información referente al kernel agrupado en directorios y subdirectorios en /proc/.

5.3.1. Directorios de proceso

Cada directorio /proc/ contiene unos cuantos directorios nombrados con un número. Un listado de los mismos se vería de la siguiente manera:

dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 1010
dr-xr-xr-x    3 xfs      xfs             0 Feb 13 01:28 1087
dr-xr-xr-x    3 daemon   daemon          0 Feb 13 01:28 1123
dr-xr-xr-x    3 root     root            0 Feb 13 01:28 11307
dr-xr-xr-x    3 apache   apache          0 Feb 13 01:28 13660
dr-xr-xr-x    3 rpc      rpc             0 Feb 13 01:28 637
dr-xr-xr-x    3 rpcuser  rpcuser         0 Feb 13 01:28 666

A estos directorios se les llama directorios de proceso, ya que pueden hacer referencia a un ID de proceso y contener información específica para ese proceso. El propietario y grupo de cada directorio de proceso está configurado para que el usuario ejecute el proceso. Cuando se finaliza el proceso, el directorio del proceso /proc desaparece. Sin embargo, mientras que se está ejecutando el proceso, una gran cantidad de información específica a ese proceso está contenida en varios archivos del directorio de procesos.

Cada uno de los directorios de procesos contiene los siguientes archivos:

5.3.1.1. /proc/self

El directorio /proc/self es un enlace al proceso en ejecución. Esto le permite verse a si mismo sin tener que conocer su ID de proceso.

Dentro de un entorno de la shell, una lista del directorio /proc/self produce el mismo contenido que una lista del directorio del proceso para ese proceso.

5.3.2. /proc/bus/

Este directorio contiene información específica sobre los diversos buses disponibles en el sistema. Por ejemplo, en un sistema estándar que contenga buses PCI y USB, los datos actuales en cada uno de estos buses están disponibles en un subdirectorio bajo /proc/bus/ con el mismo nombre, tal como /proc/bus/pci/ .

Los subdirectorios y archivos disponibles dentro de /proc/bus/ varían dependiendo de los dispositivos conectados al sistema. Sin embargo, cada tipo de bus tiene al menos un directorio. Dentro de estos directorios de buses normalmente están, al menos, un subdirectorio con un nombre numérico, tal como 001, el cual contiene los archivos binarios.

Por ejemplo, el subdirectorio /proc/bus/usb/ contiene archivos que hacen un seguimiento de los diferentes dispositivos en cualquier bus USB, así como los controladores requeridos para su uso. El siguiente es un listado de ejemplo de un directorio /proc/bus/usb/

total 0
dr-xr-xr-x    1 root     root            0 May  3 16:25 001
-r--r--r--    1 root     root            0 May  3 16:25 devices
-r--r--r--    1 root     root            0 May  3 16:25 drivers

El directorio /proc/bus/usb/001/ contiene todos los dispositivos del primer bus USB y el archivo devices identifica el concentrador raíz USB en la tarjeta madre.

Lo siguiente es un ejemplo de un archivo /proc/bus/usb/devices:

T:  Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#=  1 Spd=12  MxCh= 2
B:  Alloc=  0/900 us ( 0%), #Int=  0, #Iso=  0
D:  Ver= 1.00 Cls=09(hub  ) Sub=00 Prot=00 MxPS= 8 #Cfgs=  1
P:  Vendor=0000 ProdID=0000 Rev= 0.00
S:  Product=USB UHCI Root Hub
S:  SerialNumber=d400
C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 1 Cls=09(hub  ) Sub=00 Prot=00 Driver=hub
E:  Ad=81(I) Atr=03(Int.) MxPS=   8 Ivl=255ms

5.3.3. /proc/driver/

Este directorio contiene información para drivers específicos que el kernel está utilizando.

rtc es un archivo habitual aquí, que proporciona la salida desde el controlador para el reloj del sistema (Real Time Clock (RTC)): el dispositivo que mantiene la hora mientras que el sistema está apagado. Un ejemplo de salida de datos desde /proc/driver/rtc sería similar a:

rtc_time        : 16:21:00
rtc_date        : 2004-08-31
rtc_epoch       : 1900
alarm           : 21:16:27
DST_enable      : no
BCD             : yes
24hr            : yes
square_wave     : no
alarm_IRQ       : no
update_IRQ      : no
periodic_IRQ    : no
periodic_freq   : 1024
batt_status     : okay

Para más información sobre RTC, refiérase a la siguiente documentación instalada:

/usr/share/doc/kernel-doc-<version>/Documentation/rtc.txt.

5.3.4. /proc/fs

Este directorio muestra qué sistemas de archivos están siendo exportados. Si está usando un servidor NFS, escriba cat /proc/fs/nfsd/exports para visualizar los sistemas de archivos que se comparten y los permisos acordados a esos sistemas de archivos. Para mayor información sobre archivos compartidos con NFS, consulte el Capítulo 9.

5.3.5. /proc/ide/

Este directorio contiene información sobre los dispositivos IDE del sistema. Cada canal IDE está representado como un directorio separado, tal como /proc/ide/ide0 y /proc/ide/ide1. Además, también está disponible un archivo drivers proporcionando el número de versión de los varios controladores usados en los canales IDE:

ide-floppy version 0.99.newide
ide-cdrom version 4.61
ide-disk version 1.18

Muchos chipsets también proporcionan un archivo en este directorio con datos adicionales referentes a las unidades conectadas a través de los canales. Por ejemplo, un chipset genérico Intel PIIX4 Ultra 33 produce el archivo /proc/ide/piix que le informará de si DMA o UDMA está o no habilitado para los dispositivos en los canales IDE:



                              Intel PIIX4 Ultra 33 Chipset.
------------- Primary Channel ---------------- Secondary Channel -------------
                 enabled                          enabled
------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------
DMA enabled:    yes              no              yes               no 
UDMA enabled:   yes              no              no                no 
UDMA enabled:   2                X               X                 X
UDMA
DMA
PIO

Al navegar en un directorio para un canal IDE, como ide0, otorga información adicional. El archivo channel proporciona el número de canal, mientras que el model indica el tipo de bus para el canal (tal como pci).

5.3.5.1. Directorios de dispositivos

Dentro de cada directorio de canal IDE hay un directorio de dispositivos. El nombre del directorio de dispositivos corresponde a la letra de la unidad en el directorio /dev/. Por ejemplo, la primera unidad IDE en ide0 sería hda.

NotaNota
 

Existe un enlace simbólico para cada uno de estos directorios de dispositivos en el directorio /proc/ide/.

Cada dispositivo, como un disco duro o un CD-ROM, tendrá en ese canal su propio directorio en el que están incluidas su propia recopilación de información y estadísticas. Los contenidos de esos directorios varían de acuerdo con el tipo de dispositivo conectado. Algunos de los archivos más útiles habituales en diferentes dispositivos incluyen:

  • cache — La caché del dispositivo.

  • capacity — La capacidad del dispositivo, en bloques de 512 bytes.

  • driver — El controlador y la versión usados para controlar el dispositivo.

  • geometry — La geometría física y lógica del dispositivo.

  • media — El tipo de dispositivo, como por ejemplo un disk.

  • model — El nombre del modelo del dispositivo.

  • settings — Recopilación de parámetros actuales del dispositivo. Este archivo usualmente contiene bastante información técnica útil. Un ejemplo de archivo settings para un disco duro IDE estándar, se vería similar a lo siguiente:

    name                value          min          max          mode
    ----                -----          ---          ---          ----
    acoustic            0              0            254          rw
    address             0              0            2            rw
    bios_cyl            38752          0            65535        rw
    bios_head           16             0            255          rw
    bios_sect           63             0            63           rw
    bswap               0              0            1            r
    current_speed       68             0            70           rw
    failures            0              0            65535        rw
    init_speed          68             0            70           rw
    io_32bit            0              0            3            rw
    keepsettings        0              0            1            rw
    lun                 0              0            7            rw
    max_failures        1              0            65535        rw
    multcount           16             0            16           rw
    nice1               1              0            1            rw
    nowerr              0              0            1            rw
    number              0              0            3            rw
    pio_mode            write-only     0            255          w
    unmaskirq           0              0            1            rw
    using_dma           1              0            1            rw
    wcache              1              0            1            rw

5.3.6. /proc/irq/

Este directorio se usa para configurar la afinidad de una IRQ con una CPU, lo que le permite conectar una IRQ particular a una sola CPU. De manera alternativa, puede evitar que una CPU manipule cualquier IRQ.

Cada IRQ tiene su propio directorio, permitiendo que cada IRQ sea configurada individualmente. El archivo /proc/irq/prof_cpu_mask es una máscara de bits que contiene los valores predeterminados para el archivo smp_affinity en el directorio IRQ. Los valores en smp_affinity especifican qué CPUs manipulan esa IRQ en particular.

Para más información sobre el directorio /proc/irq/refiérase a la siguiente información instalada:

/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt

5.3.7. /proc/net/

El directorio proporciona una visión exhaustiva de diversos parámetros y estadísticas de red. Cada directorio y archivo virtual dentro de este directorio describe aspectos sobre la configuración de la red en el sistema. Abajo se muestra un listado parcial del directorio /proc/net/:

5.3.8. /proc/scsi/

Este directorio es análogo al directorio /proc/ide/, sin embargo, es sólo para dispositivos SCSI conectados.

El archivo primario aquí es /proc/scsi/scsi, que contiene una lista de cada dispositivo SCSI reconocido. A partir de esta lista se puede obtener el tipo de dispositivo, así como también el nombre del modelo, fabricante, canal SCSI y el ID.

Por ejemplo, si un sistema contiene un CD-ROM SCSI, una unidad de cinta, un disco duro y un controlador RAID, este archivo se parecerá a:

Attached devices: 
Host: scsi1 Channel: 00 Id: 05 Lun: 00
  Vendor: NEC      Model: CD-ROM DRIVE:466 Rev: 1.06
  Type:   CD-ROM                           ANSI SCSI revision: 02
Host: scsi1 Channel: 00 Id: 06 Lun: 00
  Vendor: ARCHIVE  Model: Python 04106-XXX Rev: 7350
  Type:   Sequential-Access                ANSI SCSI revision: 02
Host: scsi2 Channel: 00 Id: 06 Lun: 00
  Vendor: DELL     Model: 1x6 U2W SCSI BP  Rev: 5.35
  Type:   Processor                        ANSI SCSI revision: 02
Host: scsi2 Channel: 02 Id: 00 Lun: 00
  Vendor: MegaRAID Model: LD0 RAID5 34556R Rev: 1.01
  Type:   Direct-Access                    ANSI SCSI revision: 02

Cada controlador SCSI usado por el sistema tiene su propio directorio en /proc/scsi/, que contiene archivos específicos para cada controlador SCSI usando ese controlador. En el ejemplo anterior, los directorios aic7xxx y megaraid están presentes, puesto que hay dos controladores en uso. Los archivos en cada uno de los directorios contienen típicamente un rango de direcciones de E/S, información de IRQ y estadísticas para el controlador SCSI particular usando ese controlador. Cada controlador puede remitir un tipo y cantidad de información diferente. El archivo del adaptador Adaptec AIC-7880 Ultra SCSI en este ejemplo produce una salida como la siguiente:

Adaptec AIC7xxx driver version: 5.1.20/3.2.4
Compile Options:
  TCQ Enabled By Default : Disabled
  AIC7XXX_PROC_STATS     : Enabled
  AIC7XXX_RESET_DELAY    : 5

Adapter Configuration:
           SCSI Adapter: Adaptec AIC-7880 Ultra SCSI host adapter
                           Ultra Narrow Controller
    PCI MMAPed I/O Base: 0xfcffe000
 Adapter SEEPROM Config: SEEPROM found and used.
      Adaptec SCSI BIOS: Enabled
                    IRQ: 30
                   SCBs: Active 0, Max Active 1,
                         Allocated 15, HW 16, Page 255
             Interrupts: 33726
      BIOS Control Word: 0x18a6
   Adapter Control Word: 0x1c5f
   Extended Translation: Enabled
Disconnect Enable Flags: 0x00ff
     Ultra Enable Flags: 0x0020
 Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 8
    Tagged Queue By Device array for aic7xxx host instance 1:
      {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
    Actual queue depth per device for aic7xxx host instance 1:
      {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}

Statistics:


(scsi1:0:5:0)
  Device using Narrow/Sync transfers at 20.0 MByte/sec, offset 15
  Transinfo settings: current(12/15/0/0), goal(12/15/0/0), user(12/15/0/0)
  Total transfers 0 (0 reads and 0 writes)
             < 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
   Reads:       0       0       0       0       0       0       0       0
  Writes:       0       0       0       0       0       0       0       0


(scsi1:0:6:0)
  Device using Narrow/Sync transfers at 10.0 MByte/sec, offset 15
  Transinfo settings: current(25/15/0/0), goal(12/15/0/0), user(12/15/0/0)
  Total transfers 132 (0 reads and 132 writes)
             < 2K      2K+     4K+     8K+    16K+    32K+    64K+   128K+
   Reads:       0       0       0       0       0       0       0       0
  Writes:       0       0       0       1     131       0       0       0

Esta salida revela la velocidad de transmisión a los dispositivos SCSI conectados al controlador basado en el canal ID, así como estadísticas detalladas referentes a la cantidad y tamaño de los archivos leídos o escritos por ese dispositivo. Por ejemplo, este controlador se está comunicando con el CD-ROM a 20 megabytes por segundo, mientras que la unidad de cinta sólo se está comunicando a 10 megabytes por segundo.

5.3.9. /proc/sys/

El directorio /proc/sys/ es diferente de otros en /proc/ porque no sólo proporciona información sobre el sistema pero también permite al administrador activar y desactivar inmediatamente características del kernel.

AtenciónAtención
 

Tenga mucho cuidado al cambiar la configuración de un sistema en producción usando los diversos archivos en el directorio /proc/sys/. La modificación del valor incorrecto puede dejar el kernel inestable, requiriendo que se reinicie el sistema.

Por esta razón, asegúrese de que las opciones sean válidas para ese archivo antes de intentar cambiar un valor en /proc/sys/.

Una buena forma de determinar si un archivo particular se puede configurar o si tan sólo está diseñado para proporcionar información, es listándolo con la opción -l en el intérprete de comandos de la shell. Si se puede escribir en el archivo, quizás podrá utilizarlo para configurar el kernel de algún modo. Por ejemplo, un listado parcial de /proc/sys/fs sería de la siguiente manera:

-r--r--r--    1 root     root            0 May 10 16:14 dentry-state
-rw-r--r--    1 root     root            0 May 10 16:14 dir-notify-enable
-r--r--r--    1 root     root            0 May 10 16:14 dquot-nr
-rw-r--r--    1 root     root            0 May 10 16:14 file-max
-r--r--r--    1 root     root            0 May 10 16:14 file-nr

En este listado, los archivos dir-notify-enable y file-max pueden escribirse y, por consiguiente, usarse para la configuración del kernel. Los otros archivos sólo proporcionan retroalimentación sobre las configuraciones actuales.

Para cambiar un valor en el archivo /proc/sys tiene que repetir el valor nuevo en el archivo. Por ejemplo, para habilitar la System Request Key en un kernel en ejecución, escriba el comando:

echo 1 > /proc/sys/kernel/sysrq

Esto cambiará el valor para sysrq de 0 (off) a 1 (on).

Unos cuantos archivos de configuración /proc/sys contienen más de un valor. Para enviar nuevos valores correctamente, coloque un espacio entre cada valor traspasado con el comando echo, como se ha hecho a continuación:

echo 4 2 45 > /proc/sys/kernel/acct

NotaNota
 

Cualquier cambio de configuración que haga mediante el comando echo desaparecerá cuando vuelva a iniciar el sistema. Para hacer que cambios en la configuración tengan efecto después que el sistema es reiniciado, consulte la Sección 5.4.

El directorio/proc/sys contiene directorios diferentes que controlan diferentes aspectos de la ejecución de un kernel.

5.3.9.1. /proc/sys/dev/

Este directorio proporciona parámetros para dispositivos particulares en el sistema. La mayoría de sistemas tienen al menos dos directorios cdrom y raid. Los kernels personalizados pueden tener otros directorios, tales como parport, que proporciona la habilidad de compartir un puerto paralelo entre múltiples controladores de dispositivo.

El directorio cdrom contiene un archivo llamado info, que revela algunos parámetros importantes del CD-ROM:

CD-ROM information, Id: cdrom.c 3.20 2003/12/17
 
drive name:             hdc
drive speed:            48
drive # of slots:       1
Can close tray:         1
Can open tray:          1
Can lock tray:          1
Can change speed:       1
Can select disk:        0
Can read multisession:  1
Can read MCN:           1
Reports media changed:  1
Can play audio:         1
Can write CD-R:         0
Can write CD-RW:        0
Can read DVD:           0
Can write DVD-R:        0
Can write DVD-RAM:      0
Can read MRW:           0
Can write MRW:          0
Can write RAM:          0

Este archivo se puede escanear con la finalidad de descubrir las cualidades de un CD-ROM desconocido. Si tiene a su disposición múltiples CD-ROMs en un sistema, cada dispositivo tendrá su propia columna de información.

Se pueden utilizar diversos archivos en /proc/sys/dev/cdrom, como autoclose y checkmedia, para controlar el CD-ROM del sistema. Use el comando echo para activar o desactivar estas características.

Si se compila el soporte RAID en el kernel, tendrá a su disposición un directorio /proc/sys/dev/raid/ con al menos dos archivos dentro del mismo: speed_limit_min y speed_limit_max. Estas configuraciones determinan la aceleración de los dispositivos RAID para tareas intensivas de E/S, tales como la resincronización de discos.

5.3.9.2. /proc/sys/fs/

Este directorio contiene un compendio de opciones y de información referente a varios aspectos del sistema de archivos, incluyendo la información de cuotas, manipulación del archivos, inode y dentry.

El directorio binfmt_misc se usa para proporcionar soporte del kernel para formatos binarios misceláneos.

Los archivos importantes en /proc/sys/fs/ incluyen:

  • dentry-state — Proporciona el estado del directorio de la caché. El archivo se vería de la siguiente manera:

    57411	52939	45	0	0	0

    El primer número revela el número total de las entradas de la caché del directorio, mientras que el segundo número visualiza el número de entradas inutilizadas. El tercero, le indica el número de segundos en que un directorio ha sido liberado y puede ser reclamado y el cuarto mide las páginas que han sido requeridas por el sistema en la actualidad. Los últimos dos números no están en uso y tan sólo visualizan ceros.

  • dquot-nr — Muestra el número máximo de entradas de cuota de disco cacheado.

  • file-max — Lista el número máximo de manejadores de archivos que el kernel puede asignar. Si incrementa el valor de este archivo puede solucionar los errores causados por la falta de manejadores de archivos disponibles.

  • file-nr — Lista el número de manejadores de archivos asignados, manipuladores de archivos usados, así como el número máximo de manejadores de archivos.

  • overflowgid y overflowuid — Define el ID de grupo establecido y el ID de usuario, respectivamente, para el uso con el sistema de archivos que tan sólo soporta los IDs de grupo y usuario de 16 bits.

  • super-max — Controla el número máximo de superbloques disponible.

  • super-nr — Visualiza el número actual de superbloques en uso.

5.3.9.3. /proc/sys/kernel/

Este directorio contiene una variedad de archivos de configuración diferentes que afectan directamente a la operación del kernel. Algunos de los archivos más importantes incluyen:

  • acct — Controla la suspensión del proceso de contabilización basado en el porcentaje de espacio libre disponible en el sistema de archivos conteniendo el registro (log). Por defecto, el archivo aparecerá de la siguiente manera:

    4	2	30

    El primer valor fija el porcentaje de espacio libre necesario para reanudar el proceso de inicio de sesión, mientras que el segundo valor indica el umbral del porcentaje de espacio libre cuando se suspende el inicio de sesión. El tercer valor fija el intervalo en segundos, en que el kernel interroga al sistema de archivos para ver si el inicio de sesión se suspende o continua.

  • cap-bound — Controla las configuraciones de las capability bounding, que proporcionan una lista de capacidades para cualquier proceso en el sistema. Si una capacidad no está listada aquí, ningún proceso, por muy privilegiado que sea éste, puede realizarlo. La idea inicial es hacer que el sistema sea más seguro asegurando que no acontezcan ciertas cosas, por lo menos llegados a un cierto nivel del proceso de arranque.

    Para una lista de los valores válidos para este archivo virtual, refiérase a la siguiente documentación instalada:

    /lib/modules/<kernel-version>/build/include/linux/capability.h.

  • ctrl-alt-del — Controla si [Ctrl]-[Alt]-[Delete] reiniciará el ordenador adecuadamente mediante el uso de init (0) o si forzará un rearranque inmediato sin la sincronización de los buffers modificados al disco (1).

  • domainname — Configura el nombre de dominio del sistema, tal como example.com.

  • exec-shield — Configura la característica Exec Shield del kernel. Exec Shield proporciona protección en contra de ciertos tipos de ataques de sobrecarga de la memoria intermedia.

    Hay dos valores posibles para este archivo virtual:

    • 0 — Inhabilita Exec Shield.

    • 1 — Habilita Exec Shield. Este es el valor predeterminado.

    ImportanteImportante
     

    Si un sistema está ejecutando aplicaciones de seguridad confidencial que se iniciaron mientras Exec Shield estaba desactivado, estas aplicaciones se deberan iniciar una vez más cuando Exec Shield esté habilitado nuevamente.

  • exec-shield-randomize — Habilita la ubicación aleatoria de varios elementos en memoria. Esto ayuda a impedir que atacantes potenciales puedan ubicar programas y demonios en memoria. Cada vez que un programa o demonio arranca, se coloca en un espacio de memoria diferente, nunca la dirección de memoria es estática o absoluta.

    Hay dos valores posibles para este archivo virtual:

    • 0 — Desactiva la aleatorización de Exec Shield. Esto puede ser útil para propósitos de depuración de aplicaciones.

    • 1 — Permite la aleatorización de Exec Shield. Este es el valor predeterminado. Nota: el archivo exec-shield también se debe colocar a 1 para que exec-shield-randomize esté activo.

  • hostname — Configura el nombre del sistema host, por ejemplo www.example.com.

  • hotplug — Configura la utilidad a utilizar cuando se detecta un cambio en la configuración del sistema. Principalmente se usa con USB y Cardbus PCI. El valor por defecto de /sbin/hotplug no debería ser cambiado a menos que esté probando un nuevo programa para cumplir con este papel.

  • modprobe — Fija la ubicación del programa a usar para cargar los módulos del kernel. El valor por defecto es /sbin/modprobe que significa que kmod lo llamará para cargar el módulo cuando un hilo del kernel llame kmod.

  • msgmax — Fija el tamaño máximo de cualquier mensaje enviado desde un proceso a otro y está fijado en 8192 bytes por defecto. Debería tener cuidado al incrementar este valor, ya que los mensajes en cola entre procesos son almacenados en una memoria de kernel sin memoria de intercambio (swap). Cualquier incremento en msgmax incrementará los requerimientos de RAM de su sistema.

  • msgmnb — Establece el número máximo de bytes en una única cola de mensajes. Por defecto, 16384.

  • msgmni — Establece el número máximo de identificadores de la cola de mensajes. Por defecto, 16.

  • osrelease — Lista el número de versión del kernel de Linux. Este archivo tan sólo puede ser alterado al cambiar la fuente del kernel y recompilarla.

  • ostype — Visualiza el tipo de sistema operativo. Por defecto, este archivo está configurado para Linux y este valor tan sólo puede ser cambiado al cambiar la fuente del kernel y recompilarla.

  • overflowgid y overflowuid — Define el ID de grupo establecido y el ID de usuario, respectivamente, para el uso con llamadas del sistema a arquitecturas que tan sólo soportan IDs de grupo y usuario de 16 bits.

  • panic — Define el número de segundos que el kernel pospone el arranque del sistema cuando se experimenta una emergencia en el kernel. Por defecto, el valor está establecido en 0, lo que deshabilita el rearranque automático tras una emergencia.

  • printk — Este archivo controla una variedad de configuraciones relacionadas con la impresión o los mensajes de error de registro. Cada mensaje de error remitido por el kernel tiene un nivel de registro asociado a éste que define la importancia del mensaje. Los valores de loglevel aparecen en el orden siguiente:

    • 0 — Emergencia del Kernel. No se puede utilizar el sistema.

    • 1 — Alerta del kernel. Se debe actuar inmediatamente.

    • 2 — La condición del kernel se considera crítica.

    • 3 — Condición de error general del kernel.

    • 4 — Condición de aviso general del kernel.

    • 5 — Nota del kernel de una condición normal pero significativa.

    • 6 — Mensaje informativo del kernel.

    • 7 — Mensajes de depuración del kernel.

    En el archivo printk aparecen cuatro valores:

    6     4     1     7

    Cada uno de estos valores define una regla diferente para tratar con los mensajes de error. El primer valor, llamado nivel de registro de consola, define la prioridad más baja de mensajes que se imprimirán en la consola. (Observe que, cuanto más baja sea ésta, más alto será el número de nivel de registro.) El segundo valor establece el nivel de registro por defecto para mensajes sin un nivel de registro explícito. El tercer valor establece el nivel de registro más bajo posible para el nivel de registro de la consola. El último valor establece el valor por defecto para el nivel de registro de la consola.

  • Directorio random — Lista un número de valores relacionados a la generación de números aleatorios para el kernel.

  • rtsig-max — Configura el número máximo de señales en tiempo real POSIX que el sistema podría haber puesto en cola en un momento dado. El valor por defecto es 1024.

  • rtsig-nr — Lista el número actual de señales POSIX en tiempo real que el kernel ha puesto en cola.

  • sem — Configura los valores de semáforo dentro del kernel. Un semáforo es un objeto System V IPC que es usado para controlar la utilización de un proceso particular.

  • shmall — Establece la cantidad total de memoria que se puede utilizar de una sola vez en el sistema, en bytes. Por defecto, este valor es 2097152.

  • shmmax — Establece el mayor tamaño de segmento de memoria compartida que permite el kernel, en bytes. Por defecto, este valor es 33554432. No obstante, el kernel soporta valores con mucho más margen.

  • shmmni — Establece el número máximo de segmentos de memoria compartida para el sistema completo, en bytes. Por defecto, este valor es 4096

  • sysrq — Activa la llave de petición de sistema, si este valor difiere del establecido por defecto 0.

    La llave de petición del sistema permite darle entradas inmediatas al kernel mediante combinaciones simples de teclas. Por ejemplo, se puede usar la llave de petición del sistema para apagar de inmediato el sistema o reiniciarlo, sincronizar todos los sistemas de archivos montados o volcar información importante a la consola. Para iniciar una llave de petición del sistema, escriba [Alt]-[SysRq]-[<system request code>]. Reemplace <system request code> con uno de los siguientes códigos de petición de sistema.

    • r — Inhabilita el modo sin formato para el teclado y lo configura a XLATE (un modo de teclado más limitado el cual no reconoce modificadores tales como [Alt], [Ctrl], o [Shift] para todas las teclas).

    • k — Mata todos los procesos activos en una consola virtual. También llamada llave de acceso segura (SAK), a menudo es utilizada para verificar que el indicador de comandos del inicio de conexión es generado desde init y no una copia troyana diseñada para capturar nombres de usuarios y contraseñas.

    • b — Reinicia el kernel sin primero desmontar los sistemas de archivos o sincronizar los discos conectados al sistema.

    • c — Apaga el sistema sin primero desmontar los sistemas de archivos o sincronizar los discos conectados al sistema.

    • o — Apaga el sistema.

    • s — Intenta sincronizar los discos conectados al sistema.

    • u — Intenta desmontar y volver a montar todos los sistemas de archivos como de sólo lectura.

    • p — Coloca en la salida todas las banderas y registros a la consola.

    • t — Coloca en la consola una lista de los procesos.

    • m — Coloca en la consola las estadísticas de la memoria.

    • 0 hasta 9 — Configura el nivel de registro para la consola.

    • e — Mata todos los procesos usando SIGTERM, excepto init.

    • i — Mata todos los procesos usando SIGKILL, excepto init.

    • l — Mata todos los procesos usando SIGKILL (incluyendo init). Después de emitir este código de llave de petición del sistema, el sistema no se puede utilizar.

    • h — Muestra texto de ayuda.

    Esta característica es útil cuando se utiliza un kernel de desarrollo o cuando se estén experimentando congelamientos del sistema.

    AtenciónAtención
     

    La característica de llave del petición del sistema es considerada un riesgo de seguridad porque una consola desatendida puede permitir a un atacante obtener acceso al sistema. Por esta razón, esta desactivada por defecto.

    Para obtener más información sobre la llave de petición del sistema, remítase a /usr/share/doc/kernel-doc-<version>/Documentation/sysrq.txt

  • sysrq-key — Define el código para la Llave de petición de sistema, (por defecto es 84).

  • sysrq-sticky — Define si la llave de petición del sistema es una combinación de llaves acorde. Los valores aceptados son como sigue:

    • 0[Alt]-[SysRq] y el código solicitado por el sistema debe ser presionado de forma simultánea. Este es el valor por defecto.

    • 1[Alt]-[SysRq] se deben presionar simultáneamente, pero el código de petición del sistema se puede presionar en cualquier momento antes de que se cumplan el número de segundos especificados en /proc/sys/kernel/sysrq-timer.

  • sysrq-timer — Configura el número máximo de segundos que pueden pasar antes de presentar el código de petición del sistema. El valor por defecto es 10.

  • tainted — Indica si hay un módulo no GPL cargado.

    • 0 — No se cargó ningún módulo no GPL.

    • 1 — Está cargado al menos un módulo sin una licencia GPL (incluyendo módulos sin licencia).

    • 2 — Al menos un módulo fué cargado a la fuerza con el comando insmod -f.

  • threads-max — Establece el número máximo de hilos que puede usar el kernel, con un valor por defecto de 2048.

  • version — Visualiza la fecha y la hora en los que el kernel fue compilado por última vez. El primer campo en este archivo, tal como #3, está relacionado con el número de veces que se ha construido un kernel desde la base de la fuente.

5.3.9.4. /proc/sys/net

Este directorio contiene diversos subdirectorios que tratan tópicos sobre redes. Las diferentes configuraciones en el momento en que el kernel fue compilado colocan diferentes directorios aquí, tales como appletalk, ethernet, ipv4, ipx y ipv6. Los administradores de sistemas podrán ajustar la configuración de la red en un sistema en funcionamiento alterando los archivos en estos directorios.

Debido a la amplia variedad de posibles opciones de red disponibles con Linux, tan sólo se comentarán los directorios /proc/sys/net/.

El directorio /proc/sys/net/core/ contiene una variedad de configuraciones que controlan la interacción entre el kernel y las capas de red. Los archivos más importantes son:

  • message_burst — Configura la cantidad de tiempo en décimas de segundos requeridos para escribir un mensaje nuevo de aviso. Este valor se utiliza para prevenir ataques de Rechazo de servicios (o Denial of Service, DoS) y la configuración por defecto es 50.

  • message_cost — Configura un costo en cada mensaje de aviso. Cuanto más alto es el valor de este archivo (por defecto 5), más probable es que el mensaje de aviso sea ignorado. También se utiliza para prevenir ataques de DoS.

    La idea de un ataque DoS es bombardear su sistema con peticiones que generen errores y llenen sus particiones con archivos logs o necesiten todos los recursos del sistema para manipular el registro de errores. Las configuraciones en message_burst y message_cost están diseñadas para ser modificadas basándose el riesgo aceptable del sistema contra la necesidad de un registro exhaustivo.

  • netdev_max_backlog — Establece el número máximo de paquetes permitido para hacer cola cuando una interfaz en particular recibe paquetes a una velocidad superior a la que el kernel puede procesarlos. El valor por defecto para este archivo es 300.

  • optmem_max — Configura el tamaño máximo de la memoria intermedia auxiliar por socket.

  • rmem_default — Establece el tamaño por defecto de la memoria intermedia de recepción del socket en bytes.

  • rmem_max — Establece el tamaño máximo de la memoria intermedia de recepción en bytes.

  • wmem_default — Establece el tamaño por defecto de la memoria intermedia de envíos del socket en bytes.

  • wmem_max — Establece el tamaño máximo de la memoria intermedia de envíos del socket en bytes.

El directorio /proc/sys/net/ipv4/ contiene configuraciones de red adicionales. Muchas de estas configuraciones, usadas en conjunto, son muy útiles para prevenir ataques al sistema o cuando se usa el sistema para que actúe como un enrutador.

AtenciónAtención
 

Un cambio erróneo en estos archivos puede afectar la conectividad remota del sistema.

Aquí tiene una lista de algunos de los archivos más importantes en el directorio /proc/sys/net/ipv4/:

  • icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate y icmp_timeexeed_rate — Establece la tasa máxima de paquetes ICMP a enviar, en centésimas de un segundo, para hosts bajo ciertas condiciones. Una configuración de 0 elimina cualquier retraso y no es una buena idea.

  • icmp_echo_ignore_all y icmp_echo_ignore_broadcasts — Permite que el kernel ignore paquetes ICMP ECHO desde cada host o tan sólo aquéllos que se originen desde direcciones broadcast y de destinatario múltiple, respectivamente. 0 permite que el kernel responda, mientras un 1 ignora los paquetes.

  • ip_default_ttl — Establece el Time To Live (TTL) predeterminado, que limita el número de saltos que un paquete puede efectuar antes de alcanzar su destino. Si incrementa este valor, la ejecución del sistema puede disminuir.

  • ip_forward — Permite interfaces en el sistema para reenviar paquetes a otro. Por defecto, este archivo está fijado en 0. Si se configura este valor a 1 activa el reenvío de paquetes.

  • ip_local_port_range — Especifica el rango de puertos a usar por TCP o UDP cuando se necesita un puerto local. El primer número es el puerto más bajo que puede utilizar, y el segundo especifica el puerto más alto. Cualquier sistema que se crea que necesitará más puertos que los predeterminados 1024 hasta 4999 debería usar el rango 32768 hasta 61000.

  • tcp_syn_retries — Proporciona un límite en el número de veces que el sistema retransmitirá un paquete SYN cuando se intenta establecer una conexión.

  • tcp_retries1 — Establece el número de retransmisiones permitidas que intentan responder una conexión de entrada. 3 por defecto.

  • tcp_retries2 — Establece el número de retransmisiones permitidas de paquetes TCP. 15 por defecto.

El archivo /usr/share/doc/kernel-doc-<version>/Documentation/networking/ip-sysctl.txt contiene la lista completa de archivos y opciones disponibles en el directorio /proc/sys/net/ipv4/.

Existe un número de otros directorios dentro del directorio /proc/sys/net/ipv4/ y cada uno cubre un aspecto diferente de la pila de red. El directorio /proc/sys/net/ipv4/conf/ permite a cada interfaz del sistema ser configurada en diferentes formas, incluyendo el uso de valores por defecto para dispositivos no configurados (en el subdirectorio /proc/sys/net/ipv4/conf/default/) y configuraciones que invalidan todas las configuraciones especiales (en el subdirectorio /proc/sys/net/ipv4/conf/all/).

El directorio /proc/sys/net/ipv4/neigh/ contiene configuraciones para la comunicación con un host que está conectado directamente al sistema (llamado un vecino de red) y también contiene configuraciones diferentes para sistemas que están a más de un salto de distancia.

Routing por encima de IPV4 también tiene su propio directorio, /proc/sys/net/ipv4/route/. A diferencia de conf/ y neigh/, el directorio /proc/sys/net/ipv4/route/ contiene especificaciones que aplican al enrutamiento con cualquier interfaz en el sistema. Muchas de estas configuraciones, tales como max_size, max_delay, y min_delay, están relacionadas con el control del tamaño de la caché de enrutamiento. Para limpiar la caché de enrutamiento, escriba cualquier valor al archivo flush.

Encontrará información adicional sobre estos directorios y los posibles valores de sus archivos de configuración en:

/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt

5.3.9.5. /proc/sys/vm/

Este directorio facilita la configuración del subsistema de memoria virtual (VM) del kernel de Linux. El kernel hace un uso extensivo e inteligente de la memoria virtual, conocida comunmente como espacio swap.

Los siguientes archivos se encuentran habitualmente en el directorio /proc/sys/vm:

  • block_dump — Configura la depuración de bloques de E/S cuando está activo. Se registran todas las operaciones de lectura/escritura o que impliquen ensuciar bloques hechas a archivos. Esto puede ser muy útil para efectos de diagnóstico del giros del disco para la conservación de la batería de las portátiles. Se pueden recuperar todas las salidas cuando block_dump está activado, mediante dmesg. El valor por defecto es 0.

    SugerenciaSugerencia
     

    Si block_dump está activado a la vez que la depuración del kernel, es prudente detener el demonio klogd, pues generará actividad del disco errónea causada por block_dump.

  • dirty_background_ratio — Configura la escritura de los datos sucios a este porcentaje total de memoria, a través del demonio pdflush. El valor por defecto es 10.

  • dirty_expire_centisecs — Define cuando los datos en memoria que se encuentran marcados como 'dirty' son lo suficientemente antiguos como para ser candidatos a escritura. Los datos en memoria por más tiempo que este intervalo, son escritos la próxima vez que se active un demonio pdflush. El valor por defecto es 3000, expresado en cientos de segundos.

  • dirty_ratio — Comienza la escritura activa de los datos sucios a este porcentaje total de memoria para el generador de datos sucios, a través de pdflush. El valor por defecto es 40.

  • dirty_writeback_centisecs — Define el intervalo entre activaciones del demonio pdflush, que escribe periódicamente los datos en memoria al disco. El valor por defecto es 500, expresado en cientos de segundos.

  • laptop_mode — Minimiza el número de veces que un disco duro necesita girar manteniendo los giros por el mayor tiempo posible, y por ende, conservando energía en las baterías de las portatiles. Esto inclementa la eficiencia al combinar todos los procesos futuros de E/S juntos, reduciendo la frecuencia de los giros. El valor por defecto es 0, pero se activa automáticamente en caso de que se use la bateria en la portátil.

    Este valor es controlado automáticamente por el demonio acpid una vez que se le notifica al usuario que la energía de la batería está activada. No se necesitan modificaciones o interacciones por parte del usuario si la portátil soporta la especificación de ACPI (Advanced Configuration and Power Interface).

    Para más información, consulte la siguiente documentación instalada:

    /usr/share/doc/kernel-doc-<version>/Documentation/laptop-mode.txt

  • lower_zone_protection — Determina qué tan agresivo es el kernel en defender las zonas de ubicación de memoria baja. Esto es efectivo cuando se utiliza con máquinas configuradas con el espacio de memoria highmem activado. El valor por defecto es 0, sin protección. Todos los demás valores enteros están en megabytes, y por lo tanto, la memoria lowmem está protegida de ser asignada por los usuarios.

    Para más información, consulte la siguiente documentación instalada:

    /usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt

  • max_map_count — Configura el número máximo de áreas de mapa de memoria que puede tener un proceso. En la mayoría de los casos, el valor por defecto de 65536 es apropiado.

  • min_free_kbytes — Obliga a que Linux VM (el gestor de memoria virtual) mantenga un número mínimo de kilobytes libres. El VM utiliza este número para computarizar un valor pages_min para cada zona lowmem en el sistema. El valor por defecto es en relación al número total de memoria en la máquina.

  • nr_hugepages — Lista el número actual de páginas hugetlb configuradas en el kernel.

    Para más información, consulte la siguiente documentación instalada:

    /usr/share/doc/kernel-doc-<version>/Documentation/vm/hugetlbpage.txt

  • nr_pdflush_threads — Indica el número de demonios pdflush que se están ejecutando actualmente. Este archivo es de sólo lectura, y no debería ser cambiado por el usuario. Bajo grandes cargas de E/S, el kernel incrementa el valor por defecto de dos.

  • overcommit_memory — Configura las condiciones bajo las cuales una petición de gran memoria es aceptada o rechazada. Están disponibles los siguientes tres modos:

    • 0 — El kernel lleva a cabo un manejo de memoria heurístico, estimando la cantidad de memoria disponible y suspendiendo las peticiones que son obviamente inválidas. Desafortunadamente, puesto que la memoria es asignada usando heurísticas en vez de un algoritmo preciso, esta configuración puede algunas veces ocasionar la sobrecarga de la memoria disponible en el sistema. Esta es la configuración por defecto.

    • 1 — El kernel no lleva a cabo ningún manejo de asignaciones extra de memoria. Con esta configuración, el potencial de sobrecarga de memoria se incrementa, pero también el rendimiento para las tareas intensivas de memoria (tales como aquellas ejecutadas por software científico).

    • 2 — El kernel suspende las peticiones de memoria que consumen todo el swap más el porcentaje de memoria física RAM especificado en /proc/sys/vm/overcommit_ratio. Esta configuración es mejor para aquellos que deseen menos riesgos de comprometer en exceso la memoria.

      NotaNota
       

      Esta configuración solamente es recomendada para los sistemas con áreas swap más grandes que la memoria física.

  • overcommit_ratio — Especifica el porcentaje de memoria física RAM considerada cuando /proc/sys/vm/overcommit_memory es configurado a 2. El valor por defecto es 50.

  • page-cluster — Establece el número de páginas leídas en un solo intento. El valor por defecto de 3 establecido en 16 páginas, es apropiado para la mayoría de los sistemas.

  • swappiness — Establece cuánto swap debería hacer una máquina. Mientras más alto es el número, ocurrirá mayor swapping. Por defecto, este valor es 60.

Toda la documentación basada en el kernel se puede encontrar en la ubicación local siguiente:

/usr/share/doc/kernel-doc-<version>/Documentation/, la cual contiene información adicional.

5.3.10. /proc/sysvipc

Este directorio contiene información sobre los recursos System V IPC. Los archivos de este directorio están relacionados con las llamadas al System V IPC de mensajes (msg), semáforos (sem), y memoria compartida (shm).

5.3.11. /proc/tty/

Este directorio contiene información sobre los dispositivos tty disponibles y usados actualmente en el sistema. Originalmente conocido como dispositivos teletipo, cualquier terminal de datos basado en carácteres se le conoce como dispositivos tty.

En Linux existen tres tipos diferentes de dispositivos tty. Los Dispositivos serial son usados con conexiones seriales, tales como un módem o usando un cable serial. Los Terminales virtuales crean las conexiones de consola comunes, tales como las consolas virtuales disponibles al pulsar [Alt]-[<F-key>] en la consola del sistema. Los Pseudo terminales crean una comunicación de dos sentidos que usan las aplicaciones de nivel alto, tales como XFree86. El archivo drivers es una lista de dispositivos tty actualmente en uso, como en el ejemplo siguiente:

serial               /dev/cua        5  64-127 serial:callout
serial               /dev/ttyS       4  64-127 serial
pty_slave            /dev/pts      136   0-255 pty:slave
pty_master           /dev/ptm      128   0-255 pty:master
pty_slave            /dev/ttyp       3   0-255 pty:slave
pty_master           /dev/pty        2   0-255 pty:master
/dev/vc/0            /dev/vc/0       4       0 system:vtmaster
/dev/ptmx            /dev/ptmx       5       2 system
/dev/console         /dev/console    5       1 system:console
/dev/tty             /dev/tty        5       0 system:/dev/tty
unknown              /dev/vc/%d      4    1-63 console

El archivo /proc/tty/driver/serial lista las estadísticas en uso y el estado de cada una de las líneas de serie tty.

Para que se puedan utilizar los dispositivos tty como dispositivos de red, el kernel de Linux reforzará la disciplina de línea en el dispositivo. Esto permite que el controlador coloque un tipo específico de encabezamiento con cada bloque de datos transmitido por el dispositivo, haciendo posible que el lado remoto de la conexión vea el bloque de datos como uno más en la línea de bloques de datos. SLIP y PPP son disciplinas de línea comunes y se usan a menudo para conectar sistemas en un enlace serial.

En el archivo ldiscs encontrará disciplinas de líneas registradas e información más detallada en el directorio ldisc.