Zum Inhalt springen
Startseite » Proc-Dateisystem in Linux

Proc-Dateisystem in Linux

Das Proc-Dateisystem ist eines der am häufigsten verwendeten simulierten Dateisysteme des Linux-Betriebssystems. Wenn das System neu gestartet wird, wird dieses Dateisystem sofort erstellt und anschließend entfernt, wenn das System angehalten wird. Er fungiert als Controller und Wissenszentrum des Kernels und speichert wichtige Informationen über den aktuellen Betrieb. Das proc-Dateisystem wird häufig für die Kommunikation zwischen dem Kernel und dem Linux-Benutzerraum verwendet.
In diesem Artikel werden wir besprechen, wie das proc-Dateisystem in Ubuntu-Linux verwendet wird.

Informationen über das System

Die Untersuchung der Eigenschaften des /proc-Pseudodateisystems und seiner Fähigkeit, Informationen über das laufende Linux-System zu liefern, die Untersuchung der /proc-Struktur und die Entdeckung verschiedener Informationen über den Kernel und die auf dem System laufenden Prozesse sind allesamt Teil des Prozesses zur Sammlung von Informationen über das System.

Auflistung der Verzeichnisinhalte /proc

Als ersten Schritt müssen wir uns im Stammverzeichnis ('/') befinden, von dort aus gelangen wir in das Verzeichnis /proc, wo wir den spezifischen Befehl verwenden, um den Inhalt eines Verzeichnisses für zusätzliche Informationen aufzulisten.

				
					 cd /proc
 ls -l

				
			

Um nur die Verzeichnisse in /proc anzuzeigen, verwenden wir außerdem:

				
					 ls –d */
				
			

Sie werden sehen, dass jede PID eines Prozesses ihr eigenes Verzeichnis hat, wenn Sie die Verzeichnisse auflisten.
Lassen Sie uns nun nach einem bestimmten Prozess mit einer bestimmten PID suchen. Sie können die PID jedes gerade laufenden Prozesses mit dem Befehl ps abrufen.

				
					ps –aux
				
			

Mit dem unten stehenden Befehl können wir auch eine Auswahl für unsere Prozesse treffen.

				
					ps -eo user,pid,ppid,cmd,%mem,%cpu --sort=-%mem
				
			

Wie Sie sehen können, sehen wir nach der Ausführung dieses Befehls nur die Spalten, die im Befehl angegeben wurden, wie z. B. user, pid, ppid, cmd, von jedem Prozess genutzter Speicher und cpu, in der Liste unserer Prozesse.

Sehen wir uns nun weitere Details über einen Prozess an, nehmen wir als Beispiel den Prozess mit PID = 17.

				
					 cd 17
 ls –l

				
			

Unter Linux enthält das Verzeichnis /proc ein Verzeichnis für jeden laufenden Prozess, einschließlich der Kernelprozesse, in Verzeichnissen mit der Bezeichnung /proc/PID.

Im Folgenden sind die vorhandenen Verzeichnisse aufgeführt:

File

representation

/proc/kmsg

Die vom Kernel generierten Nachrichten werden in dieser Datei gespeichert. Andere Programme, wie /sbin/klogd oder /bin/dmesg, nehmen diese Meldungen dann auf.

/proc/scsi

Alle Geräte, die über einen SCSI- oder RAID-Controller verbunden sind, werden hier aufgelistet.

/proc/tty

Aktuelle Terminalinformationen.

/proc/version

Enthält die Linux-Kernelversion, die Distributionsnummer, die gcc-Versionsnummer (die zur Erzeugung des Kernels verwendet wird) und andere relevante Informationen über die aktuelle Kernelversion.

/proc/crypto

Liste der derzeit verfügbaren Kryptographiemodule

/proc/diskstats

Informationen über jedes logische Festplattengerät (einschließlich Gerätenummern)

/proc/

filesystems

Eine Liste der Dateisysteme, die der Kernel zum Zeitpunkt der Auflistung unterstützte

/proc/meminfo

Die aktuellen und vorherigen CPUs, auf denen er ausgeführt wurde.

/proc/17/cwd

Dies ist ein symbolischer Link auf das aktuelle Arbeitsverzeichnis des Prozesses.

/proc/17/environ

Ein Überblick über die Speicherverwaltung des Kernels

Wie Sie in /proc sehen können, gibt es zusätzlich zu den Verzeichnissen auch Dateien.

Diese Dateien sind:

File

representation

/proc/kmsg

Die vom Kernel generierten Nachrichten werden in dieser Datei gespeichert. Andere Programme, wie /sbin/klogd oder /bin/dmesg, nehmen diese Meldungen dann auf.

/proc/scsi

Alle Geräte, die über einen SCSI- oder RAID-Controller verbunden sind, werden hier aufgelistet.

/proc/tty

Aktuelle Terminalinformationen.

/proc/version

Enthält die Linux-Kernelversion, die Distributionsnummer, die gcc-Versionsnummer (die zur Erzeugung des Kernels verwendet wird) und andere relevante Informationen über die aktuelle Kernelversion.

/proc/crypto

Liste der derzeit verfügbaren Kryptographiemodule

/proc/diskstats

Informationen über jedes logische Festplattengerät (einschließlich Gerätenummern)

/proc/

filesystems

Eine Liste der Dateisysteme, die der Kernel zum Zeitpunkt der Auflistung unterstützte

/proc/meminfo

Die aktuellen und vorherigen CPUs, auf denen er ausgeführt wurde.

Anzeigen des Inhalts von Dateien im Verzeichnis /proc

Gehen wir weiter auf das Beispiel mit dem Prozess PID = 17 ein und sehen wir uns den Inhalt der Statusdatei darin mit einem bestimmten Befehl an.

				
					 cat /proc/17/status
				
			

Inhalt der Statusdateien:

section

Content

Name

Der Dateiname der ausführbaren Datei

Umask

Mask für die Erzeugung von Dateien

State

Imply (R läuft, S schläft, D schläft in einem ununterbrochenen Wartezustand, Z ist Zombie, T wird verfolgt oder gestoppt)

Tgid

ID der Thread-Gruppe

Ngid

Gruppen-ID für NUMA (0, wenn keine)

Pid

ID der Prozedur

PPid

Des Elternprozesses ID

TracerPid

Prozess ID zur Verfolgung dieses Prozesses (0, wenn nicht)

Uid

UIDs für die reale, effektive, gespeicherte Menge und das Dateisystem

Gid

GIDs für die reale Welt, die gespeicherte Menge und das Dateisystem

FDSize

Aktuell zugewiesene Anzahl von Dateideskriptor-Slots

Groups

Liste weiterer Gruppen

NStgid

Hierarchie absteigender Namespace-Thread-Gruppen IDs

NSpid

Hierarchie absteigender Namespace-Prozess IDs

NSpgid

Hierarchie absteigender Namespace-Prozess-Gruppen IDs

NSsid

Hierarchie absteigender Namespace-Session IDs

VmPeak

Menge des virtuellen Speichers in seiner Spitze

VmSize

Größe des des gesamten Programms

VmLck

Speicherkapazität, die gesperrt wurde

VmPin

Größe des angehefteten Speichers

VmHWM

„Hochwassermarke" für die Größe der residenten Menge

VmRSS

Größe der Chunkdaten im Speicher Sie setzt sich aus drei Teilen zusammen(VmRSS=RssAnon+RssFile+RssShmem)

RssAnon

Speichermenge der anonymen Residents

RssFile

Die Anzahl der Dateizuordnungen, die lokal gespeichert werden

RssShmem

Residente Shmem-Speichergröße (umfasst SysV shm, Zuordnungen von tmpfs und gemeinsam genutzte anonyme Zuordnungen)

VmData

Größe der privaten Datensegmente

VmStk

Länge der Stapelsegmente

VmExe

Länge des Textteils

VmLib

Codegröße der gemeinsam genutzten Bibliothek

VmSwap

Swapmenge, die anonyme private Daten verbrauchen (shmem Swap-Nutzung ist nicht enthalten)

HugetlbPages

Hugetlb Größe des Cunks im Speicher

CoreDumping

Der Speicher des Prozesses wird jetzt geleert (das Beenden des Prozesses kann zu einem beschädigten Kern führen)

THP_enabled

Wenn PR SET THP DISABLE auf den Prozess gesetzt ist, wird es auf 0 zurückgegehen, wenn der Prozess berechtigt ist, THP zu verwenden.

Threads

Die Gesamtzahl der Threads

SigQ

Anzahl der in der Warteschlange stehenden Signale/Maximalanzahl der in der Warteschlange stehenden Signale

SigPnd

Eine Bitmap mit den ausstehenden Signalen

ShdPnd

Des Threads für den Prozess, eine Bitmap gemeinsam genutzter anstehender Signale

SigBlk

Signal-Blockier-Bitmap

SigIgn

Bitmap ignorierter Signale

SigCgt

Darstellung abgefangener Signale

CapInh

Bitmap vererbbarer Fähigkeiten

CapPrm

Bitmap zur Darstellung der verfügbaren Fähigkeiten

CapEff

Bitmap nützlicher Fähigkeiten

CapBnd

Grenzmenge von Fähigkeiten Bitmap

CapAmb

Umgebungsfähigkeiten Bitmap

NoNewPrivs

prctl(PR GET NO NEW PRIV,. ..) und keine neuen privs sind Beispiele für keine neuen privs.

Seccomp

prctl (PR GET SECCOMP,...) im Seccomp-Modus

Speculation_

Store_Bypass

Möglicher Mitigation-Status für Shop-Bypass

Speculation

IndirectBranch

BranchForm der indirekten Verzweigungsvermutung

Cpus_allowed

Diese Methode kann auf einem Satz von CPUs, einer so genannten Maske, ausgeführt werden.

Cpus_allowed

_list

Wie zuvor, nur dieses Mal im „Listenformat"

Mems_allowed

Diese Prozedur darf eine Maske von Speicherknoten verwenden.

Mems_allowed

_list

Wie zuvor, nur dieses Mal im „Listenformat"

Voluntary_ctxt

_switches

Die Anzahl der freiwillig durchgeführten Kontextwechsel

Nonvoluntary_

ctxt_switches

Die Anzahl der nicht freiwilligen Kontextwechsel

Detaillierte Netzwerkinformationen im /net directory of /proc

Schauen wir uns nun den Inhalt der Netzdatei des oben beschriebenen Prozesses PID = 17 an:

Einige Informationen über das Netzwerk in der Prozessverzeichnisanalyse:

File

Content

Raw

Rohdaten vom Gerät

Route

Die Routing-Tabelle für den Kernel

Netlink

PF NETLINK-Buchsen werden in alphabetischer Reihenfolge aufgelistet

Wireless

Data von der drahtlosen Schnittstelle (Wavelan usw.)

Udp

Sockets, die UDP

Tcp

Sockets über TCP

Unix

Sockets in der UNIX-Domäne

Dev

Devices mit Statistiken über das Netzwerk

Arp

ARP-Tabelle im Kernel

Anzeige einer netzspezifischen Datei, in diesem Fall der Datei dev:

Ausführliche Informationen über SCSI

Wenn Ihr System über einen SCSI-Hostadapter verfügt, finden Sie in /proc/scsi einen Unterordner, der nach dem Treiber des Adapters benannt ist. In /proc/scsi finden Sie eine Liste aller bekannten SCSI-Geräte.

/proc/tty enthält TTY-Informationen

Das Verzeichnis /proc/tty enthält Informationen über die verfügbaren und aktuell genutzten ttys. In diesem Verzeichnis sind Einträge für Treiber und Leitungsdisziplinen vorhanden und wir können uns das Material weiter unten genauer ansehen.

  •  Idiscs: alle Disziplinen, die registriert wurden
  • Treiber: eine Liste der Treiber und ihrer Verwendung
  • Treiber/Serie: Statistik und Status der Nutzung einer einzelnen Tty-Leitung
 

/proc/stat enthält eine Vielzahl von Kernel-Statistiken

Die Datei /proc/stat enthält viele Informationen über die Aktivität des Kernels. Bei allen Zahlen in dieser Datei handelt es sich um Durchschnittswerte aus der Zeit, als das System ursprünglich gestartet wurde. Klicken Sie einfach auf die Datei, um einen schnellen Überblick zu erhalten:

Die Zahlen in allen nachfolgenden „cpuN"-Zeilen werden in der ersten „cpu"-Zeile addiert. Diese Zahlen zeigen, wie viel Zeit die CPU mit verschiedenen Arten von Aufgaben verbracht hat. Die Zeiteinheiten sind in USER HZ (normalerweise Hundertstelsekunden). Von links nach rechts sind dies die Bedeutungen der Spalten:



user

regular Operationen, die im Benutzermodus ablaufen

system

operations, die im Kernelmodus ausgeführt werden

nice

processes, die im Benutzermodus ablaufen und nett sindd

idle

twiddling thumbs

iowait

iowait steht für das Warten auf den Abschluss von E/A

irq

Unterbrechungen im Dien

softirq

maintaining softirqs

steal

unfreiwilliges Warten

guest

use ein Standardgast

guest_nice

führt einen zuvorkommenden Besucher aus

  • In der Zeile „intr" wird für jede der möglichen Systemunterbrechungen die Anzahl der seit dem Start bearbeiteten Unterbrechungen angegeben. Jede nachfolgende Spalte ist die Gesamtsumme für diesen spezifischen nummerierten Interrupt, während die erste Spalte die Gesamtsumme für alle bearbeiteten Interrupts darstellt, einschließlich der nicht nummerierten architekturspezifischen Interrupts. Ungezählte Unterbrechungen werden lediglich zur Gesamtzahl addiert und nicht angezeigt.
  • Die Gesamtzahl der Kontextwechsel auf allen CPUs wird in der Zeile „ctxt" angezeigt.
  • In der Zeile „btime" wird der Zeitpunkt des Systemstarts in Sekunden seit der Unix-Epoche angegeben.
  • Die Anzahl der erzeugten Prozesse und Threads, einschließlich, aber nicht beschränkt auf diejenigen, die durch Aufrufe der Systemfunktionen fork() und clone() erzeugt wurden, sind in der Zeile „processes" aufgeführt.
  • Die Anzahl der aktiven oder verfügbaren Threads wird in der Zeile "procs running" angezeigt (d. h. die Gesamtzahl der ausführbaren Threads).
  • Die Anzahl der Prozesse, die derzeit blockiert sind, während sie auf den Abschluss der E/A warten, wird in der Zeile „procs blocked" angezeigt.
  • In der Zeile „softirq" wird für jeden der potenziellen Softirqs des Systems die Anzahl der Softirqs angezeigt, die seit dem Systemstart bearbeitet wurden. Die Gesamtsumme aller gewarteten Softirqs erscheint in der ersten Spalte, die Gesamtsumme für jeden einzelnen Softirq in den folgenden Spalten.

Über Parameter pro Prozess

Anzeige von EA-Feldern:

				
					sudo cat /proc/17/io
				
			

Field

Description

rchar

I/O counter: read characters Die Gesamtanzahl der Bytes, die als Ergebnis dieser Aufgabe aus dem Speicher gelesen wurden. Dies ist die Gesamtzahl der Bytes, die von diesem Prozess () an read() und pread() breitgestellt wurden. Es schließt tty EA mit ein und ist unabhängig davon, ob physische Festplatten-EA notwendig ist oder nicht (das Lesen könnte aus dem Pagecache befriedigt worden sein).

wchar

chars sind geschriebene E/A-Zähler Die Anzahl der Bytes, die von diesem Job auf die Festplatte geschrieben wurden oder von dieser Aufgabe auf die Festplatte geschrieben werden. Wie bei rchar gibt es einige Einschränkungen.

syscr

read syscalls E/A-Zähler Zählt die Anzahl der gelesenen E/A-Operationen, wie z. B. read() und pread() syscalls ().

syscw

write syscalls E/A-Zähler Zählt die Anzahl der geschriebenen E/A-Operationen, wie z. B. write() und pwrite syscalls ().

Read_bytes

Zählt die Anzahl der Bytes, die mit dem E/A-Zähler aus der Speicherebene geholt wurden: bytes read. Bei blockbasierten Dateisystemen wird dies auf der Ebene von submit bio() durchgeführt. Aktualisieren Sie bitte den Status von NFS und CIFS später.

Write_bytes

Bytes wrote I/O counter Zählen Sie die Anzahl der Bytes, die als Ergebnis dieses Vorgangs an die Speicherebene übertragen wurden. Dies geschieht während des Seitenbereinigungsprozesses.

Cancelled_

write_bytes

Derentscheidende Fehler ist hier das Wort truncate. Wenn ein Prozess 1 MB in eine Datei schreibt und sie dann löscht, wird effektiv nichts geschrieben. Es wird jedoch aufgezeichnet, dass es 1 MB an Schreibvorgängen verursacht. Anders ausgedrückt, die Anzahl der Bytes, die durch diesen Prozess nicht verbraucht wurden, indem der Pagecache gekürzt wurde. Eine Beschäftigung kann auch zu „negativen" EA führen. Wenn dieser Job einen schmutzigen Pagecache kürzt, werden einige EA verpasst, die von einer anderen Aufgabe (in ihren Schreibbytes) berücksichtigt wurden. Wir könnten sie einfach von den Schreibbytes der Kürzungsoperation abziehen, aber das würde zu einem Informationsverlust führen.

Anzeige von EA-Feldern:

				
					 Cat /proc/17/mountinfo
				
			

Zusammenfassung

Das Dateisystem /proc speichert Daten über das aktuelle Betriebssystem. Es ermöglicht Ihnen nicht nur den Zugriff auf Prozessdaten, sondern auch das Lesen von Dateien in der Hierarchie, um den Kernel-Status zu ermitteln.Das Layout des /proc-Verzeichnisses stellt die vielen Arten von Daten dar und macht es unkompliziert, wenn auch nicht offensichtlich, bestimmte Daten zu finden.
Bestimmte Teile des Kernelverhaltens können zur Laufzeit geändert werden, ohne dass das System neu kompiliert oder neu gebootet werden muss. Der /proc/sys-Baum enthält Dateien, die sowohl gelesen als auch bearbeitet werden können. Sie können die Standardeinstellungen des Kernels ändern, indem Sie den Befehl echo verwenden, um Werte in diese Dateien zu schreiben.

Weitere Artikel anschauen:

Embedded World 2024

DigitalGate is excited to announce its forthcoming participation at Embedded World 2024 taking place in Nuremberg from the 9th to the 11th of April.

Read More »

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website ist durch reCAPTCHA geschützt und es gelten die Datenschutzbestimmungen und Nutzungsbedingungen von Google