Gruppi comuni di informazioni relative al kernel vengono raccolti in directory e sottodirectory all'interno di /proc.
Ciascuna directory di /proc contiene alcune directory identificate con un numero. Un elenco di queste directory inizia nel modo seguente:
dr-xr-xr-x 3 root root 0 Feb 13 01:28 1 dr-xr-xr-x 3 root root 0 Feb 13 01:28 1010 dr-xr-xr-x 3 xfs xfs 0 Feb 13 01:28 1087 dr-xr-xr-x 3 daemon daemon 0 Feb 13 01:28 1123 dr-xr-xr-x 3 root root 0 Feb 13 01:28 11307 dr-xr-xr-x 3 apache apache 0 Feb 13 01:28 13660 dr-xr-xr-x 3 rpc rpc 0 Feb 13 01:28 637 dr-xr-xr-x 3 rpcuser rpcuser 0 Feb 13 01:28 666 |
Queste directory vengono chiamate directory di processo, poiché si riferiscono all'ID di un processo e contengono informazioni specifiche relative a quel processo. Il proprietario e il gruppo di ciascuna di queste directory è impostato per l'utente che sta eseguendo quel dato processo. Una volta terminato, la sua directory /proc scompare.
Ciascuna directory di processo contiene i file seguenti:
cmdline — contiene gli argomenti della linea di comando che hanno dato inizio al processo.
cpu — fornisce informazioni specifiche in merito all'utilizzo di ciascuna delle CPU del sistema. Un processo in esecuzione su un sistema DualCPU produce un output simile a questo:
cpu 11 3 cpu0 0 0 cpu1 11 3 |
cwd — collegamento simbolico con la directory attualmente in funzione per il processo.
environ — fornisce un elenco delle variabili di ambiente per il processo. La variabile di ambiente viene data in caratteri maiuscoli e il valore in caratteri minuscoli.
exe — collegamento simbolico all'eseguibile di questo processo.
fd — directory contenente tutti i descrittori dei file per un particolare processo. Vengono forniti sotto forma di collegamenti numerati:
total 0 lrwx------ 1 root root 64 May 8 11:31 0 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 1 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 2 -> /dev/null lrwx------ 1 root root 64 May 8 11:31 3 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 4 -> socket:[7774817] lrwx------ 1 root root 64 May 8 11:31 5 -> /dev/ptmx lrwx------ 1 root root 64 May 8 11:31 6 -> socket:[7774829] lrwx------ 1 root root 64 May 8 11:31 7 -> /dev/ptmx |
maps — contiene mappe di memoria per i vari eseguibili e per i file di libreria associati a questo processo. Il file può essere piuttosto lungo, a seconda della complessità del processo. In ogni caso, un esempio di output tratto dal processo sshd inizia in questo modo:
08048000-08086000 r-xp 00000000 03:03 391479 /usr/sbin/sshd 08086000-08088000 rw-p 0003e000 03:03 391479 /usr/sbin/sshd 08088000-08095000 rwxp 00000000 00:00 0 40000000-40013000 r-xp 00000000 03:03 293205 /lib/ld-2.2.5.so 40013000-40014000 rw-p 00013000 03:03 293205 /lib/ld-2.2.5.so 40031000-40038000 r-xp 00000000 03:03 293282 /lib/libpam.so.0.75 40038000-40039000 rw-p 00006000 03:03 293282 /lib/libpam.so.0.75 40039000-4003a000 rw-p 00000000 00:00 0 4003a000-4003c000 r-xp 00000000 03:03 293218 /lib/libdl-2.2.5.so 4003c000-4003d000 rw-p 00001000 03:03 293218 /lib/libdl-2.2.5.so |
mem — memoria occupata dal processo. Questo file non può essere letto dall'utente.
root — collegamento con la directory root del processo.
stat — stato del processo.
statm — stato della memoria utilizzata dal processo. I file statm hanno all'incirca questo aspetto:
263 210 210 5 0 205 0 |
Le sette colonne si riferiscono a differenti statistiche di memoria per il processo. Nell'ordine in cui sono disposte, da sinistra a destra, riportano diversi aspetti della memoria utilizzata:
Dimensioni totali del programma, in kilobyte
Dimensioni di porzioni di memoria, in kilobyte
Numero di pagine condivise
Number of pages that are code
Numero di pagine di dati/stack
Number of library pages
Numero di pagine marcate dirty
status — fornisce lo stato del processo in forma molto più leggibile rispetto a stat o statm. L'output per sshd ha un aspetto simile a questo:
Name: sshd State: S (sleeping) Tgid: 797 Pid: 797 PPid: 1 TracerPid: 0 Uid: 0 0 0 0 Gid: 0 0 0 0 FDSize: 32 Groups: VmSize: 3072 kB VmLck: 0 kB VmRSS: 840 kB VmData: 104 kB VmStk: 12 kB VmExe: 300 kB VmLib: 2528 kB SigPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 8000000000001000 SigCgt: 0000000000014005 CapInh: 0000000000000000 CapPrm: 00000000fffffeff CapEff: 00000000fffffeff |
L'informazione in questo output include il nome del processo e l'ID, lo stato, come per esempio S (sleeping) o R(running), e l'ID dell'utente/gruppo che sta eseguendo il processo, e dati dettagliati relativi all'utilizzo della memoria.
La directory /proc/self è un collegamento al processo attualmente in esecuzione. Consente al processo di autoesaminarsi senza dover conoscere il proprio ID.
All'interno di un ambiente di shell, un elenco della directory /proc/self produce lo stesso contenuto di un elenco della directory di processo per quel processo.
La directory contiene informazioni specifiche per i vari bus disponibili sul sistema. Dunque, per esempio, su un sistema standard contenente bus ISA, PCI e USB, i dati correnti su ciascuno di questi bus sono disponibili nella directory corrispondente sotto /proc/bus.
I contenuti delle sottodirectory e dei file disponibili variano notevolmente sulla configurazione del sistema. Tuttavia, ognuna delle directory per ciascun tipo di bus contiene almeno una directory per ogni bus di quel tipo. Queste directory di bus singoli, generalmente identificate con dei numeri, come per esempio 00, contengono file binari che si riferiscono ai vari dispositivi disponibili su quel bus.
Dunque, per esempio, un sistema con bus USB ma senza alcun dispositivo USB collegato ha una directory/proc/bus/usb contenente diversi file:
total 0 dr-xr-xr-x 1 root root 0 May 3 16:25 001 -r--r--r-- 1 root root 0 May 3 16:25 devices -r--r--r-- 1 root root 0 May 3 16:25 drivers |
La directory /proc/bus/usb contiene dei file che registrano i vari dispositivi su qualunque bus USB e i driver necessari per utilizzarli. La directory /proc/bus/usb/001 contiene tutti i dispositivi presenti sul primo (e unico) bus USB. Guardando il contenuto del file devices, si può osservare che si tratta della periferica USB root hub sulla scheda madre:
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.00 Cls=09(hub ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=0000 ProdID=0000 Rev= 0.00 S: Product=USB UHCI Root Hub S: SerialNumber=d400 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= 8 Ivl=255ms |
Questa directory contiene le informazioni per driver specifici usati dal kernel.
Un file comune di questa directory è rtc, che fornisce l'output del driver per l'orologio tempo reale (RTC) del sistema, il dispositivo che segna il tempo quando il sistema è spento. L'output prodotto da /proc/driver/rtc ha un aspetto simile a questo:
rtc_time : 01:38:43 rtc_date : 1998-02-13 rtc_epoch : 1900 alarm : 00:00:00 DST_enable : no BCD : yes 24hr : yes square_wave : no alarm_IRQ : no update_IRQ : no periodic_IRQ : no periodic_freq : 1024 batt_status : okay |
Per maggiori informazioni circa l'RTC, consultate il file /usr/src/linux-2.4/Documentation/rtc.txt.
Questa directory indica quali filesystem vengono esportati. Se è disponibile un server NFS, potete digitare cat /proc/fs/nfs/exports per visualizzare i filesystem condivisi e le autorizzazioni concesse a tali filesystem. Per ulteriori informazioni sulla condivisione dei filesystem con NFS, consultate il Capitolo 9.
Questa directory contiene informazioni sui dispositivi IDE presenti sul sistema. Ogni canale IDE viene rappresentato come directory separata, per esempio /proc/ide/ide0 e /proc/ide/ide1. È inoltre disponibile un file drivers, che fornisce il numero della versione dei vari driver utilizzati sui canali IDE:
ide-cdrom version 4.59 ide-floppy version 0.97 ide-disk version 1.10 |
Molti chipset forniscono anche un file informativo in questa directory che riporta dati aggiuntivi sulle unità connesse tramite i vari canali. Per esempio un chipset generico Intel PIIX4 Ultra 33 produce un file /proc/ide/piix che indicherà se i protocolli DMA o UDMA sono attivati per i dispositivi sui canali IDE:
Intel PIIX4 Ultra 33 Chipset.
------------- Primary Channel ---------------- Secondary Channel -------------
enabled enabled
------------- drive0 --------- drive1 -------- drive0 ---------- drive1 ------
DMA enabled: yes no yes no
UDMA enabled: yes no no no
UDMA enabled: 2 X X X
UDMA
DMA
PIO |
Esplorando la directory in cerca di un canale IDE, come ide0, si possono ottenere informazioni aggiuntive. Il file channel fornisce il numero del canale, mentre il file model indica il tipo di bus per il canale (per esempio pci).
Nella directory del canale IDE è presente una directory dei dispositivi, il cui nome corrisponde alla lettera dell'unità nella directory /dev directory. Per esempio, la prima unità IDE su ide0 sarà hda.
![]() | Nota Bene |
|---|---|
There is a symbolic link to each of these device directories in the /proc/ide/ directory. |
Ciascuna directory dei dispositivi contiene una serie di informazioni e statistiche. Il contenuto delle directory varia a seconda del tipo di dispositivo collegato. Tra i file più utili comuni a diversi dispositivi si trovano:
cache — The device cache.
capacity — capacità del dispositivo, in blocchi di 512 byte.
driver — l'unità e la versione usate per controllare il dispositivo.
geometry — geometria fisica e logica del dispositivo.
media — tipo di dispositivo, per esempio disk.
model — numero o nome del modello del dispositivo.
settings — raccolta dei parametri correnti del dispositivo. Di norma questo file contiene una discreta quantità di informazioni tecniche piuttosto utili. Un file settings per un disco fisso IDE standard potrebbe avere un aspetto simile al seguente:
name value min max mode ---- ----- --- --- ---- bios_cyl 784 0 65535 rw bios_head 255 0 255 rw bios_sect 63 0 63 rw breada_readahead 4 0 127 rw bswap 0 0 1 r current_speed 66 0 69 rw file_readahead 0 0 2097151 rw ide_scsi 0 0 1 rw init_speed 66 0 69 rw io_32bit 0 0 3 rw keepsettings 0 0 1 rw lun 0 0 7 rw max_kb_per_request 64 1 127 rw multcount 8 0 8 rw nice1 1 0 1 rw nowerr 0 0 1 rw number 0 0 3 rw pio_mode write-only 0 255 w slow 0 0 1 rw unmaskirq 0 0 1 rw using_dma 1 0 1 rw |
La directory è utilizzata per impostare l'affinità tra IRQ e CPU, che consente al sistema di connettere un particolare IRQ a un'unica CPU. Oppure è possibile escludere una CPU dalla gestione degli IRQ.
Ciascun IRQ ha la propria directory, il che gli consente di essere configurato in modo diverso da tutti gli altri. Il file /proc/irq/prof_cpu_mask è un bitmask contenente i valori di default per il file smp_affinity all'interno della directory IRQ. I valori contenuti in smp_affinity specificano quali CPU gestiscono quel particolare IRQ.
Per maggiori informazioni sulla directory /proc/irq/ , consultate:
/usr/src/linux-2.4/Documentation/filesystems/proc.txt |
Questa directory permette di osservare in modo completo i vari parametri e le varie statistiche della rete. Ciascuno dei suoi file copre una specifica gamma di informazioni relative alla rete del sistema. Di seguito è riportato un elenco parziale di questi file virtuali:
arp — contiene la tabella ARP del kernel. Questo file è particolarmente utile per collegare l'indirizzo hardware a un indirizzo IP su un sistema.
atm — directory contenente file con varie impostazioni ATM (Asynchronous Transfer Model, modalità di trasferimento asincrona) e statistiche. Questa directory è usata soprattutto con networking ATM e schede ADSL.
dev — elenca i vari dispositivi di rete configurati sul sistema, corredati di statistiche di trasmissione e ricezione. Questo file indica il numero di byte inviati e ricevuti da ciascuna interfaccia, il numero di pacchetti inbound e outbound, il numero di errori rilevati, il numero dei pacchetti persi e molto altro ancora.
dev_mcast — visualizza i vari gruppi multicast Layer2 su cui ogni dispositivo è in attesa.
igmp — elenca gli indirizzi IP multicast a cui è collegato il sistema.
ip_fwchains — se ipchains è in uso, questo file virtuale rivela le regole correnti.
ip_fwnames — se ipchains è in uso, questo file virtuale fornisce un elenco di tutti i nomi delle catene del firewall.
ip_masquerade — fornisce una tabella di informazioni sul masquerading in ipchains.
ip_mr_cache — elenca la cache del routing multicast.
ip_mr_vif — elenca le interfacce virtuali del protocollo multicast.
netstat — contiene una raccolta molto dettagliata di statistiche di networking, insieme ai servizi di temporizzazione TCP, ai SYN cookie inviati e ricevuti e molto altro.
psched — elenca i parametri dello schedulatore di pacchetti.
raw — elenco di statistiche del dispositivo a carattere.
route — visualizza la tabella di routing del kernel.
rt_cache — contiene la cache di routing corrente.
snmp — elenco di dati relativi al protocollo SNMP (Simple Network Management Protocol) per i vari protocolli di networking in uso.
sockstat — fornisce statistiche per il socket.
tcp — contiene informazioni dettagliate riguardo al socket TCP.
tr_rif — tabella di routing per il RIF token ring.
udp — contiene informazioni dettagliate riguardo al socket UDP.
unix — elenca i socket di dominio UNIX attualmente in uso.
wireless — elenca i dati relativi all'interfaccia wireless.
Questa directory è analoga alla directory /proc/ide/, ma serve per i dispositivi SCSI collegati.
Il file principale contenuto in questa directory è /proc/scsi/scsi che contiene un elenco di tutti i dispositivi SCSI riconosciuti. In questo elenco è disponibile il tipo di dispositivo, il nome del modello, il fornitore, il canale SCSI e i dati ID.
Per esempio, se un sistema contiene un CD-ROM SCSI, un'unità a nastro, dischi fissi e un controller RAID, il file avrà un aspetto simile a questo:
Attached devices: Host: scsi1 Channel: 00 Id: 05 Lun: 00 Vendor: NEC Model: CD-ROM DRIVE:466 Rev: 1.06 Type: CD-ROM ANSI SCSI revision: 02 Host: scsi1 Channel: 00 Id: 06 Lun: 00 Vendor: ARCHIVE Model: Python 04106-XXX Rev: 7350 Type: Sequential-Access ANSI SCSI revision: 02 Host: scsi2 Channel: 00 Id: 06 Lun: 00 Vendor: DELL Model: 1x6 U2W SCSI BP Rev: 5.35 Type: Processor ANSI SCSI revision: 02 Host: scsi2 Channel: 02 Id: 00 Lun: 00 Vendor: MegaRAID Model: LD0 RAID5 34556R Rev: 1.01 Type: Direct-Access ANSI SCSI revision: 02 |
Ciascun dispositivo SCSI utilizzato dal sistema ha la propria directory all'interno di /proc/scsi, contenente file specifici di ogni controller SCSI che utilizza quel driver. Dunque, in riferimento al sistema citato come esempio prima, sono presenti le directory aic7xxx e megaraid poiché vengono utilizzati i due driver. I file di ciascuna delle directory contengono, di norma, il range dell'indirizzo I/O, l'IRQ e le statistiche relative al controller SCSI che utilizza quel driver. Ogni controller può riportare un diverso tipo e una diversa quantità di informazioni. Il file dell'adattatore per host Adaptec AIC-7880 Ultra SCSI per il sistema preso come esempio produce il seguente output:
Adaptec AIC7xxx driver version: 5.1.20/3.2.4
Compile Options:
TCQ Enabled By Default : Disabled
AIC7XXX_PROC_STATS : Enabled
AIC7XXX_RESET_DELAY : 5
Adapter Configuration:
SCSI Adapter: Adaptec AIC-7880 Ultra SCSI host adapter
Ultra Narrow Controller
PCI MMAPed I/O Base: 0xfcffe000
Adapter SEEPROM Config: SEEPROM found and used.
Adaptec SCSI BIOS: Enabled
IRQ: 30
SCBs: Active 0, Max Active 1,
Allocated 15, HW 16, Page 255
Interrupts: 33726
BIOS Control Word: 0x18a6
Adapter Control Word: 0x1c5f
Extended Translation: Enabled
Disconnect Enable Flags: 0x00ff
Ultra Enable Flags: 0x0020
Tag Queue Enable Flags: 0x0000
Ordered Queue Tag Flags: 0x0000
Default Tag Queue Depth: 8
Tagged Queue By Device array for aic7xxx host instance 1:
{255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255}
Actual queue depth per device for aic7xxx host instance 1:
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
Statistics:
(scsi1:0:5:0)
Device using Narrow/Sync transfers at 20.0 MByte/sec, offset 15
Transinfo settings: current(12/15/0/0), goal(12/15/0/0), user(12/15/0/0)
Total transfers 0 (0 reads and 0 writes)
< 2K 2K+ 4K+ 8K+ 16K+ 32K+ 64K+ 128K+
Reads: 0 0 0 0 0 0 0 0
Writes: 0 0 0 0 0 0 0 0
(scsi1:0:6:0)
Device using Narrow/Sync transfers at 10.0 MByte/sec, offset 15
Transinfo settings: current(25/15/0/0), goal(12/15/0/0), user(12/15/0/0)
Total transfers 132 (0 reads and 132 writes)
< 2K 2K+ 4K+ 8K+ 16K+ 32K+ 64K+ 128K+
Reads: 0 0 0 0 0 0 0 0
Writes: 0 0 0 1 131 0 0 0 |
In questa schermata viene visualizzata la velocità di trasferimento ai vari dispositivi SCSI connessi al controller sulla base del canale ID, oltre a delle statistiche dettagliate inerenti alla quantità e alle dimensioni dei file letti o scritti da quel dispositivo. Per esempio, questo controller sta comunicando con il CD-ROM a 20 megabyte al secondo, mentre l'unità a nastro sta communicandp a soli 10 megabyte al secondo.
La directory /proc/sys/ è una directory speciale, diversa dalle altre directory presenti in /proc/. Infatti, non solo fornisce numerose informazioni relative al sistema, ma consente anche di modificare la configurazione di un kernel. Ciò consente all'amministratore della macchina di abilitare e disabilitare immediatamente le caratteristiche del kernel.
![]() | Avvertenza |
|---|---|
Fate attenzione quando modificate le impostazioni di un sistema di produzione utilizzando i vari file contenuti nella directory /proc/sys/. In seguito alla modifica di un'impostazione errata il kernel può diventare instabile e può dunque essere necessario riavviare il sistema. Per questa ragione, prima di tentare di cambiare un valore nella directory /proc/sys, assicuratevi di conoscere le opzioni corrette per quel file. |
Un buon modo per determinare se un particolare file può essere usato per configurare il kernel oppure se è stato concepito solo per fornire informazioni è quello di estrarne un elenco con il flag -1/ nel terminale. Se il file può essere scritto, è possibile utilizzarlo per configurare il kernel. Per esempio, un elenco parziale del file /proc/sys/fs ha il seguente aspetto:
-r--r--r-- 1 root root 0 May 10 16:14 dentry-state -rw-r--r-- 1 root root 0 May 10 16:14 dir-notify-enable -r--r--r-- 1 root root 0 May 10 16:14 dquot-nr -rw-r--r-- 1 root root 0 May 10 16:14 file-max -r--r--r-- 1 root root 0 May 10 16:14 file-nr |
In questo elenco i file dir-notify-enable e file-max possono essere scritti e pertanto è possibile utilizzarli per configurare il kernel. Gli altri file forniscono solamente un feedback in relazione alle attuali impostazioni.
La modifica di un valore all'interno di un file /proc/sys viene effettuata ripetendo il nuovo valore nel file. Per esempio, per abilitare il tasto SysRq su un kernel in funzione, digitate il comando:
echo 1 > /proc/sys/kernel/sysrq |
In questo modo il valore del file sysrq passerà da 0 (off) a 1 (on).
Lo scopo del tasto SysRq è quello di consentire input immedio al kernel, digitando una semplice combinazione di tasti. Per esempio la chiusura o il riavvio del sistema, la sincronizzazione di tutti i filesystem montati o lo scaricamento di informazioni importanti sulla propria console. Questa funzionalità risulta particolarmente utile quando si sta utilizzando un kernel in sviluppo o se si verificano "congelamenti" del sistema. Tuttavia, è considerato un rischio di sicurezza per una console imprevista ed è pertanto disattivato di default in Red Hat Linux.
Per maggiori informazioni sul tasto SysRq, consultate il file /usr/src/linux-2.4/Documentation/sysrq.txt.
Alcuni file di configurazione /proc/sys contengono più di un valore. Per inviare a questi file nuovi valori in modo corretto, inserite uno spazio tra ogni valore trasmesso con il comando echo, come mostrato in questo esempio:
echo 4 2 45 > /proc/sys/kernel/acct |
![]() | Nota Bene |
|---|---|
Qualsiasi modifica di configurazione effettuata tramite il comando echo scomparirà nel momento in cui il sistema verrà riavviato. Per sapere come rendere effettive le modifiche al momento del riavvio del sistema, consultate la Sezione 5.4. |
La directory /proc/sys contiene svariate sottodirectory che controllano aspetti diversi di un kernel in funzione.
La directory fornisce parametri per particolari dispositivi sul sistema. Molti sistemi hanno almeno due directory, cdrom e raid. I kernel personalizzati possono avere altre directory, come parport, che fornisce la capacità di condividere una porta parallela tra diversi driver di dispositivi.
La directory cdrom contiene un file chiamato info, che mostra una serie di importanti parametri del CD-ROM:
CD-ROM information, Id: cdrom.c 3.12 2000/10/18 drive name: hdc drive speed: 32 drive # of slots: 1 Can close tray: 1 Can open tray: 1 Can lock tray: 1 Can change speed: 1 Can select disk: 0 Can read multisession: 1 Can read MCN: 1 Reports media changed: 1 Can play audio: 1 Can write CD-R: 0 Can write CD-RW: 0 Can read DVD: 0 Can write DVD-R: 0 Can write DVD-RAM: 0 |
Esaminando rapidamente questo file è possibile scoprire le caratteristiche di un CD-ROM ignoto. Se si dispone di più CD-ROM su uno stesso sistema, ciascun dispositivo avrà la propria colonna di informazioni.
Svariati file contenuti in /proc/sys/dev/cdrom, come autoclose e checkmedia, possono essere utilizzati per controllare il CD-ROM del sistema. Utilizzate il comando echo per abilitare o disabilitare queste caratteristiche.
Se nel kernel è stato compilato il supporto RAID, sarà disponibile la directory /proc/sys/dev/raid, che conterrà almeno due file: speed_limit_min e speed_limit_max. Queste impostazioni determinano in quale misura va aumentata la velocità con cui viene utilizzato il dispositivo RAID per task di I/O particolarmente intensivi, come la risincronizzazione dei dischi.
Questa directory contiene una serie di opzioni e informazioni relative a vari aspetti del filesystem, tra cui informazioni su quota, file handle, inode e dentry.
La directory binfmt_misc viene utilizzata per fornire al kernel il supporto per formati binari misti.
I file importanti di /proc/sys/fs comprendono:
dentry-state — fornisce lo stato della directory della cache. L'aspetto del file è simile a questo:
57411 52939 45 0 0 0 |
Il primo numero mostra il numero totale delle voci presenti nella directory della cache, mentre il secondo visualizza il numero delle voci non utilizzate. Il terzo numero indica i secondi che trascorrono tra il momento in cui una directory viene liberata e il momento in cui è possibile "reclamarla", mentre il quarto misura le pagine richieste attualmente dal sistema. Gli ultimi due numeri non sono in uso e visualizzano solo il numero 0.
dquot-nr — mostra il numero massimo di voci di quota disco memorizzato nella cache.
file-max — cambia il numero massimo di file handle che il kernel può allocare. Aumentando il valore di questo file si possono risolvere eventuali errori derivanti da una carenza di file handle disponibili.
file-nr — visualizza il numero di file handle allocati, il numero di file handle utilizzati e il numero massimo di file handle.
overflowgid e overflowuid — definiscono rispettivamente l'ID di gruppo e l'ID utente da utilizzare con filesystem che supportano solo ID utente e di gruppo a 16 bit.
super-max — controlla il numero massimo di superblocchi disponibili.
super-nr — visualizza il numero di superblocchi attualmente in uso.
Questa directory contiene una serie di file di configurazione che interessano direttamente l'operato del kernel. Tra i file più importanti trovate:
acct — controlla la sospensione della contabilità relativa a un processo sulla base della percentuale di spazio libero disponibile sul filesystem contenente il log. Per default, il file ha un aspetto simile a questo:
4 2 30 |
Il secondo valore definisce la soglia percentuale di spazio libero alla sospensione del logging, mentre il primo valore stabilisce la percentuale di spazio libero necessaria per riprendere il logging. Il terzo valore definisce l'intervallo in secondi in cui il kernel interroga il filesystem per vedere se il logging deve essere sospeso o ripreso.
cap-bound — controlla le impostazioni del limite di capacità. Fornisce un elenco delle azioni che qualsiasi processo sul sistema è in grado di compiere. Se un'azione non è presente in questo elenco, allora nessun processo è in grado di compierla, a prescindere dalla quantità di privilegi di cui dispone. L'idea di fondo, in questo caso, è quella di rendere più sicuro il sistema facendo in modo che determinate situazioni non si verifichino durante il processo di avvio, per lo meno a partire da un dato momento.
Per una lista valida dei valori possibili, consultate /usr/src/linux-2.4/include/linux/capability.h. Per ulteriori infomazioni consultate la seguente URL: http://lwn.net/1999/1202/kernel.php3.
ctrl-alt-del — controlla se la combinazione di
tasti
domainname — configura il nome di dominio del sistema, come example.com.
hostname — Configura il nome host del sistema, per esempio www.example.com.
hotplug — configura l'utility da utilizzare quando il sistema rileva una modifica nella configurazione. Viene utilizzato principalmente con USB e Cardbus PCI. Si consiglia di non modificare il valore predefinito di /sbin/hotplug, a meno che non si stia provando un nuovo programma che svolga questo ruolo.
modprobe — definisce la posizione del programma da utilizzare per caricare, quando necessario, i moduli del kernel. Il valore predefinito di /sbin/modprobe indica che kmod lo chiamerà proprio per caricare il modulo quando un kernel lo richiede (con kmod).
msgmax — definisce la dimensione massima dei messaggi inviati da un processo all'altro, che di default è impostata su 8192 byte. Si consiglia di evitare di aumentare questo valore, poiché i messaggi in coda tra i vari processi vengono immagazzinati nella memoria "non swappable" del kernel e un qualsiasi aumento in msgmax comporterebbe un aumento della quantità di RAM necessaria per il sistema.
msgmnb — stabilisce il numero massimo di byte consentiti per una singola coda di messaggi. Il numero predefinito è 16384.
msgmni — definisce il numero massimo di identificatori consentiti per una coda di messaggi. Il valore predefinito è 16.
osrelease — elenca il numero di release del kernel di Linux. Questo file può essere modificato solo cambiando il sorgente del kernel e ricompilando.
ostype — visualizza il tipo di sistema operativo. Di default, questo file è impostato su Linux e questo valore può essere modificato solo cambiando il sorgente del kernel e ricompilando.
overflowgid e overflowuid — definiscono rispettivamente l'ID di gruppo e l'ID utente da utilizzare con le chiamate di sistema su architetture che supportano soltanto ID utente e di gruppo a 16 bit.
panic — determina di quanti secondi il kernel posticiperà il riavvio del sistema qualora si verificassero dei problemi. Il valore predefinito, che è impostato su 0, disattiva il riavvio automatico in seguito a una crisi del kernel.
printk — questo file controlla una serie di impostazioni relative alla stampa o alla registrazione di messaggi di errore. Ciascun messaggio di errore riportato dal kernel è associato a un livello di log che determina l'importanza del messaggio stesso. I valori del livello di log si articolano come segue:
0 — emergenza kernel: il sistema è inutilizzabile.
1 — allarme kernel: è necessario un intervento immediato.
2 — il kernel è in condizioni critiche.
3 — errore generale del kernel.
4 — avvertimento sulle condizioni generali del kernel.
5 — condizioni del kernel normali ma significative.
6 — messaggio informativo riguardo al kernel.
7 — messaggi a livello di debug riguardanti il kernel.
Nel file printk sono presenti quattro valori:
6 4 1 7 |
Ciascuno di questi valori definisce una regola distinta per la gestione dei messaggi di errore. Il primo valore, che si chiama livello di log della console, indica la priorità più bassa dei messaggi che verranno visualizzati sulla console (più è bassa la priorità, più è alto il numero del livello di log). Il secondo valore definisce il valore predefinito del livello di log per i messaggi cui non è associato un livello di log specificato. Il terzo valore indica la configurazione più bassa per il livello di log della console. Infine, l'ultimo numero indica il valore predefinito per il livello di log della console.
rtsig-max — configura il numero massimo di segnali POSIX realtime che il sistema può tenere in coda alla volta. Il valore predefinito è 1024.
rtsig-nr — il numero attuale di segnali POSIX realtime tenuti in coda dal kernel.
sem — configura impostazioni "semaforiche" all'interno del kernel. Per semaforo si intende un oggetto IPC di System V utilizzato per controllare l'uso di un particolare processo.
shmall — stabilisce la quantità totale di memoria condivisa (misurata in byte) che può essere utilizzata sul sistema ogni singola volta. Il valore predefinito è 2097152.
shmmax — stabilisce la dimensione massima (misurata in byte) del segmento di memoria condivisa consentita dal kernel. Il valore predefinito è 33554432, ma il kernel può supportare valori molto più alti di questo.
shmmni — stabilisce il numero massimo di segmenti di memoria condivisa per l'intero sistema, in byte. Il valore predefinito è 4096.
sysrq — attiva il tasto SysRq se questo valore è impostato su un numero diverso da quello di default, ovvero 0. Per informazioni sul tasto SysRq, consultate la la Sezione 5.3.9.
threads-max — stabilisce il numero massimo di thread che il kernel può utilizzare, con un valore di default pari a 2048.
version — visualizza la data e l'ora dell'ultima compilazione del kernel. Il primo campo di questo file, che può essere per esempio #3, si riferisce al numero di volte in cui il kernel è stato costruito dalla base sorgente.
La directory random memorizza numerosi valori relativi alla generazione di numeri casuali per il kernel.
La directory contiene dei sottodirectory inerenti a vari aspetti di networking. Molte configurazioni, durante la compilazione del kernel, rendono disponibili diverse directory, come appletalk, ethernet, ipv4, ipx e ipv6. All'interno di queste directory gli amministratori di sistema possono sistemare i diversi valori di networking in funzione di quella configurazione su un sistema in funzione.
Data l'ampia gamma di possibili opzioni di networking disponibile con Linux, verranno presentate solo le directory /proc/sys/net più comuni.
La directory /proc/sys/net/core contiene una serie di impostazioni che controllano l'interazione tra il kernel e i livelli di networking. I file più importanti sono i seguenti:
message_burst — i decimi di secondo necessari per scrivere un messaggio di avvertimento. Il file viene utilizzato per impedire attacchi Dos (Denial of Service). Il valore predefinito è 50.
message_cost — usato anch'esso per impedire attacchi DoS, ponendo un costo su ogni messaggio di avvertimento. Più alto è il valore di questo file (di default è impostato su 5), maggiore è la probabilità che il messaggio venga ignorato.
Un hacker potrebbe infatti bombardare il sistema di richieste che generano errori e riempiono le partizioni del disco di log o richiedono a tutte le risorse del sistema di gestire logging di errore. Le impostazioni in message_burst e message_cost possono essere modificate in funzione del fattore di rischio accettabile per il sistema contro la necessità di un logging di vasta portata.
netdev_max_backlog — stabilisce il numero massimo di pacchetti che possono restare in coda quando la velocità con cui una particolare interfaccia riceve i pacchetti è superiore a quella con cui il kernel è in grado di elaborarli. Il valore predefinito per questo file è 300.
optmem_max — configura la dimensione massima del buffer ausiliario consentito per ogni socket.
rmem_default — stabilisce la dimensione predefinita (misurata in byte) del buffer del socket per la ricezione.
rmem_max — stabilisce la dimensione massima (misurata in byte) del buffer del socket per la ricezione.
wmem_default — stabilisce la dimensione predefinita (misurata in byte) del buffer del socket per la trasmissione.
wmem_max — stabilisce la dimensione massima (misurata in byte) del socket per la trasmissione.
La directory /proc/sys/net/ipv4 contiene impostazioni di rete aggiuntive. Molte di queste impostazioni, correttamente associate tra loro, sono davvero utili per impedire attacchi al sistema o utilizzare il sistema in modo che funga da router.
![]() | Attenzione |
|---|---|
L'errata modifica di questi file può avere ripercussioni sulla connettività remota al vostro sistema. |
Qui di seguito sono riportati alcuni dei file più importanti contenuti nella directory /proc/sys/net/ipv4/:
icmp_destunreach_rate, icmp_echoreply_rate, icmp_paramprob_rate and icmp_timeexeed_rate — impostano la velocità massima (in centesimi di secondo) di invio dei pacchetti ICMP a degli host a diverse condizioni. Con impostazione 0 vengono rimossi tutti i ritardi ed è, dunque, sconsigliabile.
icmp_echo_ignore_all e icmp_echo_ignore_broadcasts — consentono, rispettivamente, al kernel di ignorare i pacchetti ICMP ECHO provenienti da qualsiasi host o solo quelli provenienti da indirizzi broadcast e multicast. Se è impostato il valore 0 il kernel risponderà positivamente, mentre con valore 1 i pacchetti saranno ignorati.
ip_default_ttl — imposta il TTL (Time To Live) predefinito, ossia il valore che limita il numero di salti che un pacchetto può compiere prima di arrivare a destinazione. Aumentare questo valore può portare a una riduzione nelle prestazioni del sistema.
ip_forward — consente alle interfacce del sistema di inoltrarsi pacchetti a vicenda. Il valore predefinito di questo file è 0 e ciò significa che la funzione di inoltro non è abilitata. Per attivarla occorre impostare il file su 1.
ip_local_port_range — specifica il range di porte che TCP o UDP devono utilizzare quando è richiesta una porta locale. Il primo numero rappresenta la porta più bassa da utilizzare, mentre il secondo numero indica quella più alta. Per i sistemi su cui si prevede di dover utilizzare un numero più elevato di porte rispetto a quello predefinito (da 1024 a 4999) occorre impostare, in questo file, il range 32768 a 61000.
tcp_syn_retries — permette di impostare un limite al numero di tentativi da parte del sistema di trasmettere un pacchetto SYN quando si sta cercando di effettuare una connessione.
tcp_retries1 — imposta il numero di tentativi di trasmissione consentiti quando si sta cercando di rispondere a una connessione in ingresso. Il numero predefinito è 3.
tcp_retries2 — imposta il numero di tentativi consentiti di trasmissione dei pacchetti TCP. Il valore predefinito è 15.
Se desiderate un elenco completo dei file e delle opzioni disponibili nella directory /proc/sys/net/ipv4/, consultate il file /usr/src/linux-2.4/Documentation/networking/ip-sysctl.txt.
All'interno della directory /proc/sys/net/ipv4/ si trovano altre directory relative ad argomenti specifici. La directory conf consente di configurare ciascuna delle interfacce del sistema in modo diverso. Si trovano, tra l'altro, impostazioni predefinite da utilizzare per i dispositivi non configurati (sottodirectory default) e impostazioni che annullano qualsiasi configurazione speciale (sottodirectory all).
La directory /proc/sys/net/ipv4/neigh/ contiene delle regole per communicare con altri sistemi (o host) direttamente collegati al vostro sistema (denominato network neighbour) e inoltre contiene delle regole diverse per sistemi più distanti (più di un hop lontani).
Il routing IPV4 ha la propria directory (/proc/sys/net/ipv4/route/). A differenza di conf/ e neigh, la directory /proc/sys/net/ipv4/route/ contiene delle specifiche di routing applicabili a tutte le interfacce presenti sul sistema. Molte di queste impostazioni, tra cui max_size, max_delay e min_delay, riguardano il controllo delle dimensioni della cache di routing. Per vuotare la cache di routing scrivete qualsiasi valore sul file flush.
Per reperire ulteriori informazioni riguardo a queste directory e ai possibili valori per i relativi file di configurazione consultate il file /usr/src/linux-2.4/Documentation/filesystems/proc.txt.
Questa directory facilita la configurazione del sottosistema VM (virtual memory) del kernel di Linux. Il kernel fa un uso estensivo ed efficiente della memoria virtuale, comunemente nota come spazio di swap.
I seguenti file si trovano normalmente nella directory /proc/sys/vm:
bdflush — imposta i valori relativi al demone bdflush.
buffermem — consente di controllare la percentuale di memoria totale del sistema da utilizzare per la memoria buffer. L'output di questo file ha, di norma, il seguente aspetto:
2 10 60 |
Il primo e l'ultimo valore definiscono rispettivamente la percentuale minima e massima da utilizzare come memoria buffer. Il valore centrale stabilisce la percentuale di memoria di sistema assegnata alla memoria buffer dove il sottosistema di gestione della memoria inizierà a vuotare la cache di buffer, più che altri tipi di memoria, per compensare una generale carenza di memoria libera.
kswapd — imposta i valori relativi al demone kswapd del kernel per le operazioni di swap out. Questo file presenta tre valori
512 32 8 |
Il primo valore stabilisce il numero massimo di pagine che kswapd cercherà di liberare in un singolo tentativo. Più alto è questo numero, maggiore è la determinazione con cui il kernel si sposta verso le pagine libere. Il secondo valore stabilisce il numero minimo di tentativi che kswapd può compiere per liberare una pagina. Il terzo valore stabilisce quante pagine alla volta kswapd cerca di scrivere. Impostando in modo adeguato quest'ultimo valore è possibile migliorare le prestazioni di un sistema che usa molto spazio di swap istruendo il kernel affinché scriva pagine con blocchi di dati piuttosto grandi, riducendo al minimo il numero di ricerche su disco.
max_map_count — configura il numero massimo di zone di memoria map di cui può disporre un processo. Di norma, il valore predefinito 65536 risulta appropriato.
overcommit_memory — quando impostato al valore predefinito 0, il kernel calcola la quantità di memoria disponibile e interrompe richieste chiaramente non valide. Sfortunatamente, dato che la memoria è allocata mediante un algoritmo euristico invece di di uno preciso, il sistema può risultare sovraccarico.
Se overcommit_memory è impostato a 1, viene aumentato il potenziale di sovraccarico del sistema, così come le prestazioni per attività che richiedono molta memoria, come quelle utilizzate da alcune applicazioni scientifiche.
Per coloro che desiderano meno rischi di sovraccarico di memoria sono state aggiunte le due opzioni riportate di seguito. L'impostazione di overcommit_memory a 2 porta a un'interruzione se una richiesta di memoria aggiunge oltre la metà di RAM fisica, oltre allo swap. L'impostazione a 3 porta a un'interruzione se la richiesta di memoria aggiunge un valore superiore a quello che lo swap da solo può contenere.
pagecache — controlla la quantità di memoria utilizzata dalla cache della pagina. I valori contenuti in pagecache sono percentuali e funzionano in modo analogo a buffermem per stabilire quantità massime e minime di memoria di pagina della cache disponibile.
page-cluster — stabilisce il numero di pagine lette in una volta. Il valore predefinito (4), che di fatto si riferisce a 16 pagine, risulta adeguato per la maggior parte dei sistemi.
pagetable_cache — controlla il numero di page table che vengono memorizzate in cache per processore. Il primo e il secondo valore si riferiscono rispettivamente al numero minimo e al numero massimo di page table da memorizzare.
Per maggiori informazioni su questi file consultate il file /usr/src/linux-2.4/Documentation/sysctl/vm.txt.
La directory contiene informazioni sulle risorse di System V IPC. I file contenuti in questa directory riguardano le chiamate di System V IPC per i messaggi (msg), i semafori (sem) e la memoria condivisa (shm).
La directory contiene informazioni circa i dispositivi tty disponibili e attualmente in uso sul sistema. I terminali a carattere, che in origine si chiamavano dispositivi teletype (telescriventi), vengono ora chiamati dispositivi tty.
In Linux esistono tre diversi tipi di dispositivi tty. I
dispositivi seriali vengono utilizzati con le
connessioni seriali (per esempio tramite un modem o un cavo seriale).
I terminal virtuali creano la comune connessione di
console (per esempio le console virtuali disponibili quando viene digitata
la combinazione di tasti
serial /dev/cua 5 64-127 serial:callout serial /dev/ttyS 4 64-127 serial pty_slave /dev/pts 136 0-255 pty:slave pty_master /dev/ptm 128 0-255 pty:master pty_slave /dev/ttyp 3 0-255 pty:slave pty_master /dev/pty 2 0-255 pty:master /dev/vc/0 /dev/vc/0 4 0 system:vtmaster /dev/ptmx /dev/ptmx 5 2 system /dev/console /dev/console 5 1 system:console /dev/tty /dev/tty 5 0 system:/dev/tty unknown /dev/vc/%d 4 1-63 console |
Il file /proc/tty/driver/serial elenca le statistiche di utilizzo e lo stato di ciascuna delle linee tty seriali.
Per poter utilizzare i dispositivi tty in modo analogo ai dispositivi di rete, il kernel di Linux applica al dispositivo una disciplina di linea. Questo consente al driver di inserire uno specifico tipo di intestazione in ogni blocco di dati trasmesso tramite il dispositivo, permettendo così, all'estremo della connessione, di vedere un blocco di dati come singola parte di un flusso di blocchi di dati. SLIP e PPP sono comuni discipline di linea utilizzate per connettere tra loro vari sistemi mediante collegamento seriale.
Le discipline di linea registrate sono memorizzate nel file ldiscs e informazioni dettagliate sono disponibili nella directory ldisc.