Il filesystem /proc


Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | 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

I commenti sono aggiunti quando e soprattutto se ho il tempo di guardarli e dopo aver eliminato le cagate, spam, tentativi di phishing et similia. Quindi non trattenete il respiro.

3 messaggi this document does not accept new posts
Anonymous coward Di Anonymous coward - postato il 16/08/2011 14:09

Linux Administration System Guide - O'Reilly

 

non esiste...

--
Anonymous coward


Davide Bianchi@ Anonymous coward Di Davide Bianchi - postato il 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 Di Anonymous coward - postato il 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


Precedente Successivo


Davide Bianchi, lavora come Unix/Linux System Administrator presso una societa' di "sicurezza informatica" (aka: $networkgestapo) di Haarlem. Contatti: mail: davide AT onlyforfun.net , Jabber: davideyeahsure AT gmail.com,


Volete contribuire? Leggete come!.
 
 

Il presente sito e' frutto del sudore della mia fronte (e delle mie dita), se siete interessati a ripubblicare uno degli articoli, documenti o qualunque altra cosa presente in questo sito per cortesia datemene comunicazione (o all'autore dell'articolo se non sono io), cosi' il giorno che faccio delle aggiunte potro' avvisarvi e magari mandarvi il testo aggiornato.


Questo sito era composto con VIM, ora e' composto con VIM ed il famosissimo CMS FdT.

Questo sito non e' ottimizzato per la visione con nessun browser particolare, ne' richiede l'uso di font particolari o risoluzioni speciali. Siete liberi di vederlo come vi pare e piace, o come disse qualcuno: "Finalmente uno dei POCHI siti che ancora funzionano con IE5 dentro Windows 3.1".

Web Interoperability Pleadge Support This Project
Powered By Gort