Il kernel di Linux ha due funzioni principali: controllare l'accesso ai dispositivi fisici e stabilire quando e come i vari processi interagiscono con tali dispositivi. La directory /proc/ — anche chiamata file system proc —contiene una gerarchia di file speciali che rappresentano lo stato corrente del kernel — consentendo alle applicazioni e agli utenti di esplorare il sistema attraverso il punto di vista del kernel.
5.1. Un filesystem virtuale
In Linux tutto viene memorizzato sotto forma di file. La maggior parte degli utenti hanno familiarit� con i due principali tipi di file, ovvero i file di testo e binari. La directory /proc/, tuttavia, contiene un altro tipo di file denominato file virtuale. Per questo motivo /proc/ � spesso indicato come filesystem virtuale.
Questi file virtuali hanno qualit� univoche e la maggior parte di essi ha dimensioni pari a zero byte, ma quando visualizzati, possono contenere una grande quantit� di informazioni. Inoltre gran parte delle impostazioni dell'ora e della data dei file virtuali riflette la data e l'ora correnti, per indicare il continuo mutamento.
I file virtuali come /proc/interrupts, /proc/meminfo, /proc/mounts e /proc/partitions forniscono una visualizzazione corrente dell'hardware del sistema. Altri, come il file /proc/filesystems e la directory /proc/sys/ forniscono informazioni sulla configurazione del sistema e le interfacce.
A scopo organizzativo i file contenenti informazioni relative a un argomento simile sono raggruppati in directory virtuali e in sottodirectory. Per esempio, /proc/ide/ contiene informazioni per tutti i dispositivi fisici IDE. In modo simile le directory dei processi contengono informazioni su ciascun processo in esecuzione nel sistema.
5.1.1. Visualizzazione di file virtuali
Combinando i comandi cat, more o less sui file presenti all'interno della directory /proc/, utenti possono accedere immediatamente a una enorme quantit� di informazioni inerenti al sistema. Per esempio, per visualizzare quale tipo di CPU � presente su di un computer, digitate cat /proc/cpuinfo per ricevere un output simile a quanto segue:
processor : 0
vendor_id : AuthenticAMD
cpu family : 5
model : 9
model name : AMD-K6(tm) 3D+ Processor
stepping : 1
cpu MHz : 400.919
cache size : 256 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 1
wp : yes
flags : fpu vme de pse tsc msr mce cx8 pge mmx syscall 3dnow k6_mtrr
bogomips : 799.53 |
Quando visualizzate diversi file virtuali all'interno del filesystem /proc, noterete che alcune informazioni risultano immediatamente comprensibili mentre altre parti non sono leggibili. Questo � in parte il motivo per cui esistono utility specifiche, come per esempio lspci, apm, free e top, che permettono di estrarre i dati dai file virtuali e visualizzarli in modo comprensibile.
| Nota Bene |
---|
| Alcuni dei file virtuali contenuti nella directory /proc sono impostati per risultare leggibili solo all'utente root. |
5.1.2. Come cambiare i file virtuali
In generale, la maggior parte dei file virtuali all'interno della directory /proc/ sono di sola lettura. Tuttavia, � possibile utilizzare alcuni di essi operando qualche modifica nelle impostazioni del kernel. Questo vale soprattutto per i file contenuti nella sottodirectory /proc/sys/.
Per cambiare il valore di un file virtuale, utilizzate il comando echo con un simbolo (>), per ridirezionare il nuovo valore al file. Per esempio, per cambiare il vostro hostname potete digitare:
echo www.example.com > /proc/sys/kernel/hostname |
Altri file si comportano come switch binari o booleani. Per esempio, digitando cat /proc/sys/net/ipv4/ip_forward, otterrete 0 oppure 1. Uno 0 indica che il kernel non st� inoltrando pacchetti di rete. Utilizzando il comando echo per cambiare il valore del file ip_forward in 1, potete abilitare immediatamente l'inoltro dei pacchetti.
| Suggerimento |
---|
| Un altro comando utilizzato per modificare le impostazioni della subdirectory /proc/sys/ � /sbin/sysctl. Per ulteriori informazioni su questo comando, consultate la Sezione 5.4 |
Per un elenco di alcuni dei file di configurazione del kernel disponibili all'interno della sottodirectory /proc/sys/, consultate la Sezione 5.3.9.