GNU/Linux >> Linux Esercitazione >  >> Cent OS

Comprensione del file system /proc

Il file system proc contiene una gerarchia di file speciali che rappresentano lo stato corrente del kernel. Prende il nome dal suo scopo originale, che è un'interfaccia per le strutture all'interno dei processi in esecuzione per supportare gli strumenti di debug. Linux lo ha adottato da Solaris ma ha anche aggiunto l'interfaccia al kernel. Il file system proc è diventato piuttosto disordinato nel corso degli anni, quindi Linux ha creato il file system sysfs per ripulirlo.

I file nella directory /proc contengono informazioni sull'hardware e sui processi correnti in esecuzione sul sistema. I file che hanno il permesso di scrittura possono essere modificati per cambiare la configurazione del kernel.

File system virtuale

I file nella directory /proc sono file virtuali; pertanto, proc è indicato come un file system virtuale. La maggior parte dei file virtuali ha una dimensione pari a zero byte ma contiene una grande quantità di informazioni quando viene visualizzata. La maggior parte dei timbri di data e ora sui file virtuali riflette l'ora e la data correnti; tuttavia, questi file sono costantemente aggiornati.

I file virtuali come /proc/interrupts, /proc/meminfo, /proc/cpuinfo e /proc/devices forniscono una vista dell'hardware del sistema. Altri, come il file /proc/filesystems e la directory /proc/sys, forniscono informazioni sulla configurazione del sistema e interfacce. I file contenenti informazioni su argomenti simili sono raggruppati in directory virtuali. Ad esempio, le directory dei processi contengono informazioni su ogni processo in esecuzione sul sistema.

Visualizzazione di file virtuali

La maggior parte dei file virtuali all'interno di /proc può essere visualizzata utilizzando comandi come cat, more e less. Ad esempio, per visualizzare le informazioni sulla CPU del sistema, immettere:

# cat /proc/cpuinfo 
processor	: 0
vendor_id	: GenuineIntel
cpu family	: 6
model		: 79
model name	: Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz
stepping	: 1
microcode	: 0x1
cpu MHz		: 2199.998
cache size	: 30720 KB
physical id	: 0
siblings	: 1
core id		: 0
cpu cores	: 1
apicid		: 0
initial apicid	: 0
fpu		: yes
fpu_exception	: yes
cpuid level	: 13
wp		: yes
flags		: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon rep_good nopl eagerfpu pni pclmulqdq vmx ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
bogomips	: 4399.99
clflush size	: 64
cache_alignment	: 64
address sizes	: 40 bits physical, 48 bits virtual
power management:

È possibile accedere a determinati file solo con i privilegi di root. Alcuni file in /proc contengono informazioni che non sono leggibili dall'uomo. Utilizzare utilità come lspci, free e top per visualizzare questi file. Ad esempio, usa il comando lspci per elencare tutti i dispositivi PCI:

# lspci
00:00.0 Host bridge: Intel Corporation 440FX - 82441FX PMC [Natoma] (rev 02)
00:01.0 ISA bridge: Intel Corporation 82371SB PIIX3 ISA [Natoma/Triton II]
00:01.1 IDE interface: Intel Corporation 82371SB PIIX3 IDE [Natoma/Triton II]
00:01.2 USB controller: Intel Corporation 82371SB PIIX3 USB [Natoma/Triton II] (rev 01)
00:01.3 Bridge: Intel Corporation 82371AB/EB/MB PIIX4 ACPI (rev 03)
00:02.0 VGA compatible controller: Red Hat, Inc. QXL paravirtual graphic card (rev 04)
00:03.0 Ethernet controller: Red Hat, Inc Virtio network device
00:04.0 SCSI storage controller: Red Hat, Inc Virtio SCSI
00:05.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:06.0 SCSI storage controller: Red Hat, Inc Virtio block device
00:07.0 Unclassified device [00ff]: Red Hat, Inc Virtio memory balloon

Modifica dei file virtuali

La maggior parte dei file virtuali all'interno della directory /proc sono di sola lettura. Tuttavia, alcuni sono scrivibili e possono essere usati per regolare le impostazioni nel kernel. Ciò è particolarmente vero per i file nella directory /proc/sys. Per modificare il valore di un file virtuale, utilizza la seguente sintassi:

# echo value > /proc/file

Ad esempio, per modificare il nome host, immettere:

# echo www.example.com > /proc/sys/kernel/hostname

Altri file agiscono come opzioni binarie o booleane. La visualizzazione del file restituisce uno 0 (off o false) o un 1 (on o true). Esempio:

# cat /proc/sys/net/ipv4/ip_forward 
0

Lo 0 indica che il kernel non sta inoltrando pacchetti di rete. Per attivare l'inoltro dei pacchetti:

# echo 1 > /proc/sys/net/ipv4/ip_forward
# cat /proc/sys/net/ipv4/ip_forward
1

File di primo livello all'interno di /proc

Alcuni dei file virtuali più utili nel livello superiore della directory /proc sono descritti qui. Questo non vuole essere un elenco completo, ma fornire esempi di alcuni file e del loro scopo. Molti di questi file sono descritti ulteriormente nelle lezioni applicabili.

  • /proc/buddyinfo :questo file viene utilizzato principalmente per diagnosticare problemi di frammentazione della memoria.
  • /proc/cmdline :Questo file mostra i parametri passati al kernel al momento dell'avvio.
  • /proc/cpuinfo :questo file virtuale identifica il tipo di processore utilizzato dal tuo sistema.
  • /proc/crypto :questo file elenca tutti i codici crittografici installati utilizzati dal kernel Linux, inclusi i dettagli aggiuntivi per ciascuno.
  • /proc/devices :Questo file mostra i vari dispositivi a caratteri ea blocchi attualmente configurati (esclusi i dispositivi i cui moduli non sono caricati).
  • /proc/dma :questo file contiene un elenco dei canali ISA DMA registrati in uso.
  • /proc/execdomains :questo file elenca i domini di esecuzione attualmente supportati dal kernel Linux, insieme alla gamma di personalità che supportano.
  • /proc/filesystems :Questo file mostra un elenco dei tipi di file system attualmente supportati dal kernel. La prima colonna indica se il file system è montato su un dispositivo a blocchi. Quelli che iniziano con nodev non sono montati su un dispositivo. La seconda colonna elenca i nomi dei file system supportati. Il comando mount scorre i file system qui elencati quando non ne viene specificato uno come argomento.
  • /proc/interrupts :questo file registra il numero di interrupt per IRQ sull'architettura x86.
  • /proc/iomem :questo file mostra la mappa corrente della memoria del sistema per ogni dispositivo fisico.
  • /proc/ioports :questo file fornisce un elenco delle regioni delle porte attualmente registrate utilizzate per la comunicazione di input o output con un dispositivo.
  • /proc/kcore :questo file rappresenta la memoria fisica del sistema ed è archiviato nel formato file core. Il contenuto di questo file è progettato per essere esaminato da un debugger, come gdb, e non è leggibile dall'uomo.
  • /proc/kmsg :Questo file viene utilizzato per contenere i messaggi generati dal kernel. Questi messaggi vengono poi presi da altri programmi, come /bin/dmesg.
  • /proc/loadavg :questo file fornisce uno sguardo al carico medio relativo sia alla CPU che all'I/O nel tempo, nonché ai dati aggiuntivi utilizzati dall'uptime e da altri comandi.
  • /proc/locks :Questo file mostra i file attualmente bloccati dal kernel. Il contenuto di questo file contiene dati di debug interni del kernel e può variare enormemente, a seconda dell'uso del sistema.
  • /proc/mdstat :questo file contiene le informazioni correnti per le configurazioni RAID a più dischi.
  • /proc/meminfo :questo file riporta una grande quantità di informazioni preziose sull'utilizzo della RAM del sistema.
  • /proc/modules :Questo file mostra un elenco di tutti i moduli caricati nel kernel. La maggior parte di queste informazioni può essere visualizzata anche utilizzando il comando /sbin/lsmod.

Elabora directory in /proc

La directory /proc contiene directory con nomi numerici. Queste directory prendono il nome dall'ID processo di un programma e contengono informazioni su quel processo. Il proprietario e il gruppo di ciascuna directory di processo sono impostati sull'utente che esegue il processo. Ciascuna directory di processo contiene diversi file tra cui:

  • linea cmd :Il comando emesso all'avvio del processo
  • cwd :un collegamento simbolico alla directory di lavoro corrente per il processo
  • ambiente :un elenco delle variabili di ambiente per il processo
  • exe :Un collegamento simbolico all'eseguibile di questo processo
  • fd :La directory contenente tutti i descrittori di file per un particolare processo
  • mappe :un elenco di mappe di memoria per eseguibili e file di libreria associati al processo
  • mem :La memoria detenuta dal processo (il file non può essere letto dall'utente)
  • radice :Un collegamento alla directory principale del processo
  • statistica :lo stato del processo incluso lo stato di esecuzione e l'utilizzo della memoria
  • statistica :Lo stato della memoria utilizzata dal processo
  • stato :Lo stato del processo in una forma più leggibile rispetto a stat o statm

Altre directory in /proc

Altre directory all'interno della directory/proc raggruppano informazioni simili per argomento. Quello che segue è un elenco parziale di queste directory:

  • /proc/bus :Questa directory contiene informazioni sui vari bus disponibili sul sistema. Le sottodirectory ei file disponibili all'interno di /proc/bus variano a seconda dei dispositivi collegati al sistema.
  • /proc/bus/pci, /proc/bus/usb :È possibile ottenere un elenco di tutti i dispositivi PCI e USB presenti nel sistema utilizzando il comando cat sul file dei dispositivi all'interno di queste directory, ma l'output è difficile da leggere e interpretare. Per un elenco di dispositivi leggibile dall'uomo, eseguire i comandi lspci e lsusb.
  • /proc/driver :Questa directory contiene informazioni per driver specifici utilizzati dal kernel.
  • /proc/fs :Questa directory mostra quali file system vengono esportati. Se si esegue un server NFS, digitando cat /proc/fs/nfsd/exports vengono visualizzati i file system condivisi e le autorizzazioni.
  • /proc/irq :questa directory viene utilizzata per impostare l'IRQ sull'affinità della CPU, che consente al sistema di collegare un particolare IRQ a una sola CPU. In alternativa, può escludere una CPU dalla gestione di qualsiasi IRQ.
  • /proc/self/net :questa directory fornisce uno sguardo completo a vari parametri e statistiche di rete. Ciascuna directory e file virtuale all'interno di questa directory descrive aspetti della configurazione di rete del sistema. Il file /proc/net è un collegamento simbolico a questa directory.
  • /proc/scsi :Il file principale in questa directory è /proc/scsi/scsi, che contiene un elenco di tutti i dispositivi SCSI riconosciuti. Da questo elenco sono disponibili il tipo di dispositivo, il nome del modello, il fornitore, il canale SCSI e i dati ID.
  • /proc/sys :Questa directory è diversa dalle altre in /proc, perché non solo fornisce informazioni sul sistema, ma consente anche di abilitare e disabilitare immediatamente le funzionalità del kernel. Se un file ha permessi di scrittura, può essere utilizzato per configurare il kernel. La modifica di un valore all'interno di un file /proc/sys/ viene eseguita facendo eco al nuovo valore nel file. Ad esempio, per modificare il nome host in www.example.com :
    # echo www.example.com > /proc/sys/kernel/hostname

    Altri file agiscono come opzioni binarie o booleane. Un valore di 0 rappresenta off o false. Un valore di 1 rappresenta on o true. Ad esempio, per attivare l'inoltro dei pacchetti:

    # echo 1 > /proc/sys/net/ipv4/ip_forward

    Le modifiche apportate utilizzando il comando echo non sono persistenti e scompaiono al riavvio del sistema. Per rendere effettive le modifiche alla configurazione dopo il riavvio del sistema, aggiungile al file /etc/sysctl.conf.

  • /proc/sys/dev :Questa directory fornisce parametri per particolari dispositivi sul sistema.
  • /proc/sys/fs :questa directory contiene opzioni e informazioni relative a vari aspetti del file system, inclusi quota, handle di file e informazioni sugli inode.
  • /proc/sys/kernel :Questa directory contiene una varietà di diversi file di configurazione che influiscono direttamente sul funzionamento del kernel.
  • /proc/sys/net :Questa directory contiene le sottodirectory relative a vari argomenti di rete. Puoi modificare i file all'interno di queste directory per regolare la configurazione di rete su un sistema in esecuzione.
  • /proc/sysvipc :questa directory contiene informazioni sulle risorse di comunicazione interprocesso (IPC) System V. I file in questa directory si riferiscono a chiamate IPC System V per messaggi (msg), semafori (sem) e memoria condivisa (shm).
  • /proc/tty :questa directory contiene informazioni sui dispositivi tty disponibili e attualmente utilizzati sul sistema. Il file dei driver è un elenco dei dispositivi tty attualmente in uso.
Comprendere il file system sysfs (/sys) in Linux


Cent OS
  1. Comprendere il file system Btrfs in Fedora Linux

  2. In che modo Linux gestisce più separatori di percorsi consecutivi (/home////nomeutente///file)?

  3. Centos:qual è la differenza tra /usr/lib/systemd/system e /etc/systemd/system?

  4. Comprensione del file system sysfs (/sys) in Linux

  5. Comprendere il file /etc/exports

Comprendere il file /etc/passwd

Comprendere il file /etc/shadow

/proc/cpuinfo e /proc/meminfo in Linux

Comprendere il file /etc/fstab in Linux

Comprendere i file /proc/mounts, /etc/mtab e /proc/partitions

Comprensione di Linux /proc/id/maps