Ricerca nel sito web

/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.