The /proc filesystem


Home Page | Comments | Articles | Faq | Documents | Search | Archive | Tales from the Machine Room | Contribute | Login/Register
A cura di Davide Bianchi Il file system /proc e' un file system creato e mantenuto a run-time dal Kernel di Linux per tenere traccia dei vari processi che stanno funzionando sulla macchina e del loro stato. Tramite /proc si possono ottenere un sacco di informazioni su quello che c'e', come e' configurato e come funziona.

Il file system /proc

Il file system /proc (d'ora in poi solo /proc), e' un file system creato e mantenuto a run-time dal Kernel di linux per tenere traccia dei vari processi che stanno funzionando sulla macchina e del loro stato. Tramite /proc si possono ottenere un sacco di informazioni su quello che c'e', come e' configurato e come funziona.

La cosa piu' interessante relativa a /proc e' che non esiste in realta', /proc legge direttamente dalla memoria del sistema le sue informazioni in "tempo reale".

/proc puo' essere letto da qualunque utente che abbia i corretti permessi di accesso, alcune parti di /proc possono pero' essere lette solamente dal proprietario del processo in questione e (ovviamente) da root.

Sotto linux, vi sono varie utility come lscpi, scanpci etc. che ottengono i loro dati proprio leggendo /proc ed interpretandone le informazioni. Altre utility simili sono ps e top.

La / di un sistema Unix/Linux di solito si presenta cosi':


...
drwxr-xr-x  14 root  root    291 Oct 25 18:47 opt
dr-xr-xr-x  86 root  root      0 Dec 12  2000 proc <---
drwx--x--x  16 root  root    841 Nov 20 00:10 root
drwxr-xr-x   5 root  root   4627 Oct 15 11:42 sbin
...
Dato che /proc e' un file system virtuale, esso e' ricreato ogni volta che la macchina viene accesa, quindi la sua data/ora e' sempre aggiornata.

Usare /proc/sys per verificare/modificare i parametri del kernel.

/proc/sys contiene molti parametri usati dal kernel di Linux/Unix, utilizzando questa directory, possiamo controllare e modificare alcuni di questi parametri. Per esempio se usiamo

cat /proc/sys/net/ipv4/ip_forward
otteniamo "0" se l'ip forwarding e' disattivato ed "1" se e' attivato. Ma questa configurazione puo' essere modificata cambiando il contenuto dello stesso file.

Il contenuto di /proc

Il contenuto di /proc e' qualche cosa di simile a:

1 114 1210 1211 1212 1227 133 137 148 160 161 163 167 168 169
170 171 172 173 174 186 190 193 194 195 203 206 207 208 209
210 211 220 221 222 223 224 225 226 227 229 230 234 246 253 279
296 3 4 5 500 501 6 667 668 669 683 684 685 7 711 712 713 737 763
764 765 766 773 774 775 782 79 88 92 asound bus cmdline config.gz
cpuinfo devices dma fb filesystems fs ide interrupts ioports
kcore kcore_elf kmsg ksyms loadavg locks lvm mdstat meminfo
memstat misc modules mounts net partitions pci rtc scsi self
slabinfo stat swaps sys tty uptime version
Le directory "numeriche" sono i singoli processi in esecuzione nella macchina nell'istante in cui abbiamo fatto il nostro ls /proc. Prima di "vedere" il contenuto di ogni singola directory occorre essere root, questo perche' il processo puo' appartenere ad un diverso utente e quindi proibire l'accesso. Una volta ottenuto l'accesso, possiamo vedere il contenuto della directory:

opus:/proc # ls -la 114
total 0
dr-xr-xr-x   3 named    named      0 Nov 30 12:20 .
dr-xr-xr-x  89 root     root       0 Nov 30  2000 ..
-r--r--r--   1 root     root       0 Nov 30 12:20 cmdline
lrwx------   1 root     root       0 Nov 30 12:20 cwd -> /var/named
-r--------   1 root     root       0 Nov 30 12:20 environ
lrwx------   1 root     root       0 Nov 30 12:20 exe -> /usr/sbin/named
dr-x------   2 root     root       0 Nov 30 12:20 fd
pr--r--r--   1 root     root       0 Nov 30 12:20 maps
-rw-------   1 root     root       0 Nov 30 12:20 mem
lrwx------   1 root     root       0 Nov 30 12:20 root -> /
-r--r--r--   1 root     root       0 Nov 30 12:20 stat
-r--r--r--   1 root     root       0 Nov 30 12:20 statm
-r--r--r--   1 root     root       0 Nov 30 12:20 status
Il contenuto delle varie directory e' praticamente lo stesso, indipendentemente dalla directory che scegliamo. Solo i valori dei singoli parametri cambiano a seconda del processo scelto.
Esaminare un processo

Esaminando i vari "file" contenuti all'interno della sottodirectory di /proc che identifica un processo possiamo scoprire varie cose relative al processo stesso:

-r--r--r--   1 root     root      0 Nov30 12:20 cmdline
Questo contiene l'intera linea di comando invocata per avviare il processo. Il tutto e' ficcato dentro senza alcuno spazio e senza nessuna formattazione particolare.

lrwx------   1 root     root      0 Nov 30 12:20 cwd -> /var/named 
questo e' un link simbolico alla directory di lavoro di quel particolare processo.

-r--------   1 root     root      0 Nov 30 12:20 environ
questo contiene tutte le variabili di ambiente che sono definite per quel particolare processo, nella forma VARIABILE=valore. Come per cmdline, anche queste sono ficcate dentro senza nessuna formattazione ne' spazi tra i vari parametri.

lrwx------   1 root     root      0 Nov 30 12:20 exe -> /usr/sbin/named
questo e' un link al file eseguibile che e' in esecuzione.

dr-x------   2 root     root      0 Nov 30 12:20 fd
Questa directory contiene l'elenco dei file descriptors che sono usati dal processo in questione.

pr--r--r--   1 root     root      0 Nov 30 12:20 maps
Questa pipe contiene la "mappa" delle aree di memoria che sono attualmente "mappate" a file su disco.

lrwx------   1 root     root      0 Nov 30 12:20 root -> /
Questo link mostra quale e' la directory "root" per quel particolare processo. Un processo potrebbe avere una root che non corrisponde alla "vera" root.

-r--r--r--   1 root     root      0 Nov 30 12:20 status
Questo file fornisce informazioni relative allo stato del processo, cioe' se e' "dormiente" o se sta' lavorando, il suo PID, UID, PPID ed altre informazioni simili. Queste informazioni sono le stesse che possono essere visualizzate usando ps e top.

Altre informazioni generiche riguardo /proc

NOTA: queste informazioni sono tratte da LASG - capitolo 3

/proc/cpuinfo Riporta informazioni sul processore, per esempio il tipo, marca, modello e le varie performance.
/proc/devices Elenca i driver configurati nel kernel corrente
/proc/dma Mostra quali canali DMA sono in uso al momento
/proc/filesystems Mostra i filesystem configurati (supportati) nel kernel
/proc/interrupts Visualizza gli interrupts in uso e quanti e quali sono stati usati.
/proc/ioports Mostra quali porte di i/o sono in uso al momento

Bibliografia ed altre fonti sull'argomento

Linux Administration System Guide - O'Reilly
Unix Administration Basic Guide - O'Reilly

Comments are added when and more important if I have the time to review them and after removing Spam, Crap, Phishing and the like. So don't hold your breath. And if your comment doesn't appear, is probably becuase it wasn't worth it.

3 messages this document does not accept new posts
Anonymous coward By Anonymous coward - posted 16/08/2011 14:09

Linux Administration System Guide - O'Reilly

 

non esiste...

--
Anonymous coward


Davide Bianchi@ Anonymous coward By Davide Bianchi - posted 17/08/2011 09:56

Linux Administration System Guide - O'Reillynon esiste...


Hai ragione, adesso si chiama
Linux System Administration

--
Davide Bianchi


Anonymous coward@ Davide Bianchi By Anonymous coward - posted 18/08/2011 08:42

 

Linux Administration System Guide - O'Reillynon esiste...

Hai ragione, adesso si chiama Linux System Administration

 

mica per niente è...volevo comprarlo e non lo trovavo

--
Anonymous coward


Previous Next


Davide Bianchi, works as Unix/Linux administrator for an hosting provider in The Netherlands.


Do you want to contribute? read how.  
 


This site is made by me with blood, sweat and gunpowder, if you want to republish or redistribute any part of it, please drop me (or the author of the article if is not me) a mail.


This site was composed with VIM, now is composed with VIM and the (in)famous CMS FdT.

This site isn't optimized for vision with any specific browser, nor it requires special fonts or resolution.
You're free to see it as you wish.

Web Interoperability Pleadge Support This Project
Powered By Gojira