El directorio /proc o sistema de archivos proc (process filesystem) contiene una jerarquía de archivos (no cualquier tipo de archivos, sino archivos virtuales) que nos muestran el estado actual del kernel. Esta es la forma en que las aplicaciones y usuarios pueden tener una vista actualizada del estado del sistema.

El /proc se puede considerar un pseudo-filesystem, pues no es un sistema de archivos real y no consume almacenamiento, solo memoria.

El /proc de Linux es diferente al de otros Unix, pues a diferencia de Solaris o BSD, lo exiente para incluir otra información que no es propia de los procesos. Dentro del /proc de Linux encontraremos información acerca de cada proceso que se está ejecutando en el sistema así también como detalles del hardware del sistema.

proc

A continuación veremos algunos archivosbastante útiles del /proc del cual podremos obtener algo de información.

  • /proc/buddyinfo

Util para diagnostigar problemas de fragmentación de memoria. Cada columna representa el número de páginas disponibles en un momento dado.

$ cat /proc/buddyinfo
Node 0, zone      DMA      4      4      3      3      2      2      2      1      1      1      1
Node 0, zone   Normal     29     14      4      6      3      2      2      7      6      0    165
Node 0, zone  HighMem      5     27      4      5     10      3      4      5      3      1     26

  • /proc/cmdline

Muestra los parámetros pasados al kernel en el momento en que éste inicia.

$ cat /proc/cmdline
root=UUID=c0b64eef-9af3-48df-8ddc-ab7b8567da58 ro quiet splash

Esta línea te puede resultar familiar si has visto alguna vez un archivo de configuración del GRUB u otro administrador de booteo.

  • /proc/cpuinfo

Identificación acerca del procesador utilizado.

$ cat /proc/cpuinfo
processor   : 0
vendor_id   : AuthenticAMD
cpu family  : 15
model      : 107
model name  : AMD Athlon(tm) 64 X2 Dual Core Processor 5000+
stepping    : 2
cpu MHz  : 2612.279
cache size  : 512 KB
physical id : 0
siblings    : 2
core id  : 0
cpu cores   : 2
apicid    : 0
initial apicid  : 0
fdiv_bug    : no
hlt_bug  : no
f00f_bug    : no
coma_bug    : no
fpu  : yes
fpu_exception   : yes
cpuid level : 1
wp    : yes
flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
bogomips    : 5224.55
clflush size    : 64
power management: ts fid vid ttp tm stc 100mhzsteps

processor   : 1
vendor_id   : AuthenticAMD
cpu family  : 15
model      : 107
model name  : AMD Athlon(tm) 64 X2 Dual Core Processor 5000+
stepping    : 2
cpu MHz  : 2612.279
cache size  : 512 KB
physical id : 0
siblings    : 2
core id  : 1
cpu cores   : 2
apicid    : 1
initial apicid  : 1
fdiv_bug    : no
hlt_bug  : no
f00f_bug    : no
coma_bug    : no
fpu  : yes
fpu_exception   : yes
cpuid level : 1
wp    : yes
flags      : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt rdtscp lm 3dnowext 3dnow pni cx16 lahf_lm cmp_legacy svm extapic cr8_legacy 3dnowprefetch
bogomips    : 5224.42
clflush size    : 64
power management: ts fid vid ttp tm stc 100mhzsteps

  • /proc/crypto

Códigos de cifrado (más algunos detalles) utilizados por el kernel.

$ cat /proc/crypto
name         : stdrng
driver       : krng
module       : kernel
priority     : 200
refcnt       : 1
selftest     : passed
type         : rng
seedsize     : 0

name         : md5
driver       : md5-generic
module       : kernel
priority     : 0
refcnt       : 1
selftest     : passed
type         : digest
blocksize    : 64
digestsize   : 16

  • /proc/devices

Dispositivos de carácteres y de bloque configurados y cargados.

$ cat /proc/devices
Character devices:
  1 mem
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  6 lp
  7 vcs
 10 misc
 13 input
 14 sound
 21 sg
 29 fb
 99 ppdev
108 ppp
116 alsa
128 ptm
136 pts
180 usb
189 usb_device
195 nvidia
216 rfcomm
251 hidraw
252 usb_endpoint
253 usbmon
254 rtc

Block devices:
  1 ramdisk
259 blkext
  7 loop
  8 sd
  9 md
 11 sr
 65 sd
 66 sd
 67 sd
 68 sd
 69 sd
 70 sd
 71 sd
128 sd
129 sd
130 sd
131 sd
132 sd
133 sd
134 sd
135 sd
252 device-mapper
253 pktcdvd
254 mdp

  • /proc/filesystems

Lista de filesystems soportados por el kernel.

$ cat /proc/filesystems
nodev   sysfs
nodev   rootfs
nodev   bdev
nodev   proc
nodev   cgroup
nodev   cpuset
nodev   debugfs
nodev   securityfs
nodev   sockfs
nodev   usbfs
nodev   pipefs
nodev   anon_inodefs
nodev   tmpfs
nodev   inotifyfs
nodev   devpts
    ext3
    ext4
    ext2
    cramfs
nodev   ramfs
nodev   hugetlbfs
nodev   ecryptfs
nodev   fuse
    fuseblk
nodev   fusectl
nodev   mqueue
nodev   binfmt_misc

  • /proc/interrupts

Este ya es conocido para los seguidores del blog, recuerdas cuando hablamos de ver interrupciones en tiempo real.

  • /proc/iomem

Muestra el mapa de memoria actual del sistema para los dispositivos:

$ cat /proc/iomem
00000000-0000ffff : reserved
00010000-0009efff : System RAM
0009f000-0009ffff : reserved
000a0000-000bffff : Video RAM area
000c0000-000cefff : Video ROM
000e6000-000fffff : reserved
  000f0000-000fffff : System ROM
00100000-7bfbffff : System RAM
  00100000-00504f5e : Kernel code
  00504f5f-0072ae5f : Kernel data
  007b8000-008780ab : Kernel bss
7bfc0000-7bfcdfff : ACPI Tables
7bfce000-7bfeffff : ACPI Non-volatile Storage
7bff0000-7bffdfff : reserved
c0000000-cfffffff : 0000:00:0d.0
dd000000-ddffffff : 0000:00:0d.0
de000000-deffffff : 0000:00:0d.0
  de000000-deffffff : nvidia
dff40000-dff5ffff : 0000:00:0d.0
dff78000-dff7bfff : 0000:00:05.0
  dff78000-dff7bfff : ICH HD audio
dff7c000-dff7cfff : 0000:00:08.0
  dff7c000-dff7cfff : sata_nv
dff7d000-dff7dfff : 0000:00:07.0
  dff7d000-dff7dfff : forcedeth
dff7ec00-dff7ecff : 0000:00:02.1
  dff7ec00-dff7ecff : ehci_hcd
dff7f000-dff7ffff : 0000:00:02.0
  dff7f000-dff7ffff : ohci_hcd
e0000000-efffffff : PCI MMCONFIG 0
  e0000000-efffffff : pnp 00:09
fec00000-fec00fff : IOAPIC 0
  fec00000-fec00fff : reserved
    fec00000-fec00fff : pnp 00:07
fec80000-fecfffff : 0000:00:01.3
fee00000-feefffff : reserved
  fee00000-fee00fff : Local APIC
    fee00000-fee00fff : pnp 00:07
  fee01000-feefffff : pnp 00:06
fefe0000-fefe01ff : pnp 00:06
fefe1000-fefe1fff : pnp 00:06
fff00000-ffffffff : reserved

  • /proc/ioports

Muestra las regiones de puertos registrados, actualmente, utilizados para la comunicación de entrada y salida con un dispositivo

$ cat /proc/ioports
0000-001f : dma1
0020-0021 : pic1
0040-0043 : timer0
0050-0053 : timer1
0060-0060 : keyboard
0064-0064 : keyboard
0070-0071 : rtc0
0080-008f : dma page reg
00a0-00a1 : pic2
00c0-00df : dma2
00f0-00ff : fpu
0170-0177 : 0000:00:06.0
  0170-0177 : pata_amd
01f0-01f7 : 0000:00:06.0
  01f0-01f7 : pata_amd
0376-0376 : 0000:00:06.0
  0376-0376 : pata_amd
03c0-03df : vga+
03f6-03f6 : 0000:00:06.0
  03f6-03f6 : pata_amd
03f8-03ff : serial
04d0-04d1 : pnp 00:06
0800-080f : pnp 00:06
0a00-0adf : pnp 00:08
0ae0-0aef : pnp 00:08
0cf8-0cff : PCI conf1
4000-407f : pnp 00:06
  4000-4003 : ACPI PM1a_EVT_BLK
  4004-4005 : ACPI PM1a_CNT_BLK
  4008-400b : ACPI PM_TMR
  4010-4015 : ACPI CPU throttle
  4020-4027 : ACPI GPE0_BLK
4080-40ff : pnp 00:06
4400-447f : pnp 00:06
4480-44ff : pnp 00:06
  44a0-44af : ACPI GPE1_BLK
4800-487f : pnp 00:06
4880-48ff : pnp 00:06
4900-493f : 0000:00:01.1
4c00-4c7f : pnp 00:06
4c80-4cff : pnp 00:06
4d00-4d3f : 0000:00:01.1
  4d00-4d3f : nForce2_smbus
4e00-4e3f : 0000:00:01.1
  4e00-4e3f : nForce2_smbus
4f00-4fff : 0000:00:01.0
eb00-eb0f : 0000:00:08.0
  eb00-eb0f : sata_nv
eb80-eb83 : 0000:00:08.0
  eb80-eb83 : sata_nv
ec00-ec07 : 0000:00:08.0
  ec00-ec07 : sata_nv
ed00-ed03 : 0000:00:08.0
  ed00-ed03 : sata_nv
ed80-ed87 : 0000:00:08.0
  ed80-ed87 : sata_nv
ee00-ee07 : 0000:00:07.0
  ee00-ee07 : forcedeth
fff0-ffff : 0000:00:06.0
  fff0-ffff : pata_amd

  • /proc/loadavg

Estadísticas de carga promedio del procesador con respecto al sobretiempo de CPU y de E/S, así como también datos adicionales de los que se valen el uptime y otros comandos.

$ cat /proc/loadavg
0.02 0.07 0.06 2/228 10399

  • /proc/locks

Lista los archivos bloqueados por el kernel.

$ cat /proc/locks
1: POSIX  ADVISORY  READ  8108 08:03:98471 1073741826 1073742335
2: POSIX  ADVISORY  WRITE 8108 08:03:98490 1073741824 1073742335
3: POSIX  ADVISORY  WRITE 8108 08:03:98473 0 EOF
4: POSIX  ADVISORY  WRITE 8099 08:03:277772 0 EOF
5: POSIX  ADVISORY  READ  3055 00:12:59080 4 4
6: POSIX  ADVISORY  WRITE 4101 08:03:99976 0 EOF
7: POSIX  ADVISORY  READ  3058 00:12:7272 4 4
8: POSIX  ADVISORY  READ  3058 00:12:7271 4 4
9: POSIX  ADVISORY  READ  3058 00:12:5704 4 4
10: POSIX  ADVISORY  READ  3058 00:12:7270 4 4
11: POSIX  ADVISORY  READ  3058 00:12:5686 4 4
12: POSIX  ADVISORY  WRITE 3058 00:12:7249 0 0
13: POSIX  ADVISORY  READ  3055 00:12:5704 4 4
14: POSIX  ADVISORY  READ  3055 00:12:5686 4 4
15: POSIX  ADVISORY  WRITE 3055 00:12:7234 0 0
16: FLOCK  ADVISORY  WRITE 2581 00:12:5934 0 EOF
17: POSIX  ADVISORY  WRITE 2554 00:12:5903 0 EOF
18: POSIX  ADVISORY  READ  2401 08:02:90115 4 4
19: POSIX  ADVISORY  READ  2401 00:12:5704 4 4
20: POSIX  ADVISORY  READ  2401 00:12:5686 4 4
21: POSIX  ADVISORY  WRITE 2401 00:12:5690 0 0

  • /proc/mdstat

Información sobre las configuración de discos múltiples de RAID. Mi sistema no tiene un RAID configurado :-(

$ cat /proc/mdstat
Personalities :
unused devices: <none>

  • /proc/meminfo

Brinda toda la información que puedas esperar acerca del uso de la memoria principal (RAM y Swap) del sistema.

$ cat /proc/meminfo
MemTotal:        1996944 kB
MemFree:          718116 kB
Buffers:          114240 kB
Cached:           799512 kB
SwapCached:            0 kB
Active:           550248 kB
Inactive:         641560 kB
Active(anon):     285608 kB
Inactive(anon):        0 kB
Active(file):     264640 kB
Inactive(file):   641560 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:       1126152 kB
HighFree:          34968 kB
LowTotal:         870792 kB
LowFree:          683148 kB
SwapTotal:        771112 kB
SwapFree:         771112 kB
Dirty:               392 kB
Writeback:             0 kB
AnonPages:        278196 kB
Mapped:            96300 kB
Slab:              46376 kB
SReclaimable:      37080 kB
SUnreclaim:         9296 kB
PageTables:         2788 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1769584 kB
Committed_AS:     793232 kB
VmallocTotal:     122880 kB
VmallocUsed:       48688 kB
VmallocChunk:      72180 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       4096 kB
DirectMap4k:       45048 kB
DirectMap4M:      860160 kB

  • /proc/misc

Controladores registrados en el dispositivo de misceláneos (10)

$ cat /proc/misc
 58 network_throughput
 59 network_latency
 60 cpu_dma_latency
 61 device-mapper
  1 psaux
 62 pktcdvd
228 hpet
229 fuse
 63 ecryptfs
231 snapshot

  • /proc/modules

Muestra los módulos cargados en el sistema:

$ cat /proc/modules
ppdev 15620 0 - Live 0xf7e28000
bridge 56212 0 - Live 0xf7ecd000
stp 10500 1 bridge, Live 0xf7d4b000
bnep 20224 2 - Live 0xf7c69000
video 25360 0 - Live 0xf7e40000
output 11008 1 video, Live 0xf7c74000
input_polldev 11912 0 - Live 0xf7c6f000
binfmt_misc 16776 1 - Live 0xf7dc9000
lp 17156 0 - Live 0xf7c45000
parport 42220 2 ppdev,lp, Live 0xf7d55000
snd_hda_intel 434100 2 - Live 0xf7ee8000
snd_pcm_oss 46336 0 - Live 0xf7e49000
snd_mixer_oss 22656 1 snd_pcm_oss, Live 0xf7e2d000
snd_pcm 83076 2 snd_hda_intel,snd_pcm_oss, Live 0xf7ddc000
snd_seq_dummy 10756 0 - Live 0xf7dcf000
snd_seq_oss 37760 0 - Live 0xf7d97000
snd_seq_midi 14336 0 - Live 0xf7d87000
snd_rawmidi 29696 1 snd_seq_midi, Live 0xf7d61000
snd_seq_midi_event 15104 2 snd_seq_oss,snd_seq_midi, Live 0xf7d45000
snd_seq 56880 6 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_seq_midi_event, Live 0xf7d24000
snd_timer 29704 2 snd_pcm,snd_seq, Live 0xf7c93000
snd_seq_device 14988 5 snd_seq_dummy,snd_seq_oss,snd_seq_midi,snd_rawmidi,snd_seq, Live 0xf7c51000
nvidia 7233756 36 - Live 0xf859a000 (P)
snd 62756 13 snd_hda_intel,snd_pcm_oss,snd_mixer_oss,snd_pcm,snd_seq_oss,snd_rawmidi,snd_seq,snd_timer,snd_seq_device, Live 0xf7df2000
soundcore 15200 1 snd, Live 0xf7dd3000
agpgart 42696 1 nvidia, Live 0xf7dbc000
snd_page_alloc 16904 2 snd_hda_intel,snd_pcm, Live 0xf7da2000
i2c_nforce2 14980 0 - Live 0xf7d91000
psmouse 61972 0 - Live 0xf7d75000
serio_raw 13444 0 - Live 0xf7d4f000
k8temp 12416 0 - Live 0xf7d3f000
pcspkr 10496 0 - Live 0xf7c5e000
usb_storage 99648 0 - Live 0xf7d09000
usbhid 42336 0 - Live 0xf7c86000
forcedeth 61712 0 - Live 0xf7c9c000
fbcon 46112 0 - Live 0xf7c78000
tileblit 10752 1 fbcon, Live 0xf7c64000
font 16384 1 fbcon, Live 0xf7c58000
bitblit 13824 1 fbcon, Live 0xf7c4b000
softcursor 9984 1 bitblit, Live 0xf7c40000

  • /proc/mounts

Lista de todos los montajes en uso por el sistema.

$ cat /proc/mounts
rootfs / rootfs rw 0 0
none /sys sysfs rw,nosuid,nodev,noexec 0 0
none /proc proc rw,nosuid,nodev,noexec 0 0
udev /dev tmpfs rw,mode=755 0 0
/dev/disk/by-uuid/c0b64eef-9af3-48df-8ddc-ab7b8567da58 / ext3 rw,relatime,errors=remount-ro,data=ordered 0 0
securityfs /sys/kernel/security securityfs rw 0 0
tmpfs /lib/init/rw tmpfs rw,nosuid,mode=755 0 0
fusectl /sys/fs/fuse/connections fusectl rw 0 0
varrun /var/run tmpfs rw,nosuid,mode=755 0 0
varlock /var/lock tmpfs rw,nosuid,nodev,noexec 0 0
tmpfs /dev/shm tmpfs rw,nosuid,nodev 0 0
devpts /dev/pts devpts rw,nosuid,noexec,gid=5,mode=620 0 0
/dev/sda3 /home ext3 rw,relatime,errors=remount-ro,data=ordered 0 0
tmpfs /lib/modules/2.6.28-15-generic/volatile tmpfs rw,mode=755 0 0
binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,nosuid,nodev,noexec 0 0
gvfs-fuse-daemon /home/luciano/.gvfs fuse.gvfs-fuse-daemon rw,nosuid,nodev,user_id=1000,group_id=1000 0 0

  • /proc/partitions

Muestra información acerca de la asignación de bloques de particiones:

$ cat /proc/partitions
major minor  #blocks  name

   8        0   39121488 sda
   8        2   17036901 sda2
   8        3   21310222 sda3
   8        4     771120 sda4

  • /proc/stat

Estadísticas acerca del sistema desde que fue reiniciado por última vez. Su contenido es bastante largo y no lo vamos a explicar, por lo tanto no tiene sentido hacer un volcado del mismo en esta publicación.

  • /proc/swaps

Muestra el espacio de memoria de intercambio (swap) y su uso.

$ cat /proc/swaps
Filename                Type        Size    Used    Priority
/dev/sda4                               partition   771112 0    -1

  • /proc/uptime

Muestra el tiempo que lleva encendido el sistema.

$ cat /proc/uptime
20904.50 20585.45

  • /proc/version

Muestra la versión del kernel y del compilador gcc (GNU C Compiler).

$ cat /proc/version
Linux version 2.6.28-15-generic (buildd@palmer) (gcc version 4.3.3 (Ubuntu 4.3.3-5ubuntu4) ) #49-Ubuntu SMP Tue Aug 18 18:40:08 UTC 2009

Vía: Red Hat Enterprise Linux 4: Manual de referencia