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.
Referenzen
Weitere Informationen zur Verwendung des proc-Dateisystems in Linux finden Sie unter:
Weitere Artikel anschauen:
OpenRC
OpenRC ist ein abhängigkeitsbasiertes Init-System, das für die Arbeit mit Unix-ähnlichen Betriebssystemen entwickelt wurde. Es hält die Kompatibilität mit dem vom System bereitgestellten Init-System aufrecht, das
Yocto-Projekt
Das Yocto-Projekt ist ein Open-Source-Community-Projekt, das Entwicklern hilft, angepasste Systeme auf der Basis von Linux zu erstellen. Es verfügt über ein zugängliches Toolset, das
Software-Tests
Die Untersuchung der Artefakte und des Verhaltens der zu testenden Software wird als Softwaretest bezeichnet. Außerdem wird ermittelt, ob die tatsächlichen Ergebnisse
Platzierung der Komponenten
Die Platzierung von Bauteilen ist einer der kritischsten Teile des PCB-Designs. Zunächst müssen Sie die grundlegenden Kriterien für die Anordnung von
Linux-Systemprogrammierung
Dieser Artikel konzentriert sich auf Linux -Systemaufrufe und andere Low-Level-Operationen, wie zum Beispiel die Funktionen der C-Bibliothek. Systemprogrammierung ist der Prozess der Erstellung von
EMV-Prüfung
Wenn ein elektrisches Produkt auf elektromagnetische Verträglichkeit (EMV) geprüft wird, wird festgestellt, ob es in der elektromagnetischen Umgebung,