F1 Help! La solución que buscabas

Desarrollo, programación, tips, consejos y soluciones para los usarios de PC

lunes, 18 de enero de 2010

Directorio Proc

Este directorio especial contiene todos los detalles de tu sistema Linux, incluyendo el kernel, procesos y parámetros de configuración. Estudiando el directorio /proc, puedes aprender como los comandos de Linux trabajan e incluso es posible realizar tareas administrativas.

Bajo Linux, todo es administrado como un archivo; incluso los dispositivos son accedidos como archivos (en el directorio /dev). Aunque que podrías pensar que archivos "normales" son ya sea texto o binarios (o posiblemente dispositivos o archivos pipe), el directorio /proc contiene una extraño tipo de archivo: archivos virtuales. Estos archivos son listados, pero realmente no existen en disco; el sistema operativo los crea al vuelo si tratas de leerlos.

Para empezar, abrimos una consola y tipeamos el comando ls /proc:


#> ls /proc
1 2432 3340 3715 3762 5441 815 devices modules
129 2474 3358 3716 3764 5445 acpi diskstats mounts
1290 248 3413 3717 3812 5459 asound dma mtrr
133 2486 3435 3718 3813 5479 bus execdomains partitions
1420 2489 3439 3728 3814 557 dri fb self
165 276 3450 3731 39 5842 driver filesystems slabinfo
166 280 36 3733 3973 5854 fs interrupts splash
2 2812 3602 3734 4 6 ide iomem stat
2267 3 3603 3735 40 6381 irq ioports swaps
2268 326 3614 3737 4083 6558 net kallsyms sysrq-trigger
2282 327 3696 3739 4868 6561 scsi kcore timer_list
2285 3284 3697 3742 4873 6961 sys keys timer_stats
2295 329 3700 3744 4878 7206 sysvipc key-users uptime
2335 3295 3701 3745 5 7207 tty kmsg version
2400 330 3706 3747 5109 7222 buddyinfo loadavg vmcore
2401 3318 3709 3749 5112 7225 cmdline locks vmstat
2427 3329 3710 3751 541 7244 config.gz meminfo zoneinfo
2428 3336 3714 3753 5440 752 cpuinfo misc



Aqui podremos ver directorios con numeros que apuntan a cada proceso en ejecucion; tambien hay archivos virutales que proveen informacion sobre el hardware o el sistema de archivo. Los archivos situados bajo /proc/sys son relacionados a la configuración de parámetros del kernel.

Podemos utilizar el comando cat para mostrar estos archivos en consola y asi optener una gran informacion acerca del sistema. Esto es ultil tambien para los programadores para reconocer hardware o moajener procesos.

Ahora veamos algunos archivos en particular:

/proc/apm: Proveé información sobre "Advanced Power Management", si es que esta instalado.

/proc/acpi: Un directorio similar al anterior que ofrece bastantes datos sobre el más moderno ACPI (Advanced Configuration and Power Interface). Por jemplo, para ver si tu laptop está conectada a la corriente AC, puedes usar cat /proc/acpi/ac_adapter/AC/state o en algunas distros cat /proc/acpi/ac_adapter/ACAD/state, y así obtendrás "on line" o "off line".

/proc/cmdline: Muestra los parámetros que fueron pasados al kernel al momento del arranque (boot time).

/proc/cpuinfo: Muestra datos sobre el procesador de tu equipo.

processor : 0
vendor_id : AuthenticAMD
cpu family : 15
model : 107
model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4000+
stepping : 1
cpu MHz : 2095.424
cache size : 512 KB

processor : 1
vendor_id : AuthenticAMD
cpu family : 15
model : 107
model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4000+
stepping : 1
cpu MHz : 2095.424
cache size : 512 KB


/proc/loadavg: Un archivo relacionado al anterior que muestra la carga promedio del procesador; su información incluye el uso de CPU en el último minuto, últimos cinco minutos y últimos 15 minutos, asi como el número de procesos actuales ejecutándose.

/proc/stat: También proporciona estadísticas, pero tomando en cuenta el último boot (arranque).

/proc/uptime: Un archivo pequeño que solo tiene dos números: por cuantos segundos tu sistema ha estado encendido, y cuantos segundos ha estado inactivo.

/proc/devices: Despliega todos los dispositivos actuales configurados y cargados de caracter y bloque. /proc/ide y /proc/scsi proveen datos sobre dispositivos IDE y SCSI.

/proc/ioports: Te muestra información sobre las regiones usadas para comunicaciones de E/S (I/O) de esos dispositivos.

/proc/dma: Muestra los canales "Direct Memory Access" en uso.

/proc/filesystems: Muestra cuáles tipos de sistemas de archivos (filesystems) están soportados por tu kernel.

/proc/mounts: Muestra todos los "mounts" usados por tu máquina (la salida es muy similar a /etc/mtab). Similarmente, /proc/partititons y /proc/swaps muestra todas las particiones y el espacio swap respectivamente.

/proc/fs: Si estás exportando sistemas de archivos con NFS, este directorio tiene entre sus muchos subdirectorios y archivos a /proc/fs/nfsd/exports, que muestra los sistemas de archivos que están siendo compartidos y sus permisos.

/proc/net: No hay nada mejor que esto para información de red. Describir cada archivo en este directorio requeriría demasiado espacio, pero incluye dev (todos los dispositivos de red), varios archivos relacionados al firewall iptables, estadísticas de red y sockets, información sobre wireless y más.


Hay varios archivos relacionados a la RAM, /proc/meminfo, también tienes a tu disposición /proc/iomem, que muestra cuanta memoria RAM ha sido utilizada por tu sistema y /proc/kcore, que representa la memoría física de tu RAM. A diferencia de otros archivos virtuales, /proc/kcore muestra un tamaño que es igual a la memoria RAM más una pequeña sobrecarga. (No trates de darle cat a este archivo, porque su contenido es binario y solo desconfigurará tu pantalla). Finalmente, hay muchos archicos y directorios relacionados con el Hardware, tal como /proc/interrupts y /proc/irq, /proc/pci (para todos los dispositivos PCI), /proc/bus y demás, pero todos estos incluyen información muy específica que la mayoría de los usuarios no necesitarán.

Ahora veremos que tipo informacion podemos encontrar en una de las carpetas con numero, es decir, que informacion podemos hallar sobre los procesos:

Hay un subdirectorio numérico para cada proceso en ejecución; el nombre del
subdirectorio es el ID del proceso. Cada uno de ellos contiene los sigu‐
ientes pseudo ficheros y directorios.

cmdline: Contiene el comando que inicio el proceso, con todos sus parámetros.

cwd: Enlace simbólico al directorio actual de trabajo (current working directory cwd) del proceso; enlaces exe a los procesos ejecutables y enlaces root a su directorio superior.

environ: Este fichero contiene el entorno del proceso. Las entradas están paradas por caracteres nulos, y podría haber un carácter nulo al. Por tanto, para mostrar el entorno del proceso 1, debería:
(cat /proc/1/environ; echo) | tr "\000" "\n"

exe: En la versiones 2.2 y 2.4 de Linux exe es un enlace simbólico que contiene el nombre de la ruta actual de la orden ejecutada.

fd: Éste es un subdirectorio que contiene una entrada por cada fichero
que tiene abierto el proceso, nombrada con el descriptor del fichero,
y la cual es un enlace simbólico al fichero real.

maps, statm and mem: Trabaja con la memoria en uso por el proceso.
stat and status: Proveé información acerca del estatus del proceso, pero el segundo es mucho más claro que el primero.

Por ultimo veamos el nivel superior del directorio /proc/sys:
debug: Contiene (¡sorpresa!) información para depuración (debugging). Esto es muy bueno si estás metido en el desarrollo del kernel.

dev: Proveé parámetros para dispositivos específicos en tu sistema; por ejemplo, checa el directorio dev/cdrom.

fs: Ofrece datos sobre cada posible aspecto del sistema de archivos.
kernel: Te permite afectar la configuración del kernel y su operación directamente.

net: Te permite controlar aspectos relacionados a la red. Se cuidadoso, porque puedes perder conectividad.

vm: Trata con el subsistema VM.

Para tener mas informacion sobre el Proc, ejecuten en consola el siguiente comando:
man proc

No hay comentarios: