La directory /proc è il mount-point di un filesystem particolare, proc, che è un filesystem virtuale, nel senso che non occupa spazio dulla memoria di massa, il quale permette di presentare sottoforma di file e directory alcuni parametri del sistema. In questo modo è possibile gestire tali parametri direttamente dalla shell. Il filesystem viene montato all’avvio del sistema poiché nel file /etc/fstab è presente una riga analoga a
none /proc proc defaults 0 0
Il contenuto dei file contenuti all’interno di /proc ed in tutte le sue sottodirectory,
viene aggiornato in tempo reale dal kernel e viene generalmente utilizzato dai
programmi che hanno bisogno di conoscere lo stato del sistema. I comandi come ps o
top36,
che visualizzano i processi presenti sul sistema con i loro relativi stati, attingono le
informazioni da /proc, come anche i comandi lspci, scanpci, pnpdump che visualizzano le
caratteristiche delle periferiche PCI o ISA riconosciute dal sistema.
Poiché /proc è un filesystem virtuale residente in memoria centrale (RAM), tutte le volte che il sistema viene avviato, questo viene creato con la caratteristica che la dimensione dei file e directory in esso presenti è sempre 0 e la data relativa alla loro ultima modifica è quella corrente.
All’interno di /proc sono contenute varie directory, alcune delle quali hanno un nome costituito soltanto da caratteri numerici come risulta dall’esempio di seguito riportato
[root@Zeus ~]# ls /proc 1 1158 1182 408 700 8 filesystems meminfo sys 1084 1160 1184 425 731 822 fs misc sysvipc 1126 1164 1185 480 740 823 ide modules tty 1129 1166 12 5 744 877 interrupts mounts uptime 1131 1167 1215 520 753 apm iomem mtrr version 1133 1169 1241 6 762 bus ioports net 1136 1170 1244 615 771 cmdline irq partitions 1139 1171 1293 647 772 cpuinfo kcore pci 1144 1172 159 67 773 devices kmsg self 1147 1174 2 671 774 dma ksyms slabinfo 1149 1176 3 681 775 driver loadavg speakup 1151 1178 4 691 776 execdomains locks stat 1156 1180 404 7 777 fb mdstat swaps
[root@Zeus ~]# ls -l /proc/408 total 0 -r--r--r-- 1 root root 0 Mar 27 22:42 cmdline lrwxrwxrwx 1 root root 0 Mar 27 22:42 cwd -> / -r-------- 1 root root 0 Mar 27 22:42 environ lrwxrwxrwx 1 root root 0 Mar 27 22:42 exe -> /sbin/klogd dr-x------ 2 root root 0 Mar 27 22:42 fd -r--r--r-- 1 root root 0 Mar 27 22:42 maps -rw------- 1 root root 0 Mar 27 22:42 mem -r--r--r-- 1 root root 0 Mar 27 22:42 mounts lrwxrwxrwx 1 root root 0 Mar 27 22:42 root -> / -r--r--r-- 1 root root 0 Mar 27 22:42 stat -r--r--r-- 1 root root 0 Mar 27 22:42 statm -r--r--r-- 1 root root 0 Mar 27 22:42 status
La directory /proc/bus contiene le informazioni relative ai bus riconosciuti dal sistema. Al suo interno si trovano le directory pci e usb che contengono rispettivamente le informazioni relative ai bus PCI e USB. Ad esempio, nel file /proc/bus/usb/devices è contenuto qualcosa di simile a quanto riportato di seguito
T: Bus=01 Lev=00 Prnt=00 Port=00 Cnt=00 Dev#= 1 Spd=12 MxCh= 2 B: Alloc= 0/900 us ( 0%), #Int= 0, #Iso= 0 D: Ver= 1.10 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB OHCI Root Hub S: SerialNumber=c8049000 C:* #Ifs= 1 Cfg#= 1 Atr=40 MxPwr= 0mA I: If#= 0 Alt= 0 #EPs= 1 Cls=09(hub ) Sub=00 Prot=00 Driver=hub E: Ad=81(I) Atr=03(Int.) MxPS= 2 Ivl=255ms
[da completare ...]