/proc - Ottieni informazioni sul processo e sull'hardware di Linux
Oggi approfondiremo i contenuti della directory /proc per sviluppare una migliore comprensione delle sue funzionalità. È importante notare che la directory /proc è una caratteristica comune a tutte le distribuzioni Linux, indipendentemente dalla loro versione o architettura.
Un malinteso che dobbiamo subito chiarire è che la directory /proc NON è un file system convenzionale nel senso tradizionale del termine.
È un file system virtuale che contiene informazioni sui processi e altri dati relativi al sistema all'interno del procfs. Questo file system è mappato nella directory /proc e viene montato durante il processo di avvio del sistema.
Cos'è /proc in Linux
Il file system /proc funge da interfaccia per le strutture dati del kernel e le informazioni di runtime, che fornisce un modo sia agli utenti che alle applicazioni di accedere a informazioni dettagliate su processi, configurazione di sistema, hardware e altro, esponendo questi dati attraverso una gerarchia di file virtuali.
Per visualizzare un elenco completo di file e directory nel file system /proc, puoi utilizzare il comando ls come mostrato.
ls /proc
Navigazione in /proc in Linux
Quando navighi nella directory /proc, noterai che ci sono alcuni file dal suono familiare, e poi un sacco di directory numerate, ciascuna corrispondente a un processo in esecuzione sul sistema.
cd /proc
ls
Queste directory numerate rappresentano i processi, meglio conosciuti come ID di processo (PID), e al loro interno un comando che li occupa. I file contengono informazioni di sistema come memoria (meminfo), informazioni sulla CPU (cpuinfo) e file system disponibili.
Ecco alcuni file e directory chiave che incontrerai:
/proc/cpuinfo
– Elenca le informazioni sulle CPU del sistema, come modello, velocità e numero di core./proc/meminfo
– Elenca i dettagli sull'utilizzo della memoria e le statistiche che contengono la quantità totale di memoria, memoria libera e memoria utilizzata da ciascun processo./proc/filesystems
– Contiene un elenco di tutti i filesystem supportati dal kernel./proc/sys
– Elenca la configurazione e i parametri di runtime per il kernel./proc/loadavg
– Mostra il carico medio del sistema su diversi intervalli di tempo come 1, 5 e 15 minuti./proc/self
– Un collegamento simbolico alla directory del processo./proc/stat
– Contiene una varietà di statistiche sul sistema, come il numero di processi in esecuzione, il numero di interruzioni e la quantità di tempo trascorso in ciascuno stato della CPU./proc/uptime
– Contiene la quantità di tempo in cui il sistema è stato in esecuzione./proc/PID
– Contiene informazioni su un processo specifico, dove PID è l'ID del processo.
Estrazione delle informazioni di sistema
/proc/meminfo viene utilizzato per mostrare informazioni sull'utilizzo della memoria e le statistiche di un sistema Linux, che contiene un'istantanea di vari parametri relativi alla memoria, che possono essere utili per monitorare le prestazioni del sistema e l'utilizzo delle risorse .
cat /proc/meminfo
Come puoi vedere, /proc/meminfo contiene una serie di informazioni sulla memoria del tuo sistema, inclusa la quantità totale disponibile (in kb) e la quantità libera nelle prime due linee.
L'esecuzione del comando cat su uno qualsiasi dei file in /proc ne restituirà il contenuto. Le informazioni su qualsiasi file sono disponibili nella pagina man eseguendo:
man 5 /proc/<filename>
Ti darò una rapida panoramica dei file /proc:
- /proc/cmdline – Informazioni sulla riga di comando del kernel.
- /proc/console – Informazioni sulle console attuali, inclusa tty.
- /proc/devices – Driver di dispositivo attualmente configurati per il kernel in esecuzione.
- /proc/dma: informazioni sui canali DMA correnti.
- /proc/fb – Dispositivi framebuffer.
- /proc/filesystems – Filesystem attuali supportati dal kernel.
- /proc/iomem: mappa della memoria di sistema corrente per i dispositivi.
- /proc/ioports: regioni delle porte registrate per la comunicazione input-output con il dispositivo.
- /proc/loadavg – Carico medio del sistema.
- /proc/locks – File attualmente bloccati dal kernel.
- /proc/meminfo – Informazioni sulla memoria di sistema (vedi esempio sopra).
- /proc/misc – Driver vari registrati per i dispositivi principali vari.
- /proc/modules – Moduli del kernel attualmente caricati.
- /proc/mounts – Elenco di tutti i montaggi utilizzati dal sistema.
- /proc/partitions – Informazioni dettagliate sulle partizioni disponibili nel sistema.
- /proc/pci – Informazioni su ogni dispositivo PCI.
- /proc/stat: registrazione o varie statistiche conservate dall'ultimo riavvio.
- /proc/swap – Informazioni sullo spazio di swap.
- /proc/uptime – Informazioni sul tempo di attività (in secondi).
- /proc/version: versione del kernel, versione gcc e distribuzione Linux installate.
Estrazione delle informazioni sul processo
Nelle directory numerate di /proc troverai alcuni file e link. Ricorda che i numeri di queste directory sono correlati al PID del comando eseguito al loro interno.
Ad esempio, la navigazione su /proc/
fornisce dettagli come:
/proc//cmdline
– Argomenti della riga di comando utilizzati per avviare il processo./proc//status
– Informazioni dettagliate sullo stato, incluso l'utilizzo della memoria e le statistiche del processo./proc//fd
– Collegamenti simbolici ai file aperti dal processo.
Usiamo un esempio per visualizzare una cartella chiamata /proc/12.
cd /proc/12
ls
Se corro:
cat /proc/12/status
Ottengo quanto segue:
Che cosa significa questo? Bene, la parte importante è in alto. Possiamo vedere dal file di stato che questo processo appartiene a rcu_tasks_rude_kthread. Il suo stato attuale è idle e il suo ID processo è 12, ovviamente.
Possiamo anche vedere chi lo sta eseguendo, poiché UID e GID sono 0, indicando che questo processo appartiene alla root forte> utente.
In qualsiasi directory numerata, avrai una struttura di file simile, e quelli più importanti con le loro descrizioni, sono i seguenti:
- cmdline – riga di comando del processo
- ambiente – variabili ambientali
- fd – descrittori di file
- limiti: contiene informazioni sui limiti del processo
- montaggi – informazioni correlate
Noterai anche diversi collegamenti nella directory numerata:
- cwd: un collegamento alla directory di lavoro corrente del processo
- exe: collegamento all'eseguibile del processo
- root: collegamento alla directory di lavoro del processo
Questo dovrebbe aiutarti a familiarizzare con la directory /proc. Dovrebbe anche fornire informazioni su come una serie di comandi ottengono le proprie informazioni, come uptime, lsof, mount e ps, solo per citarne alcuni.