El sistema de archivos proc (procfs) es un sistema de archivos virtual que se crea sobre la marcha cuando se inicia el sistema y se disuelve en el momento del apagado del sistema.
Contiene información útil sobre los procesos que se están ejecutando actualmente, se considera un centro de control e información para el kernel.
El sistema de archivos proc también proporciona un medio de comunicación entre el espacio del kernel y el espacio del usuario.
A continuación se muestra una instantánea de /proc de mi PC.
ls -l /proc total 0 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1 dr-xr-xr-x 9 root root 0 Mar 31 21:34 10 dr-xr-xr-x 9 avahi avahi 0 Mar 31 21:34 1034 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1036 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1039 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1041 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1043 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1044 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1048 dr-xr-xr-x 9 root root 0 Mar 31 21:34 105 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1078 dr-xr-xr-x 9 root root 0 Mar 31 21:34 11 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1121 dr-xr-xr-x 9 lp lp 0 Mar 31 21:34 1146 dr-xr-xr-x 9 postgres postgres 0 Mar 31 21:34 1149 dr-xr-xr-x 9 mysql mysql 0 Mar 31 21:34 1169 dr-xr-xr-x 9 postgres postgres 0 Mar 31 21:34 1180 dr-xr-xr-x 9 postgres postgres 0 Mar 31 21:34 1181 dr-xr-xr-x 9 postgres postgres 0 Mar 31 21:34 1182 dr-xr-xr-x 9 postgres postgres 0 Mar 31 21:34 1183 dr-xr-xr-x 9 postgres postgres 0 Mar 31 21:34 1184 dr-xr-xr-x 9 root root 0 Mar 31 21:34 1186 dr-xr-xr-x 9 root root 0 Mar 31 21:34 12 ...
Si enumera los directorios, encontrará que para cada PID de un proceso hay un directorio dedicado.
Puede verificar directorios solo en la terminal usando
ls -l /proc | grep '^d'
Ahora verifiquemos el proceso particular del PID asignado, puede obtener el PID de cualquier proceso en ejecución desde el comando ps
ps -aux
Producción:
Ahora verifique el proceso resaltado con PID=7494, puede verificar que haya una entrada para este proceso en el sistema de archivos /proc.
ls -ltr /proc/7494
Producción:
total 0 -rw-r--r-- 1 mandeep mandeep 0 Apr 1 01:14 oom_score_adj dr-xr-xr-x 13 mandeep mandeep 0 Apr 1 01:14 task -r--r--r-- 1 mandeep mandeep 0 Apr 1 01:16 status -r--r--r-- 1 mandeep mandeep 0 Apr 1 01:16 stat -r--r--r-- 1 mandeep mandeep 0 Apr 1 01:16 cmdline -r--r--r-- 1 mandeep mandeep 0 Apr 1 01:17 wchan -rw-r--r-- 1 mandeep mandeep 0 Apr 1 01:17 uid_map -rw-rw-rw- 1 mandeep mandeep 0 Apr 1 01:17 timerslack_ns -r--r--r-- 1 mandeep mandeep 0 Apr 1 01:17 timers -r-------- 1 mandeep mandeep 0 Apr 1 01:17 syscall -r--r--r-- 1 mandeep mandeep 0 Apr 1 01:17 statm -r-------- 1 mandeep mandeep 0 Apr 1 01:17 stack -r--r--r-- 1 mandeep mandeep 0 Apr 1 01:17 smaps -rw-r--r-- 1 mandeep mandeep 0 Apr 1 01:17 setgroups -r--r--r-- 1 mandeep mandeep 0 Apr 1 01:17 sessionid -r--r--r-- 1 mandeep mandeep 0 Apr 1 01:17 schedstat -rw-r--r-- 1 mandeep mandeep 0 Apr 1 01:17 sched lrwxrwxrwx 1 mandeep mandeep 0 Apr 1 01:17 root -> /proc/2341/fdinfo -rw-r--r-- 1 mandeep mandeep 0 Apr 1 01:17 projid_map -r-------- 1 mandeep mandeep 0 Apr 1 01:17 personality ...
En Linux, /proc incluye un directorio para cada proceso en ejecución, incluidos los procesos del kernel, en directorios denominados /proc/PID, estos son los directorios presentes:
directorio | descripción |
---|---|
/proc/PID/líneacmd | Argumentos de la línea de comandos. |
/proc/PID/cpu | CPU actual y última en la que se ejecutó. |
/proc/PID/cwd | Enlace al directorio de trabajo actual. |
/proc/PID/entorno | Valores de las variables de entorno. |
/proc/PID/exe | Enlace al ejecutable de este proceso. |
/proc/PID/fd | Directory, que contiene todos los descriptores de archivos. |
/proc/PID/mapas | La memoria se asigna a ejecutables y archivos de biblioteca. |
/proc/PID/mem | Memoria sostenida por este proceso. |
/proc/PID/raíz | Enlace al directorio raíz de este proceso. |
/proc/PID/stat | Estado del proceso. |
/proc/PID/statm | Procesar la información de estado de la memoria. |
/proc/PID/estado | Estado del proceso en forma legible por humanos. |
Algunos otros archivos en el sistema de archivos /proc son:
expediente | descripción |
---|---|
/proc/cripto | lista de módulos criptográficos disponibles |
/proc/diskstats | información (incluidos los números de dispositivo) para cada uno de los dispositivos de disco lógico |
/proc/sistemas de archivos | lista de los sistemas de archivos admitidos por el núcleo en el momento de la inclusión |
/proc/kmsg | reteniendo mensajes emitidos por el kernel |
/proc/meminfo | resumen de cómo el núcleo está administrando su memoria. |
/proc/scsi | información sobre cualquier dispositivo conectado a través de un controlador SCSI o RAID |
/proc/tty | información sobre los terminales actuales |
/proc/versión | que contiene la versión del kernel de Linux, el número de distribución, el número de versión de gcc (utilizado para construir el kernel) y cualquier otra información pertinente relacionada con la versión del kernel que se está ejecutando actualmente |
Por ejemplo, los contenidos de /proc/crypto son
less /proc/crypto name : ccm(aes) driver : ccm_base(ctr(aes-aesni), cbcmac(aes-aesni)) module : ccm priority : 300 refcnt : 2 selftest : passed internal : no type : aead async : no blocksize : 1 ivsize : 16 maxauthsize : 16 geniv : name : ctr(aes) driver : ctr(aes-aesni) module : kernel priority : 300 refcnt : 3 selftest : passed internal : no type : blkcipher blocksize : 1 min keysize : 16 max keysize : 32 ivsize : 16 geniv : chainiv ...
Referencias:
1) /wiki/Procfs
2) /proc