Date post: | 20-Aug-2015 |
Category: |
Technology |
Upload: | josemanuelacostarendon |
View: | 1,789 times |
Download: | 2 times |
El sistema de archivos /proc The Linux kernel has two primary functions: to control access to physical devices on the computer and
to schedule when and how processes interact with these devices. The /proc/ directory — also called
the proc file system — contains a hierarchy of special files which represent the current state of the
kernel — allowing applications and users to peer into the kernel's view of the system.
Dentro del directorio /proc/, se puede encontrar una gran cantidad de información con detalles
sobre el hardware del sistema y cualquier proceso que se esté ejecutando actualmente. Además,
algunos de los archivos dentro del árbol de directorios /proc/ pueden ser manipulados por los
usuarios y aplicaciones para comunicar al kernel cambios en la configuración.
3.1. Sistema de archivos virtual En Linux, todo se guarda en archivos. La mayoría de usuarios están familiarizados con los dos
primeros tipos de archivos, de texto y binarios. Sin embargo, el directorio /proc/ contiene otro tipo
de archivos llamado archivo virtual. Por esta razón, es que a menudo se hace referencia a /proc/
como un sistema de archivos virtual.
Estos archivos virtuales poseen cualidades únicas. En primer lugar, la mayoría de ellos tienen un
tamaño de 0 bytes. Sin embargo, cuando se visualiza el archivo, éste puede contener una gran
cantidad de información. Además, la mayoría de configuraciones del tiempo y las fechas reflejan el
tiempo y fecha real, lo que es un indicativo de que están siendo constantemente modificados.
Virtual files such as /proc/interrupts, /proc/meminfo, /proc/mounts, and /proc/
partitions provide an up-to-the-moment glimpse of the system's hardware. Others, like the /
proc/filesystems file and the /proc/sys/ directory provide system configuration information and
interfaces.
Para propósitos organizacionales, los archivos que contienen información sobre un tópico similar se
agrupan en directorios virtuales y sub-directorios. Por ejemplo, /proc/ide/ contiene información
sobre los dispositivos IDE. De la misma forma, los directorios de procesos contienen información
sobre cada proceso ejecutándose en el sistema.
3.1.1. Visualización de archivos virtuales
Mediante el uso de los comandos cat, more, o less en los archivos dentro del directorio /proc/,
los usuarios pueden inmediatamente acceder una cantidad enorme de información acerca del
sistema. Por ejemplo, para desplegar el tipo de CPU que tiene un equipo, escriba cat /proc/
cpuinfo para recibir una salida similar a lo siguiente:
processor : 0
vendor_id : AuthenticAMD
cpu family : 5
model : 9
model name : AMD-K6(tm) 3D+
Processor stepping : 1 cpu
MHz : 400.919
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
/proc/apm
16
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips : 799.53
Como puede ver en el sistema de archivos /proc/, alguna información tiene sentido, mientras
que otras áreas aparecen en un código extraño. Por eso es que existen utilidades para extraer
información de los archivos virtuales y mostrarla en una forma útil. Ejemplos de estas utilidades
incluyen lspci, apm, free, y top.
Nota
Algunos archivos en el directorio /proc/ están configurados para que se puedan
leer sólo por el usuario root.
3.1.2. Cambiar archivos virtuales
Como regla general, la mayoría de los archivos virtuales dentro del directorio /proc solamente se
pueden leer. Sin embargo, algunos se pueden usar para ajustar la configuración del kernel. Esto
ocurre con los archivos del subdirectorio /proc/sys/.
To change the value of a virtual file, use the echo command and a greater than symbol (>) to redirect
the new value to the file. For example, to change the hostname on the fly, type:
echo www.example.com > /proc/sys/kernel/hostname
Otros archivos actúan como conmutadores binarios o boleanos. Si escribe cat /proc/sys/net/
ipv4/ip_forward verá el valor 0 o el valor 1. El valor 0 indica que el kernel no está realizando el
reenvio de paquetes. Si usa el comando echo para cambiar el valor del archivo ip_forward a 1, el
kernel activará inmediatamente el reenvio de paquetes.
Tip
Another command used to alter settings in the /proc/sys/ subdirectory is /sbin/
sysctl. For more information on this command, refer to Sección 3.4, “Uso del
comando sysctl”
For a listing of some of the kernel configuration files available in the /proc/sys/ subdirectory, refer
to Sección 3.3.9, “ /proc/sys/ ”.
3.2. Archivos de alto nivel en el sistema de archivos proc La siguiente lista expone algunos de los archivos más comunes y útiles que se encuentran en el
directorio /proc.
/proc/apm
17
Nota
En la mayoría de los casos, el contenido de los archivos que aparecen en esta
sección no será el mismo que el de aquellos instalados en su máquina. Esto se debe
a que la mayor parte de la información es específica al hardware en el que esté
ejecutando Red Hat Enterprise Linux para esta documentación.
3.2.1. /proc/apm
Este archivo proporciona información acerca del estado de la Administración de la energía avanzada
(Advanced Power Management, APM), y es usado por el comando apm. Si un sistema sin batería está
conectado a una fuente de poder AC, este archivo virtual se vería similar a:
1.16 1.2 0x07 0x01 0xff 0x80 -1% -1 ?
Al ejecutar el comando apm -v en tal sistema resulta en una salida similar a lo siguiente:
APM BIOS 1.2 (kernel driver 1.16ac) AC on-line, no system battery
Para sistemas que no usan una batería como fuente de poder, apm sólo será capaz de poner la
máquina en modo standby. El comando apm es mucho más útil en portátiles. Por ejemplo, la salida
siguiente es del comando cat /proc/apm en una portátil mientras que está conectado a una toma
de corriente:
1.16 1.2 0x03 0x01 0x03 0x09 100% -1 ?
Cuando la misma portátil está desconectada de su fuente de energía durante algunos minutos, los
contenidos del archivo apm cambiarán a algo como:
1.16 1.2 0x03 0x00 0x00 0x01 99% 1792 min
El comando apm -v muestra información más útil tal como la siguiente:
APM BIOS 1.2 (kernel driver 1.16) AC off-line, battery status high: 99% (1 day, 5:52)
3.2.2. /proc/buddyinfo
Este archivo se utiliza principalmente para diagnosticar problemas de fragmentación de memoria.
Utilizando el algoritmo buddy, cada columna representa el número de páginas de un cierto orden
(de un cierto tamaño) que están disponibles en un momento dado. Por ejemplo, para la zona DMA
(acceso directo a memoria), hay 90 de 2^(0*PAGE_SIZE) pedazos de memoria. De forma similar, hay
6 de 2^(1*PAGE_SIZE) pedazos, y 2 de 2^(2*PAGE_SIZE) pedazos de memoria disponibles.
La fila DMA hace referencia a los primeros 16 MB en un sistema, la fila HighMem referencia toda la
memoria mayor que 4 GB en un sistema, y la fila Normal se refiere a toda la memoria en medio de
las anteriores.
/proc/apm
18
Lo siguiente es un ejemplo de la salida típica de /proc/buddyinfo:
Node 0, zone
D MA
90
6
2
1
1
...
Node 0, zone Normal 1650 310 5 0 0 ... Node 0, zone HighMem 2 0 0 1 1 ...
3.2.3. /proc/cmdline
Este archivo muestra los parámetros pasados al kernel en el momento en que éste inicia. Un ejemplo
del archivo /proc/cmdline se vería como sigue?
ro root=/dev/VolGroup00/LogVol00 rhgb quiet 3
This output tells us the following:
ro
The root device is mounted read-only at boot time. The presence of ro on the kernel boot line
overrides any instances of rw.
root=/dev/VolGroup00/LogVol00
This tells us on which disk device or, in this case, on which logical volume, the root filesystem
image is located. With our sample /proc/cmdline output, the root filesystem image is located
on the first logical volume (LogVol00) of the first LVM volume group (VolGroup00). On a system
not using Logical Volume Management, the root file system might be located on /dev/sda1 or
/dev/sda2, meaning on either the first or second partition of the first SCSI or SATA disk drive,
depending on whether we have a separate (preceding) boot or swap partition on that drive.
Para obtener más información sobre LVM utilizado en Red Hat Enterprise Linux consulte http://
www.tldp.org/HOWTO/LVM-HOWTO/index.html.
rhgb
A short lowercase acronym that stands for Red Hat Graphical Boot, providing "rhgb" on the kernel
command line signals that graphical booting is supported, assuming that /etc/inittab shows
that the default runlevel is set to 5 with a line like this:
id:5:initdefault:
quiet
Indicates that all verbose kernel messages except those which are extremely serious should be
suppressed at boot time.
3.2.4. /proc/cpuinfo
Este archivo virtual identifica el tipo de procesador usado por su sistema. A continuación se muestra
un ejemplo de la salida típica de /proc/cpuinfo:
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
19
/proc/crypto
model name : Intel(R) Xeon(TM) CPU 2.40GHz
stepping : 7 cpu
MHz : 2392.371
cache size : 512 KB
physical id : 0
siblings : 2
runqueue : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts
acpi mmx fxsr sse sse2 ss ht tm
bogomips : 4771.02
• processor — Proporciona un número de identificación para cada procesador. En sistemas con un
único procesador, tan sólo verá un 0.
• cpu family — Authoritatively identifies the type of processor in the system. For an Intel-based
system, place the number in front of "86" to determine the value. This is particularly helpful for those
attempting to identify the architecture of an older system such as a 586, 486, or 386. Because some
RPM packages are compiled for each of these particular architectures, this value also helps users
determine which packages to install.
• model name — Le indica el nombre conocido del procesador, incluyendo el nombre de proyecto.
• cpu MHz — Le muestra la velocidad precisa en megahertz de ese procesador en particular en
milésimas.
• cache size — Le indica la cantidad de memoria de nivel 2 de la caché disponible en el
procesador.
• siblings — Lista el número de CPUs hermanos dentro del mismo CPU físico para las
arquitecturas que utilizan múltiples hilos (hyper-threading).
• flags — Define un número de cualidades diferentes del procesador, como la presencia de una
unidad de coma flotante (FPU) y la habilidad para procesar instrucciones MMX.
3.2.5. /proc/crypto
Este archivo lista todos los códigos de cifrado utilizados por el kernel de Linux, incluyendo detalles
adicionales para cada uno. Un ejemplo del archivo /proc/crypto se vería como sigue:
name : sha1
module : kernel
type : digest
blocksize : 64
digestsize : 20
name : md5
module : md5
type : digest
blocksize : 64
digestsize : 16
20
/proc/crypto
3.2.6. /proc/devices
Este archivo muestra los diversos dispositivos de carácteres y de bloque actualmente configurados
(no incluye dispositivos cuyos módulos no están cargados). Una salida de datos de ejemplo de este
archivo quedaría de la siguiente manera:
Character devices:
1 mem
4 /dev/vc/0
4 tty
4 ttyS
5 /dev/tty
5 /dev/console
5 /dev/ptmx
7 vcs
10 misc
13 input
29 fb
36 netlink
128 ptm
136 pts
180 usb
Block devices:
1 ramdisk
3 ide0
9 md
22 ide1
253 device-mapper
254 mdp
La salida de datos desde /proc/devices incluye el número mayor y el nombre del dispositivo y se
divide en dos secciones: Dispositivos de carácteres y Dispositivos de bloque.
Los Dispositivos de carácteres son similares a los Dispositivos de bloque, excepto por dos diferencias
básicas:
1. Los dispositivos de carácteres no requieren buffering. Los dispositivos de bloque disponen de una
memoria intermedia o buffer que les permite ordenar las peticiones antes de tratar con ellas. Esto
es muy importante para los dispositivos diseñados para guardar información — tales como discos
duros — porque la habilidad de ordenar la información antes de escribirla en el dispositivo permite
que ésta se almacene de forma más eficiente.
2. Los dispositivos de carácteres envían datos sin un tamaño preconfigurado. Los dispositivos de
bloque pueden enviar y recibir información en bloques de un tamaño particular, configurable por
dispositivo.
Para más información sobre los dispositivos refiérase a la siguiente documentación instalada:
/usr/share/doc/kernel-doc-<version>/Documentation/devices.txt
3.2.7. /proc/dma
Este archivo contiene una lista de los canales registrados DMA ISA en uso. Un ejemplo de los
archivos /proc/dma se vería similar a:
21
/proc/execdomains
4: cascade
3.2.8. /proc/execdomains
Este archivo lista los dominios de ejecución soportados en la actualidad por el kernel de Linux junto
con la gama de personalidades que soportan.
0-0 Linux [kernel]
Think of execution domains as the "personality" for an operating system. Because other binary
formats, such as Solaris, UnixWare, and FreeBSD, can be used with Linux, programmers can change
the way the operating system treats system calls from these binaries by changing the personality of
the task. Except for the PER_LINUX execution domain, different personalities can be implemented as
dynamically loadable modules.
3.2.9. /proc/fb
Este archivo contiene una lista de dispositivos frame buffer, con el número del dispositivo frame
buffer y su controlador. La salida de datos más común de /proc/fb para sistemas que contienen
dispositivos de frame buffer se ve similar a:
0 VESA VGA
3.2.10. /proc/filesystems
Este archivo muestra una lista de los tipos del sistema de archivos soportados actualmente por
el kernel. A continuación tiene un ejemplo de salida de datos genérica de un archivo /proc/
filesystems:
nodev sysfs
nodev rootfs
nodev bdev
nodev proc
nodev sockfs
nodev binfmt_misc
nodev usbfs
nodev usbdevfs
nodev futexfs
nodev tmpfs
nodev pipefs
nodev eventpollfs
nodev devpts
ext2
nodev ramfs
nodev hugetlbfs
iso9660
nodev mqueue
ext3
nodev rpc_pipefs
nodev autofs
22
/proc/execdomains
La primera columna significa si el sistema de archivos está montado en un dispositivo de bloque.
Aquellos que comiencen con nodev no están montados en un dispositivo. La segunda columna lista
el nombre de los sistemas de archivos soportados.
El comando mount circula por estos sistemas de archivos listados aquí cuando uno no está
especificado como un argumento.
3.2.11. /proc/interrupts
Este archivo graba el número de interrupciones por IRQ en la arquitectura x86. Un archivo estándar /
proc/interrupts es similar a lo siguiente:
CPU0
0: 80448940 XT-PIC timer 1: 174412 XT-PIC keyboard 2: 0 XT-PIC cascade 8: 1 XT-PIC rtc
10: 410964 XT-PIC eth0 12: 60330 XT-PIC PS/2 Mouse 14: 1314121 XT-PIC ide0 15: 5195422 XT-PIC ide1
NMI: 0 ERR: 0
Para una máquina con múltiples procesadores, el archivo aparecerá de forma diferente:
CPU0 CPU1
0: 1366814704 0 XT-PIC timer 1: 128 340 IO-APIC-edge keyboard 2: 0 0 XT-PIC cascade 8: 0 1 IO-APIC-edge rtc
12: 5323 5793 IO-APIC-edge PS/2 Mouse 13: 1 0 XT-PIC fpu 16: 11184294 15940594 IO-APIC-level Intel EtherExpress Pro 10/100 Ethernet 20: 8450043 11120093 IO-APIC-level megaraid 30: 10432 10722 IO-APIC-level aic7xxx 31: 23 22 IO-APIC-level aic7xxx
NMI: 0 ERR: 0
La primera columna se refiere al número de IRQ. Cada CPU del sistema tiene su propia columna y su
propio número de interrupciones por IRQ. La columna siguiente le indica el tipo de interrupción y la
última contiene el nombre del dispositivo que está localizado en ese IRQ.
Cada uno de los tipos de interrupciones vistos en este archivo, que son específicos para la
arquitectura, significan algo diferente. Los siguientes valores son comunes para las máquinas x86:
• XT-PIC — Interrupciones del ordenador AT antiguo que se han producido por un largo periodo de
tiempo.
• IO-APIC-edge — Señal de voltaje de las transacciones interrumpidas desde abajo hasta
arriba, creando una edge, en la que la interrupción IO-APIC-level, tan sólo se dan a partir de
procesadores 586 y superiores.
• IO-APIC-level — Genera interrupciones cuando su señal de voltaje se alza hasta que la señal
desciende nuevamente.
23
/proc/iomem
3.2.12. /proc/iomem
This file shows you the current map of the system's memory for each physical device:
00000000-0009fbff : System RAM
0009fc00-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000c7fff : Video ROM
000f0000-000fffff : System ROM
00100000-07ffffff : System RAM
00100000-00291ba8 : Kernel code
00291ba9-002e09cb : Kernel data
e0000000-e3ffffff : VIA Technologies, Inc. VT82C597 [Apollo VP3] e4000000-e7ffffff : PCI Bus
#01
e4000000-e4003fff : Matrox Graphics, Inc. MG A G200 AGP
e5000000-e57fffff : Matrox Graphics, Inc. MG A G200 AGP
e8000000-e8ffffff : PCI Bus #01
e8000000-e8ffffff : Matrox Graphics, Inc. M GA G200 AGP
ea000000-ea00007f : Digital Equipment Corporation DECchip 21140 [FasterNet]
ea000000-ea00007f : tulip ffff0000-ffffffff : reserved
La primera columna muestra los registros de memoria utilizados por cada uno de los diferentes
tipos de memoria. La segunda columna indica el tipo de memoria de dichos registros y muestra qué
registros de memoria son usados por el kernel dentro de la RAM del sistema o, si la tarjeta NIC tiene
múltiples puertos Ethernet, los registros de memoria asignados para cada puerto.
3.2.13. /proc/ioports
La salida de /proc/ioports proporciona una lista de las regiones de puertos registrados
actualmente utilizados para la comunicación de entrada y salida con un dispositivo. Este archivo
puede ser muy largo. A continuación se muestra un listado parcial:
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
0080-008f : dma page reg
00a0-00bf : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : ide1
01f0-01f7 : ide0
02f8-02ff : serial(auto)
0376-0376 : ide1
03c0-03df : vga+
03f6-03f6 : ide0
03f8-03ff : serial(auto)
0cf8-0cff : PCI conf1
d000-dfff : PCI Bus #01
e000-e00f : VIA Technologies, Inc. Bus Master IDE
e000-e007 : ide0
e008-e00f : ide1
e800-e87f : Digital Equipment Corporation DECchip 21140 [FasterNet]
e800-e87f : tulip
La primera columna le indica el rango de direcciones de los puertos de entrada y salida reservado
para el dispositivo listado en la segunda columna.
24
/proc/iomem
3.2.14. /proc/kcore
Este archivo representa la memoria física del sistema y se almacena en el formato de archivos base.
A diferencia de la mayoría de archivos /proc/, kcore muestra un tamaño. Este valor se da en bytes
y es igual al tamaño de la memoria física (RAM) utilizada más 4KB.
Sus contenidos están diseñados para que los examine un depurador, como por ejemplo gdb, y no es
legible para humanos.
Atención
Do not view the /proc/kcore virtual file. The contents of the file scramble text
output on the terminal. If this file is accidentally viewed, press Ctrl+C to stop the
process and then type reset to bring back the command line prompt.
3.2.15. /proc/kmsg
Este archivo se utiliza para mantener mensajes generados por el kernel. Luego, estos mensajes son
recogidos por otros programas, como por ejemplo /sbin/klogd o /bin/dmesg.
3.2.16. /proc/loadavg
Este archivo ofrece una vista de la carga promedio del procesador con respecto al sobretiempo de
CPU y de E/S, así como también datos adicionales utilizados por uptime y otros comandos. Una
muestra del archivo /proc/loadavg sería similar a lo siguiente:
0.20 0.18 0.12 1/80 11206
The first three columns measure CPU and IO utilization of the last one, five, and 15 minute periods.
The fourth column shows the number of currently running processes and the total number of
processes. The last column displays the last process ID used.
In addition, load average also refers to the number of processes ready to run (i.e. in the run queue,
waiting for a CPU share.
3.2.17. /proc/locks
Este archivo muestra los archivos bloqueados en la actualidad por el kernel. El contenido de este
archivo contiene datos internos de depuración y puede variar enormemente, dependiendo del uso del
sistema. Este es un ejemplo de archivo /proc/locks de un sistema ligeramente cargado:
1: POSIX
ADVISORY
WRITE 3568 fd:00:2531452 0 EOF
2: FLOCK ADVISORY WRITE 3517 fd:00:2531448 0 EOF 3: POSIX ADVISORY WRITE 3452 fd:00:2531442 0 EOF 4: POSIX ADVISORY WRITE 3443 fd:00:2531440 0 EOF 5: POSIX ADVISORY WRITE 3326 fd:00:2531430 0 EOF 6: POSIX ADVISORY WRITE 3175 fd:00:2531425 0 EOF 7: POSIX ADVISORY WRITE 3056 fd:00:2548663 0 EOF
A cada bloqueo se le asigna un único número al inicio de cada línea. La segunda columna se refiere
a la clase de bloqueo utilizado; FLOCK, haciendo referencia al estilo antiguo de bloqueos de archivos
25
/proc/mdstat
desde una llamada de sistema flock y POSIX que representa los bloqueos nuevos POSIX desde la
llamada de sistema lockf.
The third column can have two values: ADVISORY or MANDATORY. ADVISORY means that the lock
does not prevent other people from accessing the data; it only prevents other attempts to lock it.
MANDATORY means that no other access to the data is permitted while the lock is held. The fourth
column reveals whether the lock is allowing the holder READ or WRITE access to the file. The fifth
column shows the ID of the process holding the lock. The sixth column shows the ID of the file being
locked, in the format of MAJOR-DEVICE:MINOR-DEVICE:INODE-NUMBER . The seventh and eighth
column shows the start and end of the file's locked region.
3.2.18. /proc/mdstat
Este archivo contiene la información actual sobre las configuración de discos múltiples de RAID. Si su
sistema no contiene dicha configuración, el archivo /proc/mdstat será parecido a:
Personalities : read_ahead not set unused devices: <none>
This file remains in the same state as seen above unless a software RAID or md device is present. In
that case, view /proc/mdstat to find the current status of mdX RAID devices.
El archivo /proc/mdstat a continuación, muestra un sistema con su md0 configurado como un
dispositivo RAID 1, mientras está resincronizando los discos:
Personalities : [linear] [raid1] read_ahead 1024 sectors
md0: active raid1 sda2[1] sdb2[0] 9940 blocks [2/2] [UU] resync=1% finish=12.3min algorithm 2
[3/3] [UUU]
unused devices: <none>
3.2.19. /proc/meminfo
Este es uno de los archivos más utilizados en el directorio /proc/, ya que proporciona mucha
información importante sobre el uso actual de RAM en el sistema.
La muestra siguiente del archivo virtual /proc/meminfo es de un sistema con 256 MB de RAM y
512 MB de espacio de intercambio (swap):
MemTotal: 255908 kB
MemFree: 69936 kB
Buffers: 15812 kB
Cached: 115124 kB
SwapCached: 0 kB
Active: 92700 kB
Inactive: 63792 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 255908 kB
LowFree: 69936 kB
SwapTotal: 524280 kB
SwapFree: 524280 kB
Dirty: 4 kB
Writeback: 0 kB
26
/proc/mdstat
Mapped: 42236 kB
Slab: 25912 kB
Committed_AS: 118680 kB
PageTables: 1236 kB
VmallocTotal: 3874808 kB
VmallocUsed: 1416 kB
VmallocChunk: 3872908 kB
HugePages_Total: 0
HugePages_Free: 0
Hugepagesize: 4096 kB
La mayoría de la información que está aquí es usada por los comandos free, top y ps. De hecho,
la salida de datos del comando free es parecida en apariencia al contenido y estructura de /proc/
meminfo. Pero si lee directamente /proc/meminfo, verá más detalles:
• MemTotal — Cantidad total de RAM física en kilo bytes.
• MemFree — Cantidad de RAM física, en kilobytes, sin utilizar por el sistema.
• Buffers — Cantidad de RAM física, en kilobytes, usada para los archivos de memoria intermedia.
• Cached — Cantidad de RAM física en kilobytes usada como memoria caché.
• SwapCached — Cantidad de swap en kilobytes usada como memoria caché.
• Active — Cantidad total de memoria intermedia o caché de página, en kilobytes, que está en uso
activo. Esta es memoria que recientemente ha sido utilizada y que usualmente no se reclama para
otros propósitos.
• Inactive — La cantidad total de memoria intermedia o caché de página, en kilobytes, que está
libre y disponible. Esta es memoria que no se ha utilizado recientemente y que se puede reclamar
para otros propósitos.
• HighTotal y HighFree — Cantidad total de memoria libre, que no está mapeada en el espacio
del kernel. El valor HighTotal puede variar dependiendo del tipo de kernel utilizado.
• LowTotal y LowFree — Cantidad total de memoria libre implantada directamente en el espacio
del kernel. El valor LowTotal puede cambiar dependiendo del tipo de kernel utilizado.
• SwapTotal — Cantidad total de swap disponible, en kilobytes.
• SwapFree — Cantidad total de swap libre, en kilobytes.
• Dirty — La cantidad total de memoria, en kilobytes, esperando a ser escrita al disco.
• Writeback — Cantidad total de memoria, en kilobytes, que está siendo escrita activamente al
disco.
• Mapped — La cantidad total de memoria, en kilobytes, que se ha utilizado para asignar dispositivos,
archivos o bibliotecas, usando el comando mmap.
• Slab — Cantidad total de memoria, en kilobytes, usada por el kernel para hacer caché de
estructuras de datos para su propio uso.
• Committed_AS — Cantidad total de memoria, en kilobytes, estimadas para completar la carga
de trabajo. Este valor representa un escenario del peor caso, y también incluye a la memoria de
intercambio o swap.
27
/proc/misc
• PageTables — Cantidad total de memoria, en kilobytes, dedicada al nivel más bajo de la tabla de
páginas.
• VMallocTotal — Cantidad total memoria, en kilobytes, del espacio total de direcciones virtuales
asignadas.
• VMallocUsed — La cantidad total de memoria en kilobytes, de espacio de direcciones virtuales
utilizada.
• VMallocChunk — El bloque continuo de memoria más grande, en kilobytes, de espacio de
direcciones virtuales disponibles.
• HugePages_Total — El número total de paginas gigantes para el sistema. El número se deriva
dividiendo Hugepagesize por los megabytes puestos a un lado para las páginas gigantes
especificadas en /proc/sys/vm/hugetlb_pool. Esta estadística sólo aparece en las
arquitecturas x86, Itanium y AMD64.
• HugePages_Free — El número total de páginas gigantes disponibles para el sistema. Esta
estadística sólo aparece en las arquitecturas x86, Itanium y AMD64.
• Hugepagesize — El tamaño para cada unidad de hugepages en kilobytes. Por defecto, el valor
es 4096 KB en los kernels de un sólo procesador para las arquitecturas de 32 bits. Para los kernels
SMP, hugemem y AMD64, el valor por defecto es 2048 KB. Para las arquitecturas Itanium, el valor
por defecto es 262144 KB. Esta estadística solamente aparece en las arquitecturas x86, Itanium y
AMD64.
3.2.20. /proc/misc
Este archivo lista varios controladores registrados en el principal dispositivo de misceláneos, que es el
número 10:
63 device-mapper 175 agpgart 135 rtc 134 apm_bios
La primera columna es el número menor (minor) de cada dispositivo y la segunda le muestra el
controlador en uso.
3.2.21. /proc/modules
Este archivo muestra una lista de todos los módulos cargados en el sistema. Su contenido variará
dependiendo de la configuración y uso de su sistema, pero debería organizarse de forma similar al
siguiente ejemplo de salida del archivo /proc/modules:
Nota
Se ha vuelto a formatear este ejemplo en un formato legible. La mayoría de esta
información también se puede ver a través del comando /sbin/lsmod.
nfs 170109 0 - Live 0x129b0000
lockd 51593 1 nfs, Live 0x128b0000
nls_utf8 1729 0 - Live 0x12830000
28
/proc/misc
vfat 12097 0 - Live 0x12823000
fat 38881 1 vfat, Live 0x1287b000
autofs4 20293 2 - Live 0x1284f000
sunrpc 140453 3 nfs,lockd, Live 0x12954000
3c59x 33257 0 - Live 0x12871000
uhci_hcd 28377 0 - Live 0x12869000
md5 3777 1 - Live 0x1282c000
ipv6 211845 16 - Live 0x128de000
ext3 92585 2 - Live 0x12886000 jbd 65625 1 ext3, Live 0x12857000 dm_mod 46677 3 - Live 0x12833000
La primera columna contiene el nombre del módulo.
La segunda columna se refiere al tamaño de la memoria del módulo, en bytes.
La tercera columna lista cuántas instancias del módulo están cargadas actualmente. Un valor de cero
representa un módulo sin cargar.
La cuarta columna indica si el módulo depende de que otro módulo esté presente para poder
funcionar, y lista esos otros módulos.
La quinta columna lista en qué estado de carga se encuentra el módulo: Live, Loading o
Unloading son los únicos valores posibles.
La sexta columna lista el desplazamiento de memoria del kernel actual para el módulo cargado. Esta
información puede ser útil para propósitos de depuración o para herramientas de perfiles, tales como
oprofile.
3.2.22. /proc/mounts
Este archivo proporciona una lista de todos los montajes en uso por el sistema:
rootfs / rootfs rw 0 0
/proc /proc proc rw,nodiratime 0 0 none
/dev ramfs rw 0 0
/dev/mapper/VolGroup00-LogVol00 / ext3 rw 0 0
none /dev ramfs rw 0 0
/proc /proc proc rw,nodiratime 0 0
/sys /sys sysfs rw 0 0
none /dev/pts devpts rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
/dev/hda1 /boot ext3 rw 0 0
none /dev/shm tmpfs rw 0 0
none /proc/sys/fs/binfmt_misc binfmt_misc rw 0 0
sunrpc /var/lib/nfs/rpc_pipefs rpc_pipefs rw 0 0
La salida de datos que encontramos aquí se parece a /etc/mtab, excepto que /proc/mount está
más actualizada.
La primera columna especifica el dispositivo que está montado, la segunda revela el punto de
montaje, la tercera indica el tipo de sistema de archivos y la cuarta si está montado en modo sólo
lectura (ro) o sólo escritura (rw). La quinta y sexta columna son valores no válidos diseñados para
hacer coincidir el formato usado en /etc/mtab.
29
/proc/mtrr
3.2.23. /proc/mtrr
Este archivo se refiere a la actual Memory Type Range Registers (MTRRs), en uso dentro del
sistema. Si la arquitectura de su sistema soporta MTRRs, entonces el archivo /proc/mtrr será algo
parecido a:
reg00: base=0x00000000 ( 0MB), size= 256MB: write-back, count=1
reg01: base=0xe8000000 (3712MB), size= 32MB: write-combining, count=1
Los MTRRs se usan con la familia de procesadores Intel P6 (Pentium II y superior), y controlan el
acceso del procesador a los rangos de memoria. Cuando utilice una tarjeta de vídeo en un PCI o un
bus AGP, un archivo /proc/mtrr adecuadamente configurado puede incrementar el rendimiento en
un 150%.
La mayoría de las veces, por defecto este valor está configurado adecuadamente. Se puede
encontrar más información sobre la configuración manual de este archivo en la siguiente ubicación:
/usr/share/doc/kernel-doc-<version>/Documentation/mtrr.txt
3.2.24. /proc/partitions
El archivo contiene información sobre la asignación de bloques de particiones. Un ejemplo de este
archivo en un sistema básico se vería como:
major minor #blocks name
3 0 19531250 hda 3 1 104391 hda1 3 2 19422585 hda2
253 0 22708224 dm-0 253 1 524288 dm-1
La mayoría de la información no es relevante para los usuarios, a excepción de las siguientes líneas:
• major — Número principal (major number) del dispositivo con esta partición. El número principal
en nuestro ejemplo en /proc/partitions (3), corresponde con el dispositivo ide0 en /proc/
devices.
• minor — Número menor del dispositivo con esta partición. Separa las particiones en diferentes
dispositivos físicos y los relaciona con el número al final del nombre de la partición.
• #blocks — Lista el número de bloques de disco físicos contenidos en una partición particular.
• name — Nombre de la partición.
3.2.25. /proc/pci
El archivo contiene una lista completa de cada dispositivo PCI en su sistema. Dependiendo del
número de dispositivos PCI que posea, /proc/pci puede ser bastante largo. Un ejemplo de este
archivo en un sistema básico se vería como:
30
/proc/mtrr
Bus 0, device 0, function 0: Host bridge: Intel Corporation 440BX/ZX - 82443BX/ZX Host bridge
(rev 3). Master Capable. Latency=64. Prefetchable 32 bit memory at 0xe4000000 [0xe7ffffff].
Bus 0, device 1, function 0: PCI bridge: Intel Corporation 440BX/ZX - 82443BX/ZX AGP bridge
(rev 3). Master Capable. Latency=64. Min Gnt=128.
Bus 0, device 4, function 0: ISA bridge: Intel Corporation 82371AB PIIX4 ISA (rev 2).
Bus 0, device 4, function 1: IDE interface: Intel Corporation 82371AB PIIX4 IDE (rev 1).
Master Capable. Latency=32. I/O at 0xd800 [0xd80f].
Bus 0, device 4, function 2: USB Controller: Intel Corporation 82371AB PIIX4 USB (rev 1). IRQ
5. Master Capable. Latency=32. I/O at 0xd400 [0xd41f].
Bus 0, device 4, function 3: Bridge: Intel Corporation 82371AB PIIX4 ACPI (rev 2). IRQ 9.
Bus 0, device 9, function 0: Ethernet controller: Lite-On Communications Inc LNE100TX (rev
33). IRQ 5. Master Capable. Latency=32. I/O at 0xd000 [0xd0ff].
Bus 0, device 12, function 0: VGA compatible controller: S3 Inc. ViRGE/DX or /GX (rev 1).
IRQ 11. Master Capable. Latency=32. Min Gnt=4.Max Lat=255.
Esta salida de datos muestra una lista de todos los dispositivos PCI, en orden de bus, dispositivo y
función. Además de proporcionar el nombre y versión del dispositivo, esta lista le proporciona
información de IRQ detallada y así un administrador puede rápidamente dar un vistazo para verificar
conflictos.
Tip
Para obtener una versión más fácil de leer, escriba:
/sbin/lspci -vb
3.2.26. /proc/slabinfo
Este archivo le da información completa sobre el uso de memoria en el nivel slab. Los kernels Linux
superiores a la versión 2.2 usan slab pools para manejar memoria por encima del nivel de página. Los
objetos utilizados habitualmente, tienen sus propios slab pools.
En vez de analizar manualmente el largo archivo /proc/slabinfo, el programa /usr/bin/
slabtop muestra la información del caché slab del kernel en tiempo real. Este programa permite
configuraciones personalizadas, incluyendo el ordenamiento por columnas y la actualización de
pantallas.
Una captura de pantalla de /usr/bin/slabtop usualmente se parece a algo como:
Active / Total Objects (% used) : 133629 / 147300 (90.7%)
Active / Total Slabs (% used) : 11492 / 11493 (100.0%)
Active / Total Caches (% used) : 77 / 121 (63.6%)
Active / Total Size (% used) : 41739.83K / 44081.89K (94.7%)
Minimum / Average / Maximum Object : 0.01K / 0.30K / 128.00K
OBJS ACTIVE USE OBJ SIZE SLABS OBJ/SLAB CACHE SIZE NAME
44814 43159 96% 0.62K 7469 6 29876K ext3_inode_cache 36900 34614 93% 0.05K 492 75 1968K buffer_head 35213 33124 94% 0.16K 1531 23 6124K dentry_cache 7364 6463 87% 0.27K 526 14 2104K radix_tree_node 2585 1781 68% 0.08K 55 47 220K vm_area_struct 2263 2116 93% 0.12K 73 31 292K size-128 1904 1125 59% 0.03K 16 119 64K size-32 1666 768 46% 0.03K 14 119 56K anon_vma 1512 1482 98% 0.44K 168 9 672K inode_cache
31
/proc/stat
1464 1040 71% 0.06K 24 61 96K size-64
1320 820 62% 0.19K 66 20 264K filp 678 587 86% 0.02K 3 226 12K dm_io 678 587 86% 0.02K 3 226 12K dm_tio 576 574 99% 0.47K 72 8 288K proc_inode_cache 528 514 97% 0.50K 66 8 264K size-512 492 372 75% 0.09K 12 41 48K bio 465 314 67% 0.25K 31 15 124K size-256 452 331 73% 0.02K 2 226 8K biovec-1 420 420 100% 0.19K 21 20 84K skbuff_head_cache 305 256 83% 0.06K 5 61 20K biovec-4 290 4 1% 0.01K 1 290 4K revoke_table 264 264 100% 4.00K 264 1 1056K size-4096 260 256 98% 0.19K 13 20 52K biovec-16 260 256 98% 0.75K 52 5 208K biovec-64
Algunas de las estadísticas usadas más comúnmente en /proc/slabinfo que se incluyen en /
usr/bin/slabtop, abarcan:
• OBJS — El número total de objetos (bloques de memoria), incluyendo aquellos en uso (asignados),
y algunos adicionales que no estén en uso.
• ACTIVE — El número total de objetos (bloques de memoria) utilizados (asignados).
• USE — Porcentaje de los objetos totales que están activos. ((ACTIVE/OBJS)(100))
• OBJ SIZE — El tamalo de los objectos.
• SLABS — El número total de slabs.
• OBJ/SLAB — El número de objectos que caben en un slab.
• CACHE SIZE — El tamaño de caché del slab.
• NAME — Nombre del slab.
Para más información sobre el programa /usr/bin/slabtop, refiérase a la página man de
slabtop.
3.2.27. /proc/stat
Este archivo mantiene un registro de las diferentes estadísticas sobre el sistema desde que fue
reiniciado por última vez. El contenido de /proc/stat que puede ser muy largo, usualmente
empieza de la siguiente manera:
cpu 259246 7001 60190 34250993 137517 772 0
cpu0 259246 7001 60190 34250993 137517 772 0
intr 354133732 347209999 2272 0 4 4 0 0 3 1 1249247 0 0 80143 0 422626 5169433
ctxt 12547729
btime 1093631447
processes 130523
procs_running 1
procs_blocked 0
preempt 5651840
cpu 209841 1554 21720 118519346 72939 154 27168
cpu0 42536 798 4841 14790880 14778 124 3117
cpu1 24184 569 3875 14794524 30209 29 3130
cpu2 28616 11 2182 14818198 4020 1 3493
32
/proc/stat
cpu3 35350 6 2942 14811519 3045 0 3659
cpu4 18209 135 2263 14820076 12465 0 3373
cpu5 20795 35 1866 14825701 4508 0 3615
cpu6 21607 0 2201 14827053 2325 0 3334
cpu7 18544 0 1550 14831395 1589 0 3447
intr 15239682 14857833 6 0 6 6 0 5 0 1 0 0 0 29 0 2 0 0 0 0 0 0 0 94982 0 286812
ctxt 4209609
btime 1078711415
processes 21905
procs_running 1
procs_blocked 0
Algunas de las estadísticas más populares incluyen:
• cpu — Measures the number of jiffies (1/100 of a second for x86 systems) that the system has been
in user mode, user mode with low priority (nice), system mode, idle task, I/O wait, IRQ (hardirq),
and softirq respectively. The IRQ (hardirq) is the direct response to a hardware event. The IRQ
takes minimal work for queuing the "heavy" work up for the softirq to execute. The softirq runs at a
lower priority than the IRQ and therefore may be interrupted more frequently. The total for all CPUs
is given at the top, while each individual CPU is listed below with its own statistics. The following
example is a 4-way Intel Pentium Xeon configuration with multi-threading enabled, therefore
showing four physical processors and four virtual processors totaling eight processors.
• page — Número de páginas que el sistema ha cargado o suprimido del disco.
• swap — Número de páginas swap que el sistema ha introducido o sacado.
• intr — Número de interrupciones que ha experimentado el sistema.
• btime — Tiempo de arranque, medido por el número de segundos desde el 1 de enero de 1970,
conocido con el nombre de epoch.
3.2.28. /proc/swaps
Este archivo mide el espacio swap y su uso. Para un sistema con tan sólo una partición de espacio
swap, la salida de datos de /proc/swap será similar a lo siguiente:
Filename
Type
Size
Used
Priority
/dev/mapper/VolGroup00-LogVol01 partition 524280 0 -1
Mientras que alguna de esta información se puede encontrar en otros archivos en el directorio /
proc/, /proc/swap proporciona una instantánea de cada nombre de archivo swap, el tipo de
espacio swap, el tamaño total y la cantidad de espacio en uso (en kilobytes). La columna de prioridad
es útil cuando se usan múltiples archivos de espacio de intercambio. Cuanto más baja es la prioridad,
más probable es que se use el archivo de intercambio.
3.2.29. /proc/sysrq-trigger
Using the echo command to write to this file, a remote root user can execute most System Request
Key commands remotely as if at the local terminal. To echo values to this file, the /proc/sys/
kernel/sysrq must be set to a value other than 0. For more information about the System Request
Key, refer to Sección 3.3.9.3, “ /proc/sys/kernel/ ”.
Aún cuando es posible escribir a este archivo, no se puede leer, ni siquiera por el usuario root.
33
/proc/uptime
3.2.30. /proc/uptime
El archivo contiene información sobre el tiempo que lleva encendido el sistema desde el último
reinicio. La salida de datos de /proc/uptime es mínima:
350735.47 234388.90
El primer número le indica el número total de segundos que el sistema ha estado en funcionamiento.
El segundo indica cuánto de ese tiempo, también en segundos, la máquina ha estado inactiva.
3.2.31. /proc/version
Este archivo muestra las versión del kernel de Linux y gcc en uso, así como la versión de Red Hat
Enterprise Linux instalada en el sistema:
Linux version 2.6.8-1.523 ([email protected]) (gcc version 3.4.1 20040714 \ (Red Hat
Enterprise Linux 3.4.1-7)) #1 Mon Aug 16 13:27:03 EDT 2004
Esta información se usa para diversos propósitos, incluyendo la aportación de datos de la versión en
el intérprete de comandos de registro estándar.
3.3. Directorios en /proc/ Grupos comunes de información referente al kernel agrupado en directorios y subdirectorios en /
proc/.
3.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
These directories are called process directories, as they are named after a program's process ID and
contain information specific to that process. The owner and group of each process directory is set to
the user running the process. When the process is terminated, its /proc/ process directory vanishes.
Cada uno de los directorios de procesos contiene los siguientes archivos:
• cmdline — Contiene el comando que se ejecutó cuando se arrancó el proceso.
• cwd — Enlace simbólico al directorio actual en funcionamiento para el proceso.
• environ — Le da una lista de variables de entorno para el proceso. La variable de entorno viene
dada toda en mayúsculas y el valor en minúsculas.
34
/proc/uptime
• exe — Enlace simbólico al ejecutable de este proceso.
• fd — Directorio que contiene todos los descriptores de archivos para un proceso en particular.
Vienen dados en enlaces numerados:
total 0
lrwx------ 1 root root 64 May 8 11:31 0 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 1 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 2 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 3 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 4 -> socket:[7774817] lrwx------ 1 root root 64 May 8 11:31 5 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 6 -> socket:[7774829] lrwx------ 1 root root 64 May 8 11:31 7 -> /dev/ptmx
• maps — Contiene mapas de memoria para los diversos ejecutables y archivos de bibliotecas
asociados con este proceso. Este archivo puede ser bastante largo, dependiendo de la complejidad
del proceso. Una muestra de la salida de datos desde el proceso sshd empezaría de la siguiente
manera:
08048000-08086000 r-xp 00000000 03:03 391479 /usr/sbin/sshd
08086000-08088000 rw-p 0003e000 03:03 391479 /usr/sbin/sshd
08088000-08095000 rwxp 00000000 00:00 0
40000000-40013000 r-xp 0000000 03:03 293205 /lib/ld-2.2.5.so
40013000-40014000 rw-p 00013000 03:03 293205 /lib/ld-2.2.5.so
40031000-40038000 r-xp 00000000 03:03 293282 /lib/libpam.so.0.75
40038000-40039000 rw-p 00006000 03:03 293282 /lib/libpam.so.0.75
40039000-4003a000 rw-p 00000000 00:00 0
4003a000-4003c000 r-xp 00000000 03:03 293218 /lib/libdl-2.2.5.so
4003c000-4003d000 rw-p 00001000 03:03 293218 /lib/libdl-2.2.5.so
• mem — Memoria del proceso.
• root — Enlace al directorio root del proceso.
• stat — Estado del proceso.
• statm — Estado de la memoria en uso por el proceso. Ejemplo de archivos statm:
263 210 210 5 0 205 0
Las siete columnas se relacionan a diferentes estadísticas de memoria para el proceso.
Dependiendo de como se visualizan, de derecha a izquierda, remiten diferentes aspectos de la
memoria utilizada:
1. Tamaño total del programa, en kilobytes.
2. Tamaño de las porciones de memoria, en kilobytes.
3. Número de páginas compartidas.
4. Número de páginas que son código.
5. Número de páginas de datos/pila.
35
/proc/bus/
6. Número de páginas de bibliotecas.
7. Número de páginas sucias.
• status — Proporciona el estado del proceso en una forma mucho más legible que stat o statm.
Un ejemplo de salida de datos de sshd se vería similar a:
Name: sshd
State: S (sleeping)
Tgid: 797
Pid: 797
PPid: 1
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 32
Groups:
VmSize: 3072 kB
VmLck: 0 kB
VmRSS: 840 kB
VmData: 104 kB
VmStk: 12 kB
VmExe: 300 kB
VmLib: 2528 kB
SigPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 8000000000001000
SigCgt: 0000000000014005
CapInh: 0000000000000000
CapPrm: 00000000fffffeff
CapEff: 00000000fffffeff
La información en esta salida incluye el nombre y ID del proceso, el estado (tal como S
(sleeping) o R (running)), ID del usuario/grupo ejecutando el proceso y detalles sobre el uso
de la memoria.
3.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.
3.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.
36
/proc/bus/
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
3.3.3. /proc/driver/
Este directorio contiene información para drivers específicos que el kernel está utilizando.
A common file found here is rtc which provides output from the driver for the system's Real Time
Clock (RTC), the device that keeps the time while the system is switched off. Sample output from /
proc/driver/rtc looks like the following:
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.
3.3.4. /proc/fs
This directory shows which file systems are exported. If running an NFS server, typing cat /proc/
fs/nfsd/exports displays the file systems being shared and the permissions granted for those file
37
/proc/ide/
systems. For more on file system sharing with NFS, refer to Capítulo 19, Sistema de archivos de red
(NFS).
3.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 ------
D MA enabled: yes no yes no UDMA enabled: yes no no no UDMA enabled: 2 X X X UD MA D MA 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).
3.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.
Nota
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.
38
/proc/ide/
• 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
3.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
39
/proc/net/
3.3.7. /proc/net/
This directory provides a comprehensive look at various networking parameters and statistics. Each
directory and virtual file within this directory describes aspects of the system's network configuration.
Below is a partial list of the /proc/net/ directory:
• arp — Lists the kernel's ARP table. This file is particularly useful for connecting a hardware address
to an IP address on a system.
• Directorio atm/ — Los archivos dentro de este directorio contienen las configuraciones de
Asynchronous Transfer Mode (ATM) y estadísticas. Este directorio es principalmente usado con
redes ATM y tarjetas ADSL.
• dev — Lista los diferentes dispositivos de red configurados en el sistema, complementado con
estadísticas de transmisión y recepción. Este archivo le indica el número de paquetes que cada
interfaz ha enviado y recibido, el número de paquetes entrantes y salientes, número de errores
vistos, el número de paquetes abandonados y mucho más.
• dev_mcast — Lista los grupos multicast Layer2 en los que cada dispositivo esté escuchando.
• igmp — Lista las direcciones IP con destinatarios múltiples (multicast) a las que el sistema se ha
incorporado.
• ip_conntrack — Lista las conexiones de red para las máquinas que están reenviando
conexiones IP.
• ip_tables_names — Lista los tipos de iptables en uso. Este archivo sólo está presente si
iptables esta activo en el sistema y contiene uno o más de los siguientes valores: filter,
mangle o nat.
• ip_mr_cache — Lista de la caché de routing de múltiple destinatario.
• ip_mr_vif — Lista las interfaces virtuales de múltiple destinatario (multicast).
• netstat — Contiene una amplia colección de estadísticas de red, incluyendo la temporización
TCP, los cookies enviados y recibidos y mucho más.
• psched — Lista de parámetros de planificación global del paquete.
• raw — Lista las estadísticas de dispositivo brutos (raw).
• route — Lists the kernel's routing table.
• rt_cache — Contiene la caché de ruta actual.
• snmp — Lista de los datos del protocolo Simple Network Management Protocol (SNMP) para varios
protocolos de red en uso.
• sockstat — Proporciona estadísticas de socket.
• tcp — Contiene información detallada del socket TCP.
• tr_rif — Lista la tabla de enrutamiento de token ring RIF.
• udp — Contiene información detallada del socket UDP.
40
/proc/net/
• unix — Lista sockets de dominio UNIX.
• wireless — Lista datos de la interfaz de radio.
3.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
Each SCSI driver used by the system has its own directory within /proc/scsi/, which contains files
specific to each SCSI controller using that driver. From the previous example, aic7xxx/ and
megaraid/ directories are present, since two drivers are in use. The files in each of the directories
typically contain an I/O address range, IRQ information, and statistics for the SCSI controller using that
41
/proc/sys/
driver. Each controller can report a different type and amount of information. The Adaptec AIC-7880
Ultra SCSI host adapter's file in this example system produces the following output:
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.
3.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.
42
/proc/sys/
Atenció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
Nota
Any configuration changes made using the echo command disappear when the
system is restarted. To make configuration changes take effect after the system is
rebooted, refer to Sección 3.4, “Uso del comando sysctl”.
El directorio/proc/sys contiene directorios diferentes que controlan diferentes aspectos de la
ejecución de un kernel.
43
/proc/sys/
3.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.
Various files in /proc/sys/dev/cdrom, such as autoclose and checkmedia, can be used to
control the system's CD-ROM. Use the echo command to enable or disable these features.
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.
3.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:
44
/proc/sys/
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.
3.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.
45
/proc/sys/
• ctrl-alt-del — Controls whether Ctrl+Alt+Delete gracefully restarts the computer using
init (0) or forces an immediate reboot without syncing the dirty buffers to disk (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.
Importante
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 es
16384.
• msgmni — Establece el número máximo de identificadores de la cola de mensajes. Por defecto, 16.
46
/proc/sys/
• 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.
47
/proc/sys/
• 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— Sets the total amount of shared memory pages that can be used at one time, system-
wide. By default, this value is 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.
The System Request Key allows immediate input to the kernel through simple key combinations.
For example, the System Request Key can be used to immediately shut down or restart a system,
sync all mounted file systems, or dump important information to the console. To initiate a System
Request Key, type Alt+SysRq+ <system request code> . Replace <system request
code> with one of the following system request codes:
• 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 se utiliza 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.
48
/proc/sys/
• 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ó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.
Refer to /usr/share/doc/kernel-doc-<version>/Documentation/sysrq.txt for more
information about the System Request Key.
• 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 and the system request code must be pressed simultaneously. This is the
default value.
• 1 — Alt+SysRq must be pressed simultaneously, but the system request code can be pressed
anytime before the number of seconds specified in /proc/sys/kernel/sysrq-timer
elapses.
• 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.
3.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 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.
49
/proc/sys/
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.
The idea of a DoS attack is to bombard the targeted system with requests that generate errors and
fill up disk partitions with log files or require all of the system's resources to handle the error logging.
The settings in message_burst and message_cost are designed to be modified based on the
system's acceptable risk versus the need for comprehensive logging.
• 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 de 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ó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.
50
/proc/sys/
• 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 llamado
/usr/share/doc/kernel-doc-<version>/Documentation/networking/ ip-sysctl.txt
contiene una 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.
Enrutamiento 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 tal 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:
51
/proc/sys/
/usr/share/doc/kernel-doc-<version>/Documentation/filesystems/proc.txt
3.3.9.5. /proc/sys/vm/
This directory facilitates the configuration of the Linux kernel's virtual memory (VM) subsystem. The
kernel makes extensive and intelligent use of virtual memory, which is commonly referred to as swap
space.
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.
Tip
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
52
/proc/sys/
• 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.
Nota
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.
53
/proc/sysvipc/
• 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/, which contains additional
information.
3.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).
3.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.
In Linux, there are three different kinds of tty devices. Serial devices are used with serial connections,
such as over a modem or using a serial cable. Virtual terminals create the common console
connection, such as the virtual consoles available when pressing Alt+<F-key> at the system
console. Pseudo terminals create a two-way communication that is used by some higher level
applications, such as XFree86. The drivers file is a list of the current tty devices in use, as in the
following example:
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.
54
/proc/sysvipc/
3.3.12. /proc/<PID>/
Out of Memory (OOM) refers to a computing state where all available memory, including swap space,
has been allocated. When this situation occurs, it will cause the system to panic and stop functioning
as expected. There is a switch that controls OOM behavior in /proc/sys/vm/panic_on_oom.
When set to 1 the kernel will panic on OOM. A setting of 0 instructs the kernel to call a function named
oom_killer on an OOM. Usually, oom_killer can kill rogue processes and the system will survive.
The easiest way to change this is to echo the new value to /proc/sys/vm/panic_on_oom.
# cat /proc/sys/vm/panic_on_oom
1
# echo 0 > /proc/sys/vm/panic_on_oom
# cat /proc/sys/vm/panic_on_oom
0
It is also possible to prioritize which processes get killed by adjusting the oom_killer score. In /
proc/<PID>/ there are two tools labelled oom_adj and oom_score. Valid scores for oom_adj are
in the range -16 to +15. To see the current oom_killer score, view the oom_score for the process.
oom_killer will kill processes with the highest scores first.
This example adjusts the oom_score of a process with a PID of 12465 to make it less likely that
oom_killer will kill it.
# cat /proc/12465/oom_score
79872
# echo -5 > /proc/12465/oom_adj
# cat /proc/12465/oom_score
78
There is also a special value of -17, which disables oom_killer for that process. In the example
below, oom_score returns a value of 0, indicating that this process would not be killed.
# cat /proc/12465/oom_score
78
# echo -17 > /proc/12465/oom_adj
# cat /proc/12465/oom_score
0
A function called badness() is used to determine the actual score for each process. This is done by
adding up 'points' for each examined process. The process scoring is done in the following way:
1. The basis of each process's score is its memory size.
2. The memory size of any of the process's children (not including a kernel thread) is also added to
the score
3. The process's score is increased for 'niced' processes and decreased for long running processes.
55
Uso del comando sysctl
4. Processes with the CAP_SYS_ADMIN and CAP_SYS_RAWIO capabilities have their scores
reduced.
5. The final score is then bitshifted by the value saved in the oom_adj file.
Thus, a process with the highest oom_score value will most probably be a non-priviliged, recently
started process that, along with its children, uses a large amount of memory, has been 'niced', and
handles no raw I/O.
3.4. Uso del comando sysctl El comando /sbin/sysctl es usado para visualizar, configurar y automatizar configuraciones del
kernel en el directorio /proc/sys/.
Para tener una vista rápida de todas las variables configurables en el directorio /proc/sys/, escriba
el comando /sbin/sysctl -a como root. Esto creará una lista grande y exhaustiva, de la cual le
mostramos un pequeño parte:
net.ipv4.route.min_delay = 2 kernel.sysrq = 0 kernel.sem = 250 32000 32 128
Esta es la misma información que vería si echara un vistazo a cada uno de los archivos
individualmente. La única diferencia es la localización del archivo. Por ejemplo, el archivo /proc/
sys/net/ipv4/route/min_delay está representado por net.ipv4.route.min_delay, con las
barras oblicuas del directorio sustituídas por puntos y la porción asumida proc.sys.
El comando sysctl se puede usar en vez de echo para asignar valores a los archivos en los que se
puede escribir en el directorio /proc/sys/ . Por ejemplo, en vez de usar el comando
echo 1 > /proc/sys/kernel/sysrq
utilice el comando sysctl equivalente como se muestra:
sysctl -w kernel.sysrq="1"
kernel.sysrq = 1
A pesar de que es muy útil durante las pruebas el poder rápidamente efectuar configuraciones de
valores simples en /proc/sys/, esto no funciona bien en un ambiente de producción puesto que las
configuraciones especiales en /proc/sys/ se pierden cuando se vuelve a arrancar el sistema. Para
conservar las configuraciones personalizadas, añádalas al archivo /etc/sysctl.conf.
Cada vez que el sistema arranque, el programa init ejecuta el script /etc/rc.d/rc.sysinit.
Este script contiene un comando para ejecutar sysctl mediante el uso de /etc/sysctl.conf
para determinar los valores pasados al kernel. Cualquier valor añadido a /etc/sysctl.conf surtirá
efecto cada vez que el sistema arranque.
3.5. Recursos adicionales A continuación están las fuentes adicionales de información sobre el sistema de archivos proc.
56
Uso del comando sysctl
3.5.1. Documentación instalada
Algunas de la mejor documentación sobre el archivo proc está instalada por defecto en el
sistema.
• /usr/share/doc/kernel-doc-
<version>/Documentation/filesystems/proc.txt — Contains assorted, but
limited, information about all aspects of the /proc/ directory.
• /usr/share/doc/kernel-doc-<version>/Documentation/sysrq.txt — An
overview of
System Request Key
options.
• /usr/share/doc/kernel-doc-<version>/Documentation/sysctl/ — A
directory containing a variety of sysctl tips, including modifying values that
concern the kernel (kernel.txt), accessing file systems (fs.txt), and virtual
memory use (vm.txt).
• /usr/share/doc/kernel-doc-
<version>/Documentation/networking/ip- sysctl.txt — A
detailed overview of IP networking options.
3.5.2. Sitios web útiles
• http://www.linuxhq.com/ — Este sitio mantiene una base de datos completa de fuentes,
parches y documentación para varias versiones del kernel de Linux.