El sistema de archivos /proc

Linux trata a casi todo como archivos disponiendo de entradas en el sistema de archivos para dispositivos de hardware. Dichos archivos /dev se usan para acceder al hardware de un modo específico usando las llamadas al sistema de bajo nivel.

Los controladores de software que controlan el hardware pueden configurarse de un modo en particular, o son capaces de enviar información. Por ejemplo, un controlador de disco duro puede ser configurado para usar DMA en particular. Una tarjeta de red puede ser capaz de informar si ha negociado una conexión duplex de alta velocidad.

Linux proporciona un sistema de archivos especial, procfs, que suele estar disponible a modo de directorio /proc. Contiene muchos archivos especiales que permiten el acceso de alto nivel a la información de los controladores y del núcleo. Las aplicaciones pueden leer y escribir estos archivos para obtener información y pueden configurar parámetros siempre y cuando se ejecuten con los permisos de acceso adecuados.

Los archivos que aparecen en /proc varían dependiendo del sistema, y cada nueva versión de Linux incluye más, ya que más controladores y prestaciones aceptan el sistema de archivo procfs. A continuación vamos a ver alguno de los archivos más comunes y vamos a estudiar brevemente su uso.

Un ejemplo de la lista de directorios /proc en Fedora podría ser:

proc_fedoraPara Ubuntu sería:

proc_ubuntuEn muchos casos, los archivos sólo se pueden leer y proporcionan información sobre el estado, Por ejemplo, /proc/cpuinfo proporciona información sobre los procesadores disponibles:

proc_cpuinfo/proc/meminfo y /proc/version proporcionan información sobre el uso de memoria y la versión del núcleo, respectivamente:

proc_meminfoproc_versionLa información que proporcionan estos archivos se genera cada vez que se lee el archivo. De manera que si volvemos a leer el archivo meminfo más tarde, obtendremos los segundos resultados.

Podremos encontrar más información sobre las funciones específicas del núcleo en los subdirectorios de /proc. Por ejemplo, puede conseguir estadísticas sobre el uso de la conexión en red de /proc/net/sockstat:

proc_sockstatEn algunas entradas /proc se puede leer y escribir. Por ejemplo, el número total de archivos que todos los programas en ejecución pueden abrir al mismo tiempo es un parámetro del núcleo de Linux. El valor actual puede leerse en /proc/sys/fs/file-max:

proc_filemaxAquí el valor está configurado en 305.929. Si queremos aumentar este valor, puede hacerlo escribiendo el mismo archivo. Es posible que tenga que hacerlo si está ejecutando un juego de aplicaciones especializadas, como un sistema de base de datos que usa varias tablas, que han de abrir varios archivos al mismo tiempo.

proc_nota1Para aumentar el límite, por ejemplo, a 315.000, solo tenemos que escribir el nuevo límite en el archivo file-max:

proc_echoLos subdirectorios de /proc que tienen nombres numéricos se usan para proporcionar acceso a la información sobre los programas en ejecución. Durante los próximos capítulos aprenderemos a ejecutar programas en modo de procesos.

Por ahora, tenga en cuenta que cada proceso tiene un único identificador: un número entre 1 y 32000. El comando ps proporciona una lista de los procesos en ejecución actuales. Por ejemplo:

ps_ejemploEn este ejemplo podemos ver ejecutándose varias sesiones, entre ellas gedit y ps.

El identificador de gedit es 28781, de manera que para obtener más información tiene que consultar /proc/28781:

procesoEl subdirectorio fd proporciona información sobre los descriptores de archivos abiertos  que está usando el proceso. Esta información puede resultar útil para determinar cuántos archivos ha abierto un programa a la vez. Hay una entrada por descriptor abierto, el nombre se corresponde con el número del descriptor.

descriptores_abiertosPodemos decir que el programa gedit se está ejecutando y que su directorio de trabajo actual es /usr/bin/gedit. Es posible leer los otros archivos del directorio para ver la línea de comando usada para iniciarla, así como el entorno shell que tiene. Los archivos cmdline y environ proporcionan esta información a modo de serie de cadenas sin finalizar, así que tenga cuidado cuando las observe.

od_geditenvironatras

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s