GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Verständnis des /proc-Dateisystems

Das proc-Dateisystem enthält eine Hierarchie spezieller Dateien, die den aktuellen Zustand des Kernels darstellen. Es ist nach seinem ursprünglichen Zweck benannt, der eine Schnittstelle zu den Strukturen innerhalb laufender Prozesse ist, um Debugging-Tools zu unterstützen. Linux hat dies von Solaris übernommen, aber auch die Schnittstelle zum Kernel hinzugefügt. Das proc-Dateisystem ist im Laufe der Jahre ziemlich unordentlich geworden, also hat Linux das sysfs-Dateisystem erstellt, um es aufzuräumen.

Dateien im Verzeichnis /proc enthalten Informationen über Ihre Hardware und aktuelle Prozesse, die auf Ihrem System ausgeführt werden. Dateien mit Schreibrechten können modifiziert werden, um die Konfiguration des Kernels zu ändern.

Virtuelles Dateisystem

Dateien im Verzeichnis /proc sind virtuelle Dateien; Daher wird proc als virtuelles Dateisystem bezeichnet. Die meisten virtuellen Dateien werden mit einer Größe von null Byte aufgelistet, enthalten jedoch eine große Menge an Informationen, wenn sie angezeigt werden. Die meisten Zeit- und Datumsstempel auf virtuellen Dateien geben die aktuelle Uhrzeit und das aktuelle Datum wieder; Diese Dateien werden jedoch ständig aktualisiert.

Virtuelle Dateien wie /proc/interrupts, /proc/meminfo, /proc/cpuinfo und /proc/devices bieten einen Überblick über die Hardware des Systems. Andere, wie die Datei /proc/filesystems und das Verzeichnis /proc/sys, bieten Systemkonfigurationsinformationen und Schnittstellen. Dateien mit Informationen zu ähnlichen Themen werden in virtuellen Verzeichnissen gruppiert. Beispielsweise enthalten Prozessverzeichnisse Informationen über jeden laufenden Prozess auf dem System.

Virtuelle Dateien anzeigen

Die meisten virtuellen Dateien in /proc können mit Befehlen wie cat, more und less angezeigt werden. Um beispielsweise Informationen über die CPU des Systems anzuzeigen, geben Sie Folgendes ein:

# 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:

Auf bestimmte Dateien kann nur mit Root-Rechten zugegriffen werden. Einige Dateien in /proc enthalten Informationen, die für Menschen nicht lesbar sind. Verwenden Sie Dienstprogramme wie lspci, free und top, um diese Dateien anzuzeigen. Verwenden Sie beispielsweise den lspci-Befehl, um alle PCI-Geräte aufzulisten:

# 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

Virtuelle Dateien ändern

Die meisten virtuellen Dateien im /proc-Verzeichnis sind schreibgeschützt. Einige sind jedoch beschreibbar und können verwendet werden, um Einstellungen im Kernel anzupassen. Dies gilt insbesondere für Dateien im Verzeichnis /proc/sys. Um den Wert einer virtuellen Datei zu ändern, verwenden Sie die folgende Syntax:

# echo value > /proc/file

Um beispielsweise den Hostnamen zu ändern, geben Sie Folgendes ein:

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

Andere Dateien fungieren als binäre oder boolesche Schalter. Beim Anzeigen der Datei wird entweder eine 0 (aus oder falsch) oder eine 1 (ein oder wahr) zurückgegeben. Beispiel:

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

Die 0 zeigt an, dass der Kernel keine Netzwerkpakete weiterleitet. So schalten Sie die Paketweiterleitung ein:

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

Dateien der obersten Ebene innerhalb von /proc

Einige der nützlicheren virtuellen Dateien in der obersten Ebene des /proc-Verzeichnisses werden hier beschrieben. Dies soll keine vollständige Liste sein, sondern Beispiele für einige der Dateien und ihren Zweck geben. Viele dieser Dateien werden in entsprechenden Lektionen näher beschrieben.

  • /proc/buddyinfo :Diese Datei wird hauptsächlich zur Diagnose von Problemen mit der Speicherfragmentierung verwendet.
  • /proc/cmdline :Diese Datei zeigt die Parameter, die beim Start an den Kernel übergeben wurden.
  • /proc/cpuinfo :Diese virtuelle Datei identifiziert den von Ihrem System verwendeten Prozessortyp.
  • /proc/crypto :Diese Datei listet alle installierten kryptografischen Chiffren auf, die vom Linux-Kernel verwendet werden, einschließlich zusätzlicher Details für jeden.
  • /proc/devices :Diese Datei zeigt die verschiedenen derzeit konfigurierten Zeichen- und Blockgeräte an (ohne Geräte, deren Module nicht geladen sind).
  • /proc/dma :Diese Datei enthält eine Liste der verwendeten registrierten ISA-DMA-Kanäle.
  • /proc/execdomains :Diese Datei listet die Ausführungsdomänen auf, die derzeit vom Linux-Kernel unterstützt werden, zusammen mit der Reihe von Persönlichkeiten, die sie unterstützen.
  • /proc/filesystems :Diese Datei zeigt eine Liste der derzeit vom Kernel unterstützten Dateisystemtypen an. Die erste Spalte gibt an, ob das Dateisystem auf einem Blockgerät gemountet ist. Diejenigen, die mit nodev beginnen, werden nicht auf einem Gerät gemountet. Die zweite Spalte listet die Namen der unterstützten Dateisysteme auf. Der mount-Befehl durchläuft die hier aufgelisteten Dateisysteme, wenn keines als Argument angegeben ist.
  • /proc/interrupts :Diese Datei zeichnet die Anzahl der Interrupts pro IRQ auf der x86-Architektur auf.
  • /proc/iomem :Diese Datei zeigt Ihnen die aktuelle Karte des Systemspeichers für jedes physische Gerät.
  • /proc/ioports :Diese Datei enthält eine Liste der derzeit registrierten Portregionen, die für die Eingabe- oder Ausgabekommunikation mit einem Gerät verwendet werden.
  • /proc/kcore :Diese Datei stellt den physischen Speicher des Systems dar und wird im Core-Dateiformat gespeichert. Der Inhalt dieser Datei wurde entwickelt, um von einem Debugger wie gdb untersucht zu werden, und ist nicht für Menschen lesbar.
  • /proc/kmsg :Diese Datei wird verwendet, um vom Kernel generierte Nachrichten zu speichern. Diese Nachrichten werden dann von anderen Programmen wie /bin/dmesg.
  • abgeholt
  • /proc/loadavg :Diese Datei bietet einen Blick auf die durchschnittliche Auslastung in Bezug auf CPU und E/A im Laufe der Zeit sowie auf zusätzliche Daten, die von der Betriebszeit und anderen Befehlen verwendet werden.
  • /proc/locks :Diese Datei zeigt die aktuell vom Kernel gesperrten Dateien an. Der Inhalt dieser Datei enthält interne Kernel-Debugging-Daten und kann je nach Verwendung des Systems stark variieren.
  • /proc/mdstat :Diese Datei enthält die aktuellen Informationen für RAID-Konfigurationen mit mehreren Festplatten.
  • /proc/meminfo :Diese Datei meldet eine große Menge wertvoller Informationen über die RAM-Nutzung des Systems.
  • /proc/modules :Diese Datei zeigt eine Liste aller in den Kernel geladenen Module an. Die meisten dieser Informationen können auch mit dem Befehl /sbin/lsmod eingesehen werden.

Prozessverzeichnisse in /proc

Das Verzeichnis /proc enthält Verzeichnisse mit numerischen Namen. Diese Verzeichnisse sind nach der Prozess-ID eines Programms benannt und enthalten Informationen zu diesem Prozess. Der Eigentümer und die Gruppe jedes Prozessverzeichnisses werden auf den Benutzer festgelegt, der den Prozess ausführt. Jedes Prozessverzeichnis enthält mehrere Dateien, darunter:

  • Befehlszeile :Der Befehl, der beim Starten des Prozesses ausgegeben wird
  • cwd :Ein symbolischer Link zum aktuellen Arbeitsverzeichnis für den Prozess
  • Umgebung :Eine Liste der Umgebungsvariablen für den Prozess
  • exe :Ein symbolischer Link zur ausführbaren Datei dieses Prozesses
  • fd :Das Verzeichnis, das alle Dateideskriptoren für einen bestimmten Prozess enthält
  • Karten :Eine Liste von Speicherzuordnungen zu ausführbaren Dateien und Bibliotheksdateien, die dem Prozess zugeordnet sind
  • Speicher :Der vom Prozess gehaltene Speicher (die Datei kann vom Benutzer nicht gelesen werden)
  • root :Ein Link zum Stammverzeichnis des Prozesses
  • Statistik :Der Status des Prozesses, einschließlich Ausführungsstatus und Speichernutzung
  • Statistik :Der Status des vom Prozess verwendeten Speichers
  • Status :Der Status des Prozesses in besser lesbarer Form als stat oder statm

Andere Verzeichnisse in /proc

Andere Verzeichnisse innerhalb des /proc-Verzeichnisses gruppieren ähnliche Informationen nach Thema. Das Folgende ist eine unvollständige Liste dieser Verzeichnisse:

  • /proc/bus :Dieses Verzeichnis enthält Informationen über die verschiedenen im System verfügbaren Busse. Welche Unterverzeichnisse und Dateien in /proc/bus verfügbar sind, hängt von den an das System angeschlossenen Geräten ab.
  • /proc/bus/pci, /proc/bus/usb :Sie können eine Liste aller im System vorhandenen PCI- und USB-Geräte abrufen, indem Sie den cat-Befehl für die Gerätedatei in diesen Verzeichnissen verwenden, aber die Ausgabe ist schwer zu lesen und zu interpretieren. Führen Sie für eine menschenlesbare Geräteliste die Befehle lspci und lsusb aus.
  • /proc/driver :Dieses Verzeichnis enthält Informationen für bestimmte Treiber, die vom Kernel verwendet werden.
  • /proc/fs :Dieses Verzeichnis zeigt, welche Dateisysteme exportiert werden. Wenn Sie einen NFS-Server ausführen, zeigt die Eingabe von cat /proc/fs/nfsd/exports die freigegebenen Dateisysteme und die Berechtigungen an.
  • /proc/irq :Dieses Verzeichnis wird verwendet, um die IRQ-zu-CPU-Affinität einzustellen, was es dem System ermöglicht, einen bestimmten IRQ mit nur einer CPU zu verbinden. Alternativ kann es eine CPU von der Bearbeitung von IRQs ausschließen.
  • /proc/self/net :Dieses Verzeichnis bietet einen umfassenden Überblick über verschiedene Netzwerkparameter und Statistiken. Jedes Verzeichnis und jede virtuelle Datei in diesem Verzeichnis beschreibt Aspekte der Netzwerkkonfiguration des Systems. Die Datei /proc/net ist ein symbolischer Link zu diesem Verzeichnis.
  • /proc/scsi :Die primäre Datei in diesem Verzeichnis ist /proc/scsi/scsi, die eine Liste aller erkannten SCSI-Geräte enthält. Aus dieser Auflistung sind der Gerätetyp sowie Modellname, Hersteller, SCSI-Kanal und ID-Daten verfügbar.
  • /proc/sys :Dieses Verzeichnis unterscheidet sich von anderen in /proc, da es nicht nur Informationen über das System bereitstellt, sondern Ihnen auch ermöglicht, Kernelfunktionen sofort zu aktivieren und zu deaktivieren. Wenn eine Datei Schreibrechte hat, kann sie zur Konfiguration des Kernels verwendet werden. Das Ändern eines Werts innerhalb einer /proc/sys/-Datei erfolgt durch Echos des neuen Werts in die Datei. Zum Beispiel, um den Hostnamen in www.example.com zu ändern :
    # echo www.example.com > /proc/sys/kernel/hostname

    Andere Dateien fungieren als binäre oder boolesche Schalter. Ein Wert von 0 steht für „off“ oder „false“. Ein Wert von 1 steht für on oder true. Um beispielsweise die Paketweiterleitung einzuschalten:

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

    Änderungen, die mit dem echo-Befehl vorgenommen werden, sind nicht dauerhaft und verschwinden, wenn das System neu gestartet wird. Damit Konfigurationsänderungen nach dem Neustart des Systems wirksam werden, fügen Sie sie zur Datei /etc/sysctl.conf hinzu.

  • /proc/sys/dev :Dieses Verzeichnis enthält Parameter für bestimmte Geräte im System.
  • /proc/sys/fs :Dieses Verzeichnis enthält Optionen und Informationen zu verschiedenen Aspekten des Dateisystems, einschließlich Quota, Datei-Handle und Inode-Informationen.
  • /proc/sys/kernel :Dieses Verzeichnis enthält eine Vielzahl unterschiedlicher Konfigurationsdateien, die sich direkt auf den Betrieb des Kernels auswirken.
  • /proc/sys/net :Dieses Verzeichnis enthält Unterverzeichnisse zu verschiedenen Netzwerkthemen. Sie können die Dateien in diesen Verzeichnissen ändern, um die Netzwerkkonfiguration auf einem laufenden System anzupassen.
  • /proc/sysvipc :Dieses Verzeichnis enthält Informationen zu System V Interprocess Communication (IPC)-Ressourcen. Die Dateien in diesem Verzeichnis beziehen sich auf System-V-IPC-Aufrufe für Nachrichten (msg), Semaphoren (sem) und gemeinsam genutzten Speicher (shm).
  • /proc/tty :Dieses Verzeichnis enthält Informationen über die verfügbaren und derzeit verwendeten tty-Geräte auf dem System. Die Treiberdatei ist eine Liste der aktuell verwendeten tty-Geräte.
Verständnis des sysfs-Dateisystems (/sys) in Linux


Cent OS
  1. Verständnis des Btrfs-Dateisystems in Fedora Linux

  2. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  3. Linux – Wie oft wird das Proc-Dateisystem unter Linux aktualisiert?

  4. Centos – Was ist der Unterschied zwischen /usr/lib/systemd/system und /etc/systemd/system?

  5. Verstehen der dm-multipath-Konfigurationsdatei /etc/multipath.conf

Verstehen der /etc/passwd-Datei

Verstehen der /etc/shadow-Datei

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux

Verstehen der /etc/fstab-Datei unter Linux

Die Dateien /proc/mounts, /etc/mtab und /proc/partitions verstehen

Verständnis von Linux /proc/id/maps