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.
All'interno della directory /proc potete trovare numerose informazioni sull'hardware di sistema e su qualsiasi processo attualmente in esecuzione. Inoltre alcuni file all'interno dell'albero di directory /proc possono essere manipolati dagli utenti e dalle applicazioni per comunicare al kernel eventuali modifiche di configurazione.
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.
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. |
In generale, la maggior parte dei file virtuali all'interno della directory /proc è in 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 la Sezione 5.4 |
Per un elenco di alcuni dei file di configurazione del kernel disponibili in/proc/sys/, consultate la Sezione 5.3.9.