[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


32. Informazioni dal filesystem virtuale /proc

Nel capitolo introduttivo ai processi elaborativi si è già accennato al ruolo del filesystem virtuale `/proc/' di GNU/Linux. Al suo interno, assieme alla situazione di ogni processo, si possono conoscere molte altre informazioni legate al funzionamento del sistema operativo, oltre alla possibilità, entro certi limiti, di interagire con il kernel per passargli delle informazioni particolari.

Per approfondire il significato e l'interpretazione dei file del filesystem virtuale `/proc/' si può consultare la pagina di manuale proc(5).

32.1 Pacchetto Procinfo

La quantità di informazioni disponibili è tale per cui è facile perdersi tra questi file. Inoltre, con l'evolversi dei kernel cambiano i contenuti dei file virtuali e anche la loro collocazione. A questo proposito sono utili i programmi del pacchetto Procinfo che aiutano ad analizzare tali informazioni per generare dei resoconti e delle statistiche più facili da consultare.

32.1.1 $ procinfo

procinfo [<opzioni>]

Il programma `procinfo' è quello che, dal pacchetto omonimo, dà le informazioni più comuni. I dati vengono visualizzati in forma più o meno tabellare e i campi sono indicati attraverso dei nomi. Il significato di alcuni di questi è descritto nella tabella 32.1.

Nome Descrizione
Memory: Utilizzo della memoria.
Bootup: Data e ora dell'avvio del sistema.
Load average: Carico medio.
user: Tempo per i processi avviati dagli utenti.
nice: Tempo per i processi avviati con un valore nice.
system: Tempo per i processi avviati dal kernel.
idle: Tempo non utilizzato.
uptime: Tempo complessivo di funzionamento.
irq n: Numero di interruzioni e dispositivo corrispondente.
Modules: Moduli del kernel installati.
Character Devices: Elenco dei dispositivi a caratteri.
Block Devices: Elenco dei dispositivi a blocchi.
File Systems: Tipi di filesystem gestibili.

Tabella 32.1: Alcuni dei nomi utilizzati per descrivere i campi delle tabelle generate da `procinfo'.

Quando `procinfo' viene utilizzato senza argomenti si ottengono le informazioni più importanti che possono essere visualizzate su uno schermo normale, per esempio ciò che viene mostrato di seguito:

Linux 2.2.1 (root@dinkel.brot.dg) (gcc 2.7.2.3) #2 [dinkel.brot.dg]

Memory:      Total        Used        Free      Shared     Buffers      Cached
Mem:         29944       29160         784        9080        8656        5084
Swap:        28220        2084       26136

Bootup: Wed Mar 31 07:43:17 1999    Load average: 0.00 0.00 0.00 1/44 769

user  :       0:06:32.78   6.0%  page in :    63919  disk 1:     5197r    4550w
nice  :       0:00:00.00   0.0%  page out:   100215
system:       0:00:46.04   0.7%  swap in :      238  disk 3:       29r       0w
idle  :       1:41:26.13  93.3%  swap out:      886
uptime:       1:48:44.93         context :   103822

irq  0:    652495 timer                 irq  9:      8736 fdomain              
irq  1:     39147 keyboard              irq 12:         0 eth0                 
irq  2:         0 cascade [4]           irq 13:         1 fpu                  
irq  4:       502 serial                irq 14:      9404 ide0                 
irq  6:         3                       irq 15:       146 ide1                 

Eventualmente, `procinfo' può essere utilizzato per ottenere un'informazione continua (o quasi), come fa il programma `top'. In questo senso può essere stabilita una pausa tra un aggiornamento e il successivo. Durante questo funzionamento continuo, si possono utilizzare alcuni comandi interattivi, composti da una singola lettera, il cui significato tende a essere coerente con quello delle opzioni della riga di comando. In modo particolare, il comando `q' termina il funzionamento continuo di `procinfo'.

Alcune opzioni

-f

Fa in modo che `procinfo' funzioni in modo continuo, a tutto-schermo.

-n<n-secondi>

Questa opzione implica automaticamente la selezione di `-f', e serve a stabilire un intervallo tra un aggiornamento e l'altro delle informazioni visualizzate.

-m

Mostra le informazioni sui moduli e sui dispositivi a caratteri e a blocchi, trascurando i dati relativi alla CPU e alla memoria.

-a

Mostra tutte le informazioni disponibili, ma per questo non bastano le dimensioni di uno schermo normale.

-d

Mostra le informazioni normali, cioè quelle sull'utilizzo della CPU, della memoria e delle interruzioni (interrupt), ma riferite a periodi di un secondo. Ciò richiede il funzionamento di `procinfo' in modo continuo, e infatti questa opzione implica automaticamente l'uso di `-f'.

-F<file>

Ridirige l'output in un file, che di solito corrisponde al dispositivo di una console virtuale inutilizzata.

32.1.2 $ lsdev

lsdev

`lsdev' è un programma molto semplice che si limita a mostrare una tabella con informazioni tratte dai file `/proc/interrupts', `/proc/ioports' e `/proc/dma'. In pratica mostra tutti gli indirizzi relativi all'hardware installato.

Il risultato che si ottiene potrebbe essere simile a quello seguente:

Device            DMA   IRQ  I/O Ports
------------------------------------------------
                      0 1 2 4 9 12 13 14 15 
cascade             4       
dma                          0080-008f
dma1                         0000-001f
dma2                         00c0-00df
eth0                         ff80-ff9f
fdomain                      ffa0-ffaf
fpu                          00f0-00ff
ide0                         01f0-01f7 03f6-03f6 8000-8007
ide1                         0170-0177 0376-0376 8008-800f
keyboard                     0060-006f
parport0                     0378-037a
pic1                         0020-003f
pic2                         00a0-00bf
serial                       02f8-02ff 03f8-03ff
timer                        0040-005f
vga+                         03c0-03df

32.1.3 $ socklist

socklist

`socklist' è un programma molto semplice che si limita a mostrare una tabella con informazioni tratte dai file `/proc/net/tcp', `/proc/net/udp' e `/proc/net/raw', integrandoli con le informazioni relative ai descrittori dei file di ogni processo, ovvero `/proc/*/fd/*'.

Si tratta di informazioni utili per ciò che riguarda la gestione della rete, tuttavia questo programma viene mostrato qui per completare l'argomento di questo capitolo. Di seguito viene mostrato un esempio del risultato che si può ottenere con `socklist'.

type  port      inode     uid    pid   fd  name
tcp     80        246       0      0    0  
tcp   8080        245       0      0    0  
tcp     25        230       0      0    0  
tcp   2049        215       0      0    0  
tcp    515        205       0      0    0  
tcp    635        195       0      0    0  
tcp     53        169       0      0    0  
tcp     53        167       0      0    0  
tcp     98        156       0      0    0  
tcp    113        155       0      0    0  
tcp     37        153       0      0    0  
tcp     79        152       0      0    0  
tcp    143        151       0      0    0  
tcp    110        150       0      0    0  
tcp    109        149       0      0    0  
tcp    513        146       0      0    0  
tcp    514        145       0      0    0  
tcp     70        144       0      0    0  
tcp     23        143       0      0    0  
tcp     21        142       0      0    0  
tcp    111        106       0      0    0  
udp   2049        212       0      0    0  
udp    635        190       0      0    0  
udp   1024        170       0      0    0  
udp     53        168       0      0    0  
udp     53        166       0      0    0  
udp     37        154       0      0    0  
udp    518        148       0      0    0  
udp    517        147       0      0    0  
udp    514        115       0      0    0  
udp    111        105       0      0    0  
raw      1          0       0      0    0  
raw      6          0       0      0    0  

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]