El sistema de ficheros proc (también llamado procfs) [1] es un mecanismo utilizado por el núcleo de Linux y por los módulos del núcleo para proporcionar información a los procesos (de ahí el nombre proc). Este pseudo sistema de ficheros nos permite interactuar con las estructuras de datos internas del núcleo, obteniendo información útil acerca de los procesos, y nos permite también cambiar la configuración (modificando los parámetros del núcleo) sobre la marcha.
Como sucede con todos los sistemas de ficheros en Linux, el procfs también se monta en el sistema. Lo más normal es que se monte automáticamente al arrancar el sistema. Esto se consigue mediante una entrada en el fichero /etf/fstab (fichero que define la forma de montar los sistemas de ficheros) con un contenido similar al siguiente:
proc /proc proc defaults 0 0
En el caso de que proc no se monte al arrancar el sistema, se puede montar manualmente mediante la herramienta mount con el siguiente comando:
mount -t proc proc /proc
El sistema de ficheros proc está controlado por el núcleo y no tiene un dispositivo por detrás de él. Debido a que principalmente contiene información de estado controlada por el núcleo, el lugar más lógico donde almacenar la información es en la memoria controlada por el núcleo (por eso se habla de sistema de ficheros virtual). Por el contrario, un sistema de ficheros convencional se suele almacenar en disco (o en algún dispositivo similar).
A pesar de que los ficheros del procfs están en memoria, éstos se pueden visualizar con cualquier editor o herramienta convencional (como cualquier fichero normal del sistema). Esto es posible gracias a la capa de sistema de archivos virtual (VFS) que está dentro del servidor de archivos de Linux. Esta capa es la encargada de proporcionar la interfaz de llamadas de entrada/salida del sistema y se comunica con una serie de módulos que son los que en realidad saben manejar un sistema de archivos en concreto (por ejemplo ext2, fat, proc, etc.). Por tanto, cuando el VFS realiza llamadas pidiendo los i-nodos de ficheros o directorios, el sistema de ficheros proc crea esos ficheros o directorios a partir de la información del núcleo.
Algunos de los ficheros más importantes (y útiles) del procfs son los siguientes [9]:
Además, el procfs también contiene una serie de directorios entre los que cabe destacar los siguientes:
Por último, hay que señalar que en la mayoría de los núcleos actuales el procfs suele venir configurado por defecto. En caso de que no sea así, habrá que recompilar el núcleo incluyendo el soporte para procfs.