Provided by: manpages-de_4.21.0-2_all 

BEZEICHNUNG
proc - Pseudo-Dateisystem für Prozessinformationen
BESCHREIBUNG
/proc ist ein Pseudo-Dateisystem. Es dient als Schnittstelle zu den Kernel-Datenstrukturen und wird
gewöhnlich unter /proc eingehängt. Typischerweise wird es vom System automatisch eingehängt. Es kann aber
auch mit einem Befehl manuell eingehängt werden:
mount -t proc proc /proc
Die meisten Einträge im Dateisystem proc sind nur lesbar, aber einige Dateien sind auch schreibbar,
wodurch das Verändern von Kernel-Variablen erlaubt wird.
Einhänge-Optionen
Das Dateisystem proc unterstützt die folgenden Einhängeoptionen:
hidepid=n (seit Linux 3.3)
Diese Option regelt, wer auf die Informationen in den Verzeichnissen /proc/PID zugreifen darf. Das
Argument n hat einen der folgenden Werte:
0 Jeder darf auf alle /proc/PID-Verzeichnisse zugreifen. Dies ist das traditionelle Verhalten
und die Vorgabe, falls diese Einhängeoption nicht angegeben ist.
1 Benutzer dürfen auf nur ihre eigenen Dateien und Unterverzeichnisse innerhalb von /proc/PID
zugreifen (die Verzeichnisse /proc/PID selbst bleiben sichtbar). Sensitive Dateien wie
/proc/PID/cmdline und /proc/PID/status werden jetzt vor anderen Benutzer geschützt. Dadurch
ist es unmöglich, herauszufinden, ob ein andere Benutzer ein bestimmtes Programm ausführt
(solange das Programm sich nicht anderweitig durch sein Verhalten zu erkennen gibt).
2 Wie für Modus 1, aber zusätzlich werden die Verzeichnisse /proc/PID anderer Benutzer
unsichtbar. Das bedeutet, dass die Einträge /proc/PID nicht mehr zur Aufdeckung von PIDs auf
dem System genutzt werden können. Das versteckt nicht die Tatsache, dass ein bestimmter
PID-Wert existiert (dies kann durch andere Methoden, beispielsweise »kill -0 $PID«,
herausgefunden werden), aber es versteckt die UID und GID des Prozesses, die ansonsten durch
Einsatz von stat(2) auf einem /proc/PID-Verzeichnis herausgefunden werden könnte. Dies
verkompliziert die Aufgabe eines Angreifers deutlich, Informationen über laufende Prozesse zu
sammeln (z.B. zu entdecken, ob ein Daemon mit erweiterten Privilegien läuft, ob ein anderer
Benutzer ein bestimmtes sensitives Programm ausführt, ob ein anderer Benutzer ein bestimmtes
Programm überhaupt ausführt usw.).
gid=gid (seit Linux 3.3)
Legt die Kennung einer Gruppe fest, deren Mitglieder berechtigt sind, Prozessinformationen
herauszufinden, die andernfalls durch hidepid verweigert würden (d.h. für Benutzer in der Gruppe
verhält es sich, als ob /proc mit hidepid=0 eingehängt worden wäre). Diese Gruppe sollte anderen
Ansätzen (wie dem Eintrag von Benutzern in die Datei sudoers(5)) vorgezogen werden.
Überblick
Unterhalb von /proc gibt es die folgenden allgemeinen Gruppen von Dateien und Unterverzeichnissen:
Unterverzeichnisse von /proc/PID
Jedes dieser Unterverzeichnisse enthält Dateien und Unterverzeichnisse, die Informationen über die
Prozesse mit der entsprechenden Prozesskennung offenlegen.
Unterhalb jedes der /proc/PID-Verzeichnisse enthält ein Task-Unterverzeichnis entsprechende
Unterverzeichnisse der Form TaskTID. Diese enthalten entsprechende Informationen über jeden der
Threads in dem Prozess, wobei TID die Kernel-Thread-Kennung des Threads ist.
Die Unterverzeichnisse /proc/PID sind beim Durchlauf durch /proc mit getdents(2) sichtbar (und
daher sichtbar, wenn ls(1) zur Anzeige der Inhalte von /proc verwandt wird).
Unterverzeichnisse von /proc/TID
Jedes dieser Unterverzeichnisse enthält Dateien und Unterverzeichnisse, die Informationen über den
Thread mit der entsprechenden Thread-Kennung offenlegen. Der Inhalt dieser Verzeichnisse ist der
gleiche wie bei den entsprechenden /proc/PID/task/TID-Verzeichnissen.
Die Verzeichnisse /proc/TID sind beim Durchlauf von /proc mit getdents(2) nicht sichtbar (und
daher nicht sichtbar, wenn ls(1) zur Anzeige der Inhalte von /proc verwandt wird).
/proc/self
Wenn ein Prozess auf diesen magischen symbolischen Link zugreift, wird dieser auf das Verzeichnis
/proc/PID des Prozesses selbst aufgelöst.
/proc/thread-self
Wenn ein Thread auf diesen magischen symbolischen Link zugreift, wird dieser auf das Verzeichnis
/proc/self/task/TID des Prozesses selbst aufgelöst.
/proc/[a-z]*
Verschiedene andere Dateien und Unterverzeichnisse unter /proc legen systemweite Informationen
offen.
Alles Dargestellte wird weiter unten mit mehr Details beschrieben.
Dateien und Verzeichnisse
Die folgende Liste gibt Details über viele der Dateien und Verzeichnisse unter der Hierarchie /proc
wieder:
/proc/PID
Für jeden laufenden Prozess gibt es ein numerisches Unterverzeichnis, dessen Nummer der
Prozesskennung (PID) entspricht. Jedes Unterverzeichnis /proc/PID enthält die nachfolgend
beschriebenen Pseudo-Dateien und -Verzeichnisse.
Als Besitzer der Datei innerhalb jedes /proc/PID-Verzeichnisses ist normalerweise die effektiven
Benutzer- und Gruppenkennung des Prozesses eingetragen, allerdings wird als Sicherheitsmaßnahme
der Besitzer auf root:root gesetzt, wenn das »dumpable«-Attribut des Prozesses auf einen anderen
Wert als 1 gesetzt ist.
Vor Linux 4.11.1 bedeutete root:root die »globale« Benutzer- und Gruppenkennung von Root (d.h. UID
0 und GID 0 im anfänglichen Benutzernamensraum). Seit Linux 4.11 wird die Benutzer-
(Gruppen-)Eigentümerschaft von Dateien unterhalb von /proc/PID stattdessen auf den gleichen Wert
wie der Wurzelbenutzer (-gruppe) innerhalb des Namensraums gelegt, falls der Prozess in einem
nichtanfänglichen Benutzernamenesraum ist, der eine gültige Abbildung für Benutzer-
(Gruppen-)Kennung 0 innerhalb des Namensraums hat. Das bedeutet, dass innerhalb eines Containers
alle Dinge für den Benutzer »root« wie erwartet im Container ablaufen.
Das Attribut »dumpable« mag sich aus folgenden Gründen ändern:
• Das Attribut wurde mit der Aktion PR_SET_DUMPABLE von prctl(2) explizit gesetzt.
• Das Attribut wurde auf den Wert in der Datei /proc/sys/fs/suid_dumpable (unten beschrieben)
zurückgesetzt. Die Gründe sind in prctl(2) beschrieben.
Durch Zurücksetzen des Attributes »dumpable« wird die Eigentümerschaft der Dateien /proc/PID/* auf
die effektive UID und GUID zurückgesetzt. Beachten Sie allerdings, dass das Attribut »dumpable«
zurückgesetzt werden kann, falls die UID oder GUID nachfolgend verändert wird, wie dies in
prctl(2) beschrieben ist. Daher kann es wünschenswert sein, dass Attribut »dumpable« nach der
Durchführung der gewünschten Änderungen an der effektiven UID oder GUID des Prozesses
zurückzusetzen.
/proc/PID/attr
Die Dateien in diesem Verzeichnis stellen eine API für Sicherheitsmodule bereit. Die Inhalte
dieses Verzeichnisses sind Dateien, die gelesen und geschrieben werden können, um
sicherheitsbezogene Attribute zu setzen. Dieses Verzeichnis wurde hinzugefügt, um SELinux zu
unterstützen. Der Ansatz des API war aber allgemein genug, um andere Sicherheitsmodule zu
unterstützen. Für den Zweck der Erläuterung werden Beispiele, wie SELinux diese Dateien verwendet,
weiter unten angegeben.
Dieses Verzeichnis ist nur vorhanden, falls der Kernel mit CONFIG_SECURITY konfiguriert wurde.
/proc/PID/attr/current (seit Linux 2.6.0)
Der Inhalt dieser Datei stellt die aktuellen Sicherheitsattribute des Prozesses bereit.
In SELinux wird diese Datei zur Ermittlung des Sicherheitskontextes eines Prozesses verwandt. Vor
Linux 2.6.11 konnte diese Datei nicht zum Setzen des Sicherheitskontextes verwandt werden (ein
Schreibzugriff wurde immer verweigert), da SELinux die Prozesssicherheitsübergänge auf execve(2)
begrenzte (siehe die Beschreibung von /proc/PID/attr/exec weiter unten). Seit Linux 2.6.11 hat
SELinux diese Einschränkung aufgehoben und begonnen, »set« (Setzen-)Aktionen mittels
Schreibzugriffen auf diesen Knoten zu unterstützen, falls dies durch Richtlinien erlaubt wurde.
Allerdings ist die Verwendung dieser Aktion nur für Anwendungen geeignet, denen vertraut wird, die
gewünschte Separierung zwischen dem alten und dem neuen Sicherheitskontext aufrechtzuerhalten.
Vor Linux 2.6.28 erlaubte es SELinux Threads innerhalb von Multi-Threaded-Prozessen nicht, ihren
Sicherheitskontext mittels dieses Knotens zu setzen, da es zu einer Inkonsistenz innerhalb der
Sicherheitskontexte der Threads, die den gleichen Speicher gemeinsam benutzen, führen würde. Seit
2.6.28 hat SELinux diese Einschränkung aufgehoben und begonnen, »set«-Aktionen für Threads
innerhalb von Multi-Threaded-Prozessen zu unterstützen, falls der neue Sicherheitskontext
innerhalb der Grenzen des alten Sicherheitskontextes liegt, wobei die begrenzende Beziehung in den
Richtlinien definiert ist und garantiert, dass der neue Sicherheitskontext über eine Teilmenge der
Rechte des alten Sicherheitskontextes verfügt.
Andere Sicherheitsmodule können sich entscheiden, »set«-Aktionen über Schreibzugriffe auf diesen
Knoten zu unterstützen.
/proc/PID/attr/exec (seit Linux 2.6.0)
Diese Datei repräsentiert die Attribute, die den Prozessen bei nachfolgenden execve(2) zugewiesen
werden sollen.
In SELinux wird dies benötigt, um Rollen-/Domänenübergänge zu unterstützen und execve(2) ist die
bevorzugte Stelle, um solche Übergänge vorzunehmen, da es bessere Steuermöglichkeiten über die
Initialisierung des Prozesses im neuen Sicherheits-Label und die Vererbung von Zustand erlaubt. In
SELinux wird dieses Attribut bei execve(2) zurückgesetzt, so dass das neue Programm auf das
Vorgabeverhalten für alle execve(2), die es ausführen könnte, zurückfällt. In SELinux kann ein
Prozess nur sein eigenes Attribut /proc/PID/attr/exec setzen.
/proc/PID/attr/fscreate (seit Linux 2.6.0)
Diese Datei repräsentiert die Attribute, die Dateien, die von nachfolgenden Aufrufen von open(2),
mkdir(2), symlink(2) und mknod(2) erstellt werden, zugewiesen werden sollen.
SELinux verwendet diese Datei, um die Erstellung einer Datei (mit den vorab erwähnten
Systemaufrufen) in einem sicheren Zustand zu unterstützen, so dass es kein Risiko gibt, dass ein
ungeeigneter Zugriff zwischen dem Zeitpunkt der Erstellung und dem Zeitpunkt des Setzens der
Attribute gibt. In SELinux wird dieses Attribut bei execve(2) zurückgesetzt, so dass das neue
Programm wieder auf das alte Verhalten für alle seine Dateierstellungsaufrufe zurückfällt. Das
Attribut wird aber über mehrere Dateierstellungsaufrufe hinweg innerhalb eines Programms erhalten
bleiben, solange es nicht explizit zurückgesetzt wird. Unter SELinux kann ein Prozess nur sein
eigenes Attribut /proc/PID/attr/fscreate setzen.
/proc/PID/attr/keycreate (seit Linux 2.6.18)
Falls ein Prozess ein Sicherheitskontext in diese Datei schreibt, werden alle nachfolgend
erstellten Schlüssel (add_key(2)) mit diesem Kontext mit Labeln gekennzeichnet. Für weitere
Informationen siehe die Kernelquelldatei Documentation/security/keys/core.rst (oder Datei
Documentation/security/keys.txt unter Linux zwischen 3.0 und 4.13 oder Documentation/keys.txt vor
Linux 3.0).
/proc/PID/attr/prev (seit Linux 2.6.0)
Diese Datei enthält den Sicherheitskontext des Prozesses vor dem letzten execve(2); d.h. den
vorherigen Wert von /proc/PID/attr/current.
/proc/PID/attr/socketcreate (seit Linux 2.6.18)
Falls ein Prozess ein Sicherheitskontext in diese Datei schreibt, werden alle nachfolgend
erstellten Sockets mit diesem Kontext mit Labeln gekennzeichnet.
/proc/PID/autogroup (seit Linux 2.6.38)
siehe sched(7)
/proc/PID/auxv (seit Linux 2.6.0)
Dies ist der Inhalt der Informationen für den ELF-Interpreter, die dem Prozess zur Ausführungszeit
übergeben wurden. Das Format ist eine unsigned long-Kennung plus ein unsigned long-Wert für jeden
Eintrag. Der letzte Eintrag enthält zwei Nullen. Siehe auch getauxval(3).
Die Zugriffsberechtigungen dieser Datei werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_READ_FSCREDS geregelt; siehe ptrace(2).
/proc/PID/cgroup (seit Linux 2.6.24)
siehe cgroups(7)
/proc/PID/clear_refs (seit Linux 2.6.22)
In diese Datei kann nur geschrieben werden und nur durch den Eigentümer des Prozesses.
Die folgenden Werte dürfen in die Datei geschrieben werden:
1 (seit Linux 2.6.22)
setzt die Bits PG_Referenced und ACCESSED/YOUNG für alle diesem Prozess zugeordneten Seiten
zurück. (Vor Linux 2.6.32 hatte das Schreiben eines beliebigen von Null verschiedenen
Wertes in diese Datei diesen Effekt.)
2 (seit Linux 2.6.32)
setzt die Bits PG_Referenced und ACCESSED/YOUNG für alle anonymen Seiten, die dem Prozess
zugeordnet sind, zurück.
3 (seit Linux 2.6.32)
setzt die Bits PG_Referenced und ACCESSED/YOUNG für alle Datei-gemappten Seiten, die dem
Prozess zugeordnet sind, zurück.
Das Leeren der Bits PG_Referenced und ACCESSED/YOUNG stellt eine Methode zur Verfügung, ungefähr
zu messen, wieviel Speicher der Prozess benutzt. Zuerst werden die Werte in den
»Referenced«-Feldern für die VMAs (virtuellen Speicherbereiche) angesehen, die in /proc/PID/smaps
angezeigt werden, um eine Vorstellung von der Speicherbelegung zu bekommen. Dann werden die
PG_Referenced- und ACCESSED/YOUNG-Bits geleert und nach einer gemessenen Zeitspannne erneut die
Werte in den »Referenced«-Feldern angesehen, um eine Vorstellung von der Veränderung der
Speicherbelegung zu erhalten. Falls nur Interesse besteht, die ausgewählten Mapping-Typen
anzusehen, dann kann der Wert 2 oder 3 anstelle von 1 benutzt werden.
Weitere Werte können geschrieben werden, um andere Eigenschaften zu beeinflussen:
4 (seit Linux 3.11)
leert das Soft-dirty-Bit für alle mit dem Prozess verbundenen Seiten. Dies wird (zusammen
mit /proc/PID/pagemap) vom Prüfpunktwiderherstellungssystem benutzt, um aufzudecken, welche
Seiten geändert wurden, seit in die Datei /proc/PID/clear_refs geschrieben wurde.
5 (seit Linux 4.0)
setzt die Resident Set Size (»Hochwassermarke«) auf den derzeitigen Wert der resident set
size des aktuellen Prozesses zurück.
Wird ein anderer als einer der oben aufgeführten Werte in /proc/PID/clear_refs geschrieben, so hat
dies keinen Effekt.
Die Datei /proc/PID/clear_refs ist nur vorhanden, wenn die Kernel-Konfigurationsoption
CONFIG_PROC_PAGE_MONITOR aktiviert ist.
/proc/PID/cmdline
In dieser nur lesbaren Datei steht die vollständige Befehlszeile für diesen Prozess, wenn er kein
Zombie ist. Im letzteren Fall ist die Datei leer, ein Lesen der Datei wird 0 Zeichen zurückgeben.
Die Befehlszeilenargumente sind in dieser Datei als ein Satz von Zeichenketten abgelegt,
Trennzeichen sind Nullbytes (»\0«). Nach der letzten Zeichenkette folgt noch ein Nullbyte.
Falls ein Prozess nach einem execve(2) seine argv-Zeichenkette verändert, tauchen diese Änderungen
hier auf. Dies ist nicht identisch zur Veränderung des argv-Feldes.
Ein Prozess kann desweiteren den Speicherort, auf den diese Datei verweist, mittels der
prctl(2)-Aktionen wie PR_SET_MM_ARG_START verändern.
Betrachten Sie diese Datei als Befehlszeile, die so ist, wie der Prozess sie darstellen möchte.
/proc/PID/comm (seit Linux 2.6.33)
Diese Datei legt den Wert comm des Prozesses offen – das bedeutet, den Befehlsnamen, der diesem
Prozess zugeordnet ist. Verschiedene Threads in dem gleichen Prozess können verschiedene Werte von
comm haben, auf die mittels /proc/PID/task/TID/comm zugegriffen werden kann. Ein Thread kann
seinen comm-Wert verändern oder den eines anderen Threads in der gleichen Thread-Gruppe (siehe die
Diskussion von CLONE_THREAD in clone(2)), indem er in die Datei /proc/self/task/TID/comm schreibt.
Zeichenketten länger als TASK_COMM_LEN (16) Zeichen (einschließlich abschließendes Nullbyte)
werden ohne Rückmeldung abgeschnitten.
Diese Datei stellt eine Obermenge der Aktionen prctl(2) PR_SET_NAME und PR_GET_NAME bereit und
wird durch pthread_setname_np(3) eingesetzt, wenn vom Aufrufenden verschiedene Threads umbenannt
werden. Der Wert in dieser Datei wird für den Kennzeichner %e in /proc/sys/kernel/core_pattern
verwandt; siehe core(5).
/proc/PID/coredump_filter (seit Linux 2.6.23)
siehe core(5)
/proc/PID/cpuset (seit Linux 2.6.12)
siehe cpuset(7)
/proc/PID/cwd
Dies ist ein symbolischer Link auf das aktuelle Arbeitsverzeichnis des Prozesses. Um dieses z.B.
für den Prozess 20 herauszufinden, geben Sie die folgenden Befehle ein:
$ cd /proc/20/cwd; pwd -P
In einem Multithread-Prozess ist der Inhalt dieses symbolischen Links nicht mehr verfügbar, wenn
der Haupt-Thread schon beendet ist (typischerweise durch einen Aufruf von pthread_exit(3)).
Die Rechte, diesen symbolischen Link zu dereferenzieren oder zu lesen (readlink(2)), werden von
einer Ptrace-Zugriffsmodusprüfung PTRACE_MODE_READ_FSCREDS gesteuert; siehe ptrace(2).
/proc/PID/environ
Diese Datei enthält die anfängliche Prozess-Umgebung, die gesetzt wurde, als das aktuell
ausgeführte Programm mit einem execve(2) gestartet wurde. Die Einträge werden durch Nullbytes
(»\0«) getrennt, am Ende der Liste kann ebenfalls ein Nullbyte stehen. Die Umgebung von Prozess 1
geben Sie wie folgt aus:
$ cat /proc/1/environ | tr '\000' '\n'
Falls ein Prozess nach einem execve(2) seine Umgebung verändert (z.B. durch Aufruf von Funktionen
wie putenv(3) oder durch direkte Veränderungen der environ(7)-Variablen) wird diese Datei solche
Änderungen nicht berücksichtigen.
Ein Prozess kann desweiteren den Speicherort, auf den diese Datei verweist, mittels der
prctl(2)-Aktionen wie PR_SET_MM_ENV_START verändern.
Die Zugriffsberechtigungen dieser Datei werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_READ_FSCREDS geregelt; siehe ptrace(2).
/proc/PID/exe
Unter Linux 2.2 und höher ist diese Datei ein symbolischer Link mit dem eigentlichen Pfad des
ausgeführten Befehls. Dieser symbolische Link kann in der Regel dereferenziert werden; der
Versuch, ihn zu öffnen, wird die ausführbare Datei öffnen. Sie können sogar /proc/PID/exe
eingeben, um eine weitere Kopie der gleichen ausführbaren Datei auszuführen, die für den Prozess
PID läuft. Falls der Pfadname mit unlink gelöscht wurde, wird der symbolische Link die
Zeichenkette »(deleted)« an den ursprünglichen Dateinamen angehängt haben. In einem
Multithread-Prozess ist der Inhalt dieses symbolischen Links nicht mehr verfügbar, wenn der
Haupt-Thread schon beendet ist (typischerweise durch einen Aufruf von pthread_exit(3)).
Die Rechte, diesen symbolischen Link zu dereferenzieren oder zu lesen (readlink(2)), werden von
einer Ptrace-Zugriffsmodusprüfung PTRACE_MODE_READ_FSCREDS gesteuert; siehe ptrace(2).
Unter Linux 2.0 und früher ist /proc/PID/exe ein Zeiger auf das Programm, das ausgeführt wurde und
erscheint als symbolischer Link. Ein Aufruf von readlink(2) auf diese Datei unter Linux 2.0 gibt
eine Zeichenkette im folgenden Format zurück:
[Gerät]:Inode
Beispielsweise wäre [0301]:1502 also Inode 1502 auf dem Gerät mit der Major-Gerätenummer 03 (IDE-,
MFM-Festplatten) und der Minor-Gerätenummer 01 (erste Partition der ersten Platte).
find(1) mit der Option -inum zeigt, in welchem Verzeichnis die Datei liegt.
/proc/PID/fd/
In diesem Unterverzeichnis stehen die Dateideskriptoren der von diesem Prozess geöffneten Dateien.
Diese Einträge sind symbolische Links zu den eigentlichen Dateien. Also ist 0 die Standardeingabe,
1 ist die Standardausgabe, 2 ist der Standardfehlerkanal usw.
Für Dateideskriptoren für Pipes und Sockets werden die Einträge symbolische Links sein, deren
Inhalt der Dateityp mit dem Inode ist. Ein Aufruf von readlink(2) mit dieser Datei liefert eine
Zeichenkette im folgenden Format zurück:
Typ:[Inode]
Beispielsweise wird socket:[2248868] ein Socket sein, dessen Inode 2248868 ist. Für Sockets kann
dieser Inode dazu verwandt werden, weitere Informationen in einem der Dateien unter /proc/net/ zu
finden.
Für Dateideskriptoren, die keinen korrespondierenden Inode haben (d.h. durch bpf(2),
epoll_create(2), eventfd(2), inotify_init(2), perf_event_open(2), signalfd(2), timerfd_create(2)
und userfaultfd(2) erstellte Dateideskriptoren), wird der Eintrag ein symbolischer Link sein mit
Inhalten der Form
anon_inode:Dateityp
In vielen (aber nicht allen) Fällen wird Dateityp durch eckige Klammern eingeschlossen.
Beispielsweise wird ein Epoll-Dateideskriptor einen symbolischen Link, dessen Inhalt die
Zeichenkette anon_inode:[eventpoll] ist, haben.
In einem Multithread-Prozess ist der Inhalt dieses Verzeichnisses nicht mehr verfügbar, wenn der
Haupt-Thread schon beendet ist (typischerweise durch einen Aufruf von pthread_exit(3)).
Programme, die einen Dateinamen als Befehlszeilen-Argument verarbeiten, aber ohne Argument keine
Eingaben aus der Standardeingabe annehmen oder die in eine Datei schreiben, deren Name als
Befehlszeilen-Argument übergeben wird, aber bei fehlendem Argument nicht in die Standardausgabe
ausgeben, können dennoch mittels Dateien /proc/PID/fd als Befehlszeilenargument dazu gebracht
werden, die Standardeingabe oder die Standardausgabe zu verwenden. Angenommen, der Schalter -i
bezeichnet die Eingabedatei und -o die Ausgabedatei:
$ foobar -i /proc/self/fd/0 -o /proc/self/fd/1 …
und Sie haben einen funktionierenden Filter.
/proc/self/fd/N ist in etwa dasselbe wie /dev/fd/N in einigen UNIX- und UNIX-ähnlichen Systemen.
Die meisten MAKEDEV-Skripte legen tatsächlich symbolische Links von /proc/self/fd zu /dev/fd an.
Die meisten Systeme stellen die symbolischen Links /dev/stdin, /dev/stdout und /dev/stderr bereit,
die entsprechend auf die Dateien 0, 1 und 2 in /proc/self/fd weisen. Das letzte Beispiel könnte
also auch alternativ geschrieben werden als:
$ foobar -i /dev/stdin -o /dev/stdout …
Die Rechte, die symbolischen Links in diesem Verzeichnis zu dereferenzieren oder zu lesen
(readlink(2)), werden von einer Ptrace-Zugriffsmodusprüfung PTRACE_MODE_READ_FSCREDS gesteuert;
siehe ptrace(2).
Beachten Sie, dass für Dateideskriptoren, die sich auf Inodes beziehen (Pipes und Sockets, siehe
oben), diese Inodes immer noch die von den Einträgen /proc/PID/fd verschiedenen Berechtigungsbits
und Eigentümerinformationen haben und dass sich der Eigentümer von den Benutzer- und
Gruppenkennungen des Prozesses unterscheiden kann. Einem nicht privilegierten Prozess könnten die
Rechte zum Öffnen fehlen, wie in diesem Beispiel:
$ echo test | sudo -u nobody cat
test
$ echo test | sudo -u nobody cat /proc/self/fd/0
cat: /proc/self/fd/0: Permission denied
Dateideskriptor 0 bezieht sich auf die durch die Shell erzeugte und von diesem Shell-Benutzer
(dies ist nobody) besessene Pipe, so dass cat nicht über die Berechtigungen verfügt, um einen
neuen Dateideskriptor zu erstellen, um von dieser Inode zu lesen, obwohl es immer noch vom
existierenden Dateideskriptor 0 lesen kann.
/proc/PID/fdinfo/ (seit Linux 2.6.22)
In diesem Unterverzeichnis stehen die Dateideskriptoren aller von diesem Prozess geöffneten
Dateien. Die Dateien in diesem Verzeichnis können nur von dem Eigentümer des Prozesses gelesen
werden. Der Inhalt jeder Datei kann gelesen werden, um Informationen über den entsprechenden
Dateideskriptor zu bekommen. Der Inhalt hängt von der Art der Datei ab, die von dem entsprechenden
Dateideskriptor referenziert wird.
Für reguläre Dateien und Verzeichnisse ergibt sich etwas der Form:
$ cat /proc/12015/fdinfo/4
pos: 1000
flags: 01002002
mnt_id: 21
Die Bedeutung der Felder im Einzelnen:
pos Dies ist eine Dezimalzahl, die den Dateiversatz zeigt.
flags Dies ist eine oktale Zahl, die den Dateizugriffsmodus und die Dateistatusschalter anzeigt
(siehe open(2)). Falls der »close-on-exec«-Dateideskriptorschalter gesetzt ist, wird flags
auch den Wert O_CLOEXEC enthalten.
Vor Linux 3.1 zeigte dieses Feld inkorrekterweise die Einstellung von O_CLOEXEC zum
Zeitpunkt des Öffnens der Datei an, statt den aktuellen Wert des Schalters close-on-exec.
mnt_id Dieses seit Linux 3.15 vorhandene Feld zeigt die Kennung der Einhängung an, der diese Datei
enthält. Siehe die Beschreibung von /proc/PID/mountinfo.
Für den Eventfd-Dateideskriptor (siehe eventfd(2)) gibt es (seit Linux 3.8) die folgenden Felder:
pos: 0
flags: 02
mnt_id: 10
eventfd-count: 40
eventfd-count ist der aktuelle hexadezimale Wert des Eventfd-Zählers.
Für den Epoll-Dateideskriptor (siehe epoll(7)) gibt es (seit Linux 3.8) die folgenden Felder:
pos: 0
flags: 02
mnt_id: 10
tfd: 9 events: 19 data: 74253d2500000009
tfd: 7 events: 19 data: 74253d2500000007
Jede mit tfd beginnende Zeile beschreibt einen Dateideskriptor, der mit dem Epoll-Dateideskriptor
überwacht wird (siehe epoll_ctl(2) für weitere Details). Das Feld tfd ist die Nummer des
Dateideskriptors. Das Feld events ist eine hexadezimale Maske der für diesen Dateideskriptor
überwachten Ereignisse. Das Feld data ist der diesem Dateideskriptor zugeordnete Datenwert.
Für den Signalfd-Dateideskriptor (siehe signalfd(2)) gibt es (seit Linux 3.8) die folgenden
Felder:
pos: 0
flags: 02
mnt_id: 10
sigmask: 0000000000000006
sigmask ist die hexadezimale Maske der Signale, die über diesen Signalfd-Dateideskriptor
akzeptiert werden. (In diesem Beispiel sind die Bits 2 und 3 gesetzt; dies entspricht den Signalen
SIGINT und SIGQUIT; siehe signal(7).)
Für Inotify-Dateideskriptoren (siehe inotify(7)) gibt es (seit Linux 3.8) die folgenden Felder:
pos: 0
flags: 00
mnt_id: 11
inotify wd:2 ino:7ef82a sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:2af87e00220ffd73
inotify wd:1 ino:192627 sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:27261900802dfd73
Jede der mit »inotify« beginnenden Zeilen zeigt Informationen über eine überwachte Datei oder ein
überwachtes Verzeichnis an. Die Felder in dieser Zeile sind wie folgt:
wd Eine Watch-Deskriptornummer (deziaml)
ino Die Inode-Nummer der Zieldatei (hexadezimal).
sdev Die Kennung des Gerätes, auf dem sich die Zieldatei befindet (hexadezimal).
mask Die Maske der für die Zieldatei überwachten Ereignisse (hexadezimal).
Falls der Kernel mit Exportfs-Unterstützung gebaut wurde, ist der Pfad zu der Zieldatei mittels
drei hexadezimaler Felder als Datei-Handle offengelegt: fhandle-bytes, fhandle-type und f_handle.
Für Fanotify-Dateideskriptoren (siehe fanotify(7)) gibt es (seit Linux 3.8) die folgenden Felder:
pos: 0
flags: 02
mnt_id: 11
fanotify flags:0 event-flags:88002
fanotify ino:19264f sdev:800001 mflags:0 mask:1 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:4f261900a82dfd73
Das vierte Feld zeigt Informationen, die bei der Erstellung der Fanotify-Gruppe mittels
fanotify_init(2) definiert wurden:
flags Das an fanotify_init(2) übergebene Argument flags (hexadezimal ausgedrückt).
event-flags
Das an fanotify_init(2) übergebene Argument event_f_flags (hexadezimal ausgedrückt).
Jede zusätzliche in der Datei gezeigte Zeile enthält Informationen über eine der Markierungen in
der Fanotify-Gruppe. Die meisten der Felder sind für Inotify, außer:
mflags Die der Markierung zugeordneten Schalter (hexadezimal ausgedrückt).
mask Die Ereignismaske für diese Markierung (hexadezimal ausgedrückt).
ignored_mask
Die Maske der für diese Markierung ignorierten Ereignisse (hexadezimal ausgedrückt).
Für Details über diese Felder lesen Sie fanotify_mark(2).
Für den Timerfd-Dateideskriptor (siehe timerfd(2)) gibt es (seit Linux 3.17) die folgenden Felder:
pos: 0
flags: 02004002
mnt_id: 13
clockid: 0
ticks: 0
settime flags: 03
it_value: (7695568592, 640020877)
it_interval: (0, 0)
clockid
Dies ist der numerische Wert der Uhrkennung (entsprechend einer der mittels <time.h>
definierten Konstanten), der zur Markierung des Fortschritts des Timers verwandt wird (in
diesem Beispiel ist 0 CLOCK_REALTIME).
ticks Dies ist die Anzahl der aufgetretenen Abläufe des Timers (d.h. dem Wert, den read(2) darauf
zurückliefern würde).
settime flags
Dieses Feld führt in oktaler Schreibweise die Schalter auf, mit denen Timerfd letztmalig
beladen wurde (siehe timerfd_settime(2)) (in diesem Beispiel sind sowohl TFD_TIMER_ABSTIME
als auch TFD_TIMER_CANCEL_ON_SET gesetzt).
it_value
Dieses Feld hält die Zeitdauer in Sekunden und Nanosekunden, bis der Timer das nächste Mal
ablaufen wird. Der Wert wird immer relativ ausgedrückt, unabhängig davon, ob der Timer
mittels des Schalters TFD_TIMER_ABSTIME erstellt wurde.
it_interval
Dieses Feld enthält das Intervall des Timers in Sekunden und Nanosekunden. (Die Felder
it_value und it_interval enthalten die Werte, die timerfd_gettime(2) auf diesem
Dateideskriptor zurückliefern würde.)
/proc/PID/gid_map (seit Linux 3.5)
Siehe user_namespaces(7).
/proc/PID/io (seit Linux 2.6.20)
Diese Datei enthält E/A-Statistiken für den Prozess, beispielsweise:
# cat /proc/3828/io
rchar: 323934931
wchar: 323929600
syscr: 632687
syscw: 632675
read_bytes: 0
write_bytes: 323932160
cancelled_write_bytes: 0
Die Bedeutung der Felder im Einzelnen:
rchar: characters read (gelesene Zeichen)
Die Anzahl an Bytes, die aufgrund dieses Prozesses vom Speicher gelesen wurden. Dies ist
einfach die Summe der Bytes, die dieser Prozess an read(2) und ähnliche Systemaufrufe
übergeben hat. Sie enthält Dinge wie Terminal-E/A und ist unabhängig davon, ob wirklich
physische Platten-E/A benötigt wurde (die Leseanforderung kann aus dem
Seitenzwischenspeicher befriedigt worden sein).
wchar: characters written (geschriebene Zeichen)
Die Anzahl an Bytes, die aufgrund dieses Prozesses auf Platte geschrieben wurden oder
werden. Es gelten ähnliche Warnungen wie bei rchar.
syscr: Syscalls lesen
Ein Versuch, die Anzahl der gelesen E/A-Vorgänge zu zählen (d.h. der Systemaufrufe wie
read(2) und pread(2)).
syscw: Syscalls schreiben
Ein Versuch, die Anzahl der geschriebenen E/A-Vorgänge zu zählen (d.h. der Systemaufrufe
wie write(2) und pwrite(2)).
read_bytes: bytes read (gelesene Bytes)
Versucht, die Anzahl der Bytes zu zählen, die aufgrund dieses Prozesses wirklich von der
Speichereinheit geholt wurden. Für blockunterstützte Dateisysteme ist dies genau.
write_bytes: bytes written (geschriebene Bytes)
Ein Versuch, die Anzahl der Bytes, die ausgelöst durch diesen Prozess zum Speichermedium
gesandt wurden, zu zählen.
cancelled_write_bytes:
Die große Ungenauigkeit hier ist das Abschneiden. Falls ein Prozess 1 MB in eine Datei
schreibt und diese dann löscht, wird tatsächlich nichts rausgeschrieben. Allerdings wird
dies als 1 MB Schreiben in eine Datei verbucht. Mit anderen Worten: Dieses Feld stellt die
Anzahl an Bytes dar, die durch diesen Prozess nicht passiert sind, indem der
Seitenzwischenspeicher abgeschnitten wurde. Ein Prozess kann auch »negative« E/A
hervorrufen. Falls dieser Prozess benutzten (»dirty«) Seitenzwischenspeicher abschneidet,
wird ein Teil des E/A, der für einen anderen Prozess (in seinem write_bytes) verbucht
wurde, nicht passieren.
Hinweis: In der aktuellen Implementierung gibt es auf 32-Bit-Systemen einen kleinen
Ressourcenwettlauf: Falls Prozess A /proc/PID/io von Prozess B liest, während Prozess B einen der
64-Bit-Zähler aktualisiert, könnte Prozess A ein Zwischenergebnis sehen.
Die Zugriffsberechtigungen dieser Datei werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_READ_FSCREDS geregelt; siehe ptrace(2).
/proc/PID/limits (seit Linux 2.6.24)
Diese Datei enthält die weichen und harten Grenzen sowie die Maßeinheiten der für den Prozess
geltenden Ressourcenbeschränkungen (siehe getrlimit(2)). Bis einschließlich Linux 2.6.35 darf die
Datei nur mit der realen UID des Prozesses gelesen werden. Seit Linux 2.6.36 kann diese Datei von
allen Benutzern des Systems gelesen werden.
/proc/PID/map_files/ (seit Linux 3.3)
Dieses Unterverzeichnis enthält Einträge, die zu Speicher-gemappten Dateien gehören (siehe
mmap(2)). Einträge werden durch Start- und Endadresspaare von Speicherbereichen benannt (durch
hexadezimale Zahlen ausgedrückt). Sie sind symbolische Verweise auf die gemappten Dateien selbst.
Hier nun ein Beispiel, bei dem die Ausgabe umgebrochen und neu formatiert wurde, damit sie in eine
80-spaltige Anzeige passt:
# ls -l /proc/self/map_files/
lr--------. 1 root root 64 Apr 16 21:31
3252e00000-3252e20000 -> /usr/lib64/ld-2.15.so
…
Obwohl diese Einträge für Speicherbereiche vorhanden sind, die mit dem Schalter MAP_FILE gemappt
wurden, bedeutet die Art, wie anonym gemeinsam benutzter Speicher (Bereiche, die mit den Schaltern
MAP_ANON | MAP_SHARED erzeugt wurden) in Linux implementiert ist, dass diese Bereiche auch in
diesem Verzeichnis erscheinen. Hier folgt ein Beispiel, bei dem die Zieldatei diejenige ist, die
gelöscht /dev/zero wurde:
lrw-------. 1 root root 64 Apr 16 21:33
7fc075d2f000-7fc075e6f000 -> /dev/zero (deleted)
Die Zugriffsberechtigungen dieser Datei werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_READ_FSCREDS geregelt; siehe ptrace(2).
Bis Linux 4.3 erschien dieses Verzeichnis nur, falls die Kernel-Konfigurationsoption
CONFIG_CHECKPOINT_RESTORE aktiviert war.
Capabilities, die zum Lesen der Inhalte von symbolischen Links in diesem Verzeichnis benötigt
werden: Vor Linux 5.9 benötigte der Leseprozess CAP_SYS_ADMIN im anfänglichen Benutzernamensraum;
seit Linux 5.9 muss der Leseprozess entweder über CAP_SYS_ADMIN oder CAP_CHECKPOINT_RESTORE im
Benutzernamensraum, in dem er sich befindet, verfügen.
/proc/PID/maps
Eine Datei mit den derzeit gemappten Speicherbereichen und ihren Zugriffsrechten. Lesen Sie
mmap(2) für weitere Informationen über Speicher-Mappings.
Die Zugriffsberechtigungen dieser Datei werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_READ_FSCREDS geregelt; siehe ptrace(2).
Das Format der Datei lautet:
address perms offset dev inode pathname
00400000-00452000 r-xp 00000000 08:02 173521 /usr/bin/dbus-daemon
00651000-00652000 r--p 00051000 08:02 173521 /usr/bin/dbus-daemon
00652000-00655000 rw-p 00052000 08:02 173521 /usr/bin/dbus-daemon
00e03000-00e24000 rw-p 00000000 00:00 0 [heap]
00e24000-011f7000 rw-p 00000000 00:00 0 [heap]
...
35b1800000-35b1820000 r-xp 00000000 08:02 135522 /usr/lib64/ld-2.15.so
35b1a1f000-35b1a20000 r--p 0001f000 08:02 135522 /usr/lib64/ld-2.15.so
35b1a20000-35b1a21000 rw-p 00020000 08:02 135522 /usr/lib64/ld-2.15.so
35b1a21000-35b1a22000 rw-p 00000000 00:00 0
35b1c00000-35b1dac000 r-xp 00000000 08:02 135870 /usr/lib64/libc-2.15.so
35b1dac000-35b1fac000 ---p 001ac000 08:02 135870 /usr/lib64/libc-2.15.so
35b1fac000-35b1fb0000 r--p 001ac000 08:02 135870 /usr/lib64/libc-2.15.so
35b1fb0000-35b1fb2000 rw-p 001b0000 08:02 135870 /usr/lib64/libc-2.15.so
...
f2c6ff8c000-7f2c7078c000 rw-p 00000000 00:00 0 [stack:986]
...
7fffb2c0d000-7fffb2c2e000 rw-p 00000000 00:00 0 [stack]
7fffb2d48000-7fffb2d49000 r-xp 00000000 00:00 0 [vdso]
Das Feld address ist der Adressraum im Prozess, das das Mapping belegt. Das Feld perms ist eine
Gruppe von Zugriffsrechten.
r = read (lesen)
w = write (schreiben)
x = execute (ausführen)
s = shared (gemeinsam benutzt)
p = private (copy on write) (Kopieren bei Schreibzugriffen)
Das Feld offset ist der Abstand zum Anfang (der Datei oder was auch immer), dev steht für das
Gerät (major:minor) und Inode ist der Inode auf diesem Gerät. Ist Inode 0, dann ist keine Datei
mit diesem Speicherbereich verbunden, wie z.B. im Falle von BSS (nicht initialisierte Daten).
Das Feld pathname wird normalerweise die Datei sein, die dem Mapping zugrundeliegt. Für
ELF-Dateien können Sie dies einfach mit dem Feld offset koordinieren, indem Sie das Feld Offset in
den ELF-Programm-Headern (readelf -l) anschauen.
Es gibt zusätzliche, hilfreiche Pseudo-Pfade:
[stack]
Der initiale Stack des Prozesses (auch als Haupt-Thread bekannt).
[stack:TID] (von Linux 3.4 bis 4.4)
Der Stack eines Prozesses (wobei die TID eine Thread-Kennung ist). Er entspricht dem Pfad
/proc/PID/task/TID/. Dieses Feld wurde in Linux 4.5 entfernt, da die Bereitstellung dieser
Informationen für einen Prozess mit einer großen Anzahl an Threads kostspielig ist.
[vdso] Das virtuelle dynamisch-gelinkte Laufzeitobjekt. Siehe vdso(7).
[heap] Der Prozess-Heap.
[anon:Name] (seit Linux 5.17)
Ein benanntes, privates, anonymes Mapping. Mit prctl(2) PR_SET_VMA_ANON_NAME gesetzt.
[anon_shmem:Name] (seit Linux 6.2)
Ein benanntes, gemeinsames, anonymes Mapping. Mit prctl(2) PR_SET_VMA_ANON_NAME gesetzt.
Falls das Feld pathname leer ist, ist dies ein anonymes Mapping, wie es per mmap(2) gewonnen wird.
Es gibt keine einfache Möglichkeit, dies zu einer Prozessquelle zurückzukoordinieren, außer es
durch gdb(1), strace(1) oder ähnliches auszuführen.
pathname wird desmaskiert angezeigt, außer für Zeilenumbrüche, die durch eine oktale
Maskiersequenz ersetzt werden. Daher ist es im Ergebnis nicht möglich zu bestimmen, ob der
ursprüngliche Dateiname ein Zeilenumbruchzeichen oder die tatsächliche Zeichensequenz \012
enthielt.
Falls das Mapping Datei-basiert ist und die Datei gelöscht wurde, wird die Zeichenkette »
(deleted)« an den Pfadnamen angehängt. Beachten Sie, dass auch dies mehrdeutig ist.
Unter Linux 2.0 gibt es kein Feld, das den Pfadnamen angibt.
/proc/PID/mem
Diese Datei kann genutzt werden, um auf die Speicherseiten des Prozesses mittels open(2), read(2)
und lseek(2) zuzugreifen.
Die Rechte, auf diese Datei zuzugreifen, werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_ATTACH_FSCREDS gesteuert; siehe ptrace(2).
/proc/PID/mountinfo (seit Linux 2.6.26)
Diese Datei enthält Informationen über Einhängungen im Einhängenamensraum des Prozesses (siehe
mount_namespaces(7)). Sie stellt verschiedene Informationen (z.B. Ausbreitungszustand, Wurzel von
Einhängungen für Bind-Einhängungen, Kennzeichner für jede Einhängung und seine Elterneinhängung)
bereit, die in der (älteren) Datei /proc/PID/mounts fehlen und korrigiert verschiedene andere
Probleme mit dieser Datei (z.B. Nichterweiterbarkeit, keine Unterscheidbarkeit von pro-Einhängung-
vs. pro-Superblock-Optionen).
Die Datei enthält Zeilen der folgenden Form:
36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
Die Zahlen in Klammern sind Zuordnungen zu den folgenden Beschreibungen:
(1) Einhängekennung: eine eindeutige Kennung für dieses Einhängen (kann nach umount(2) erneut
verwendet werden).
(2) Elternkennung: die Kennung der Eltern-Einhängung (oder von selbst für die Wurzel des
Einhängebaums dieses Einhängenamensraums)
Falls eine neue Einhängung oben auf eine bisherige bestehende Einhängung beim Pfadnamen P
gestapelt wird (so dass es die bestehende Einhängung versteckt), dann ist die
Elterneinhängung der neuen Einhängung die vorherige Einhängung an diesem Ort. Beim Blick auf
alle an einem bestimmten Ort gestapelten Einhängungen ist daher die oberste Einhängung jene,
die keine Elterneinhängung irgendeiner anderen Einhängung am gleichen Ort ist. (Beachten Sie
allerdings, dass diese oberste Einhängung nur zugreifbar sein wird, falls das längste
Pfadpräfix von P, das der Einhängepunkt ist, nicht selbst durch eine gestapelte Einhängung
versteckt ist.)
Falls die Elterneinhängung außerhalb des Wurzelverzeichnisses des Prozesses liegt (siehe
chroot(2)) wird die hier gezeigte Kennung keinen korrespondierenden Datensatz in mountinfo
haben, dessen Einhängekennung (Feld 1) auf die Einhängekennung des Elternprozesses passt (da
Einhängungen, die außerhalb des Wurzelverzeichnisses des Prozesses liegen, nicht in mountinfo
angezeigt werden). Als Sonderfall bei diesem Punkt kann die Wurzeleinhängung dieses Prozesses
eine Elterneinhängung (für das Initramfs-Dateisystem) haben, der außerhalb des
Wurzelverzeichnisses des Prozesses liegt, und ein Eintrag für diese Einhängung wird in
mountinfo nicht auftauchen.
(3) Major:Minor: der Wert von st_dev für Dateien im Dateisystem (siehe stat(2)).
(4) Wurzel: der Pfadname des Verzeichnisses in dem Dateisystem, der die Wurzel dieser Einhängung
darstellt.
(5) Einhängepunkt: der Einhängepunkt relativ zum Wurzelverzeichnis des Prozesses.
(6) Einhängeoptionen: individuelle Einhängeoptionen (siehe mount(2)).
(7) Optionale Felder: ein oder mehrere Felder der Form »Bezeichnung[:Wert]« (siehe unten).
(8) Trennzeichen: Das Ende der optionalen Felder wird durch einen einzelnen Bindestrich markiert.
(9) Dateisystemtyp: der Typ des Dateisystems im Format »Typ[.Untertyp]«.
(10) Einhänge-Ursprung: dateisystemspezifische Informationen oder »none«.
(11) Super-Optionen: individuelle Superblock-Optionen (siehe mount(2)).
Derzeit sind shared, master, propagate_from und unbindable mögliche optionale Felder. Siehe
mount_namespaces(7) für eine Beschreibung dieser Felder. Auswertprogramme sollten alle nicht
erkannten optionalen Felder ignorieren.
Weitere Informationen zur Ausbreitung von Einhängepunkten finden Sie in
Documentation/filesystems/sharedsubtree.rst (oder Documentation/filesystems/sharedsubtree.txt vor
Linux 5.8) im Linux-Kernel-Quelltext.
/proc/PID/mounts (seit Linux 2.4.19)
Diese Datei listet alle Dateisysteme auf, die derzeit in dem Einhängenamensraum des Prozesses
eingehängt sind (siehe mount_namespaces(7)). Das Format dieser Datei wird in fstab(5)
dokumentiert.
Seit Linux 2.6.15 kann diese Datei abgefragt werden: Nach dem Öffnen der Datei zum Lesen
veranlasst eine Änderung in dieser Datei (d.h. ein Dateisystem einhängen oder aushängen)
select(2), den Dateideskriptor als besondere Bedingung und poll(2) und epoll_wait(2) die Datei als
Prioritätsereignis (POLLPRI) zu markieren. (Vor Linux 2.6.30 führte eine Änderung in dieser Datei
dazu, dass der Dateideskriptor als lesbar für select(2) und als Fehlerzustand für poll(2) und
epoll_wait(2) markiert wurde.)
/proc/PID/mountstats (seit Linux 2.6.17)
Diese Datei macht Informationen (Statistiken, Konfigurationsinformation) über die Einhängungen im
»mount«-Namensraum des Prozesses verfügbar (siehe mount_namespaces(7)). Zeilen in dieser Datei
haben die folgende Form:
device /dev/sda7 mounted on /home with fstype ext3 [stats]
( 1 ) ( 2 ) (3 ) ( 4 )
Die Felder in jeder Zeile sind:
(1) Der Name des eingehängten Geräts (oder »nodevice«, wenn es kein entsprechendes Gerät gibt).
(2) Der Einhängepunkt innerhalb des Dateisystembaums.
(3) Der Dateisystemtyp.
(4) Optionale Statistiken und Konfigurationsinformationen. Derzeit (Stand Linux 2.6.26) stellen
nur NFS-Dateisysteme Informationen in diesem Feld bereit.
Diese Datei kann nur vom Eigentümer des Prozesses gelesen werden.
/proc/PID/net (seit Linux 2.6.25)
Siehe die Beschreibung von /proc/net.
/proc/PID/ns/ (seit Linux 3.0)
Dieses Unterverzeichnis enthält einen Eintrag für jeden Namensraum, der mittels setns(2)
manipuliert werden kann. Für weitere Informationen siehe namespaces(7).
/proc/PID/numa_maps (seit Linux 2.6.14)
Siehe numa(7).
/proc/PID/oom_adj (seit Linux 2.6.11)
Diese Datei kann verwendet werden, um die Bewertung anzupassen, anhand dessen Prozesse bei
Speicherknappheit (out-of-memory, OOM) abgebrochen werden. Der Kernel verwendet diesen Wert für
eine Bit-Verschiebeoperation des oom_score-Werts des Prozesses: Gültig sind Werte im Bereich von
-16 bis +15, sowie der besondere Wert -17, der einen Abbruch des Prozesses wegen Speicherknappheit
deaktiviert. Ein positiver Wert erhöht die Wahrscheinlichkeit, dass der Prozess vom OOM-Killer
getötet wird, ein negativer Wert senkt die Wahrscheinlichkeit.
Der Standardwert für diese Datei ist 0. Ein neuer Prozess erbt die Einstellung oom_adj von seinem
Elternprozess. Ein Prozess muss privilegiert sein (CAP_SYS_RESOURCE), um diese Datei zu
aktualisieren.
seit Linux 2.6.36 wird die Verwendung dieser Datei gegenüber /proc/PID/oom_score_adj missbilligt.
/proc/PID/oom_score (seit Linux 2.6.11)
Diese Datei zeigt die aktuelle Bewertung des Kernels für diesen Prozess als Grundlage für die
Auswahl als Opfer des OOM-Killers. Eine höhere Bewertung bedeutet, dass der Prozess eher von dem
OOM-Killer ausgewählt werden soll. Die Grundlage dieser Bewertung ist der Speicherverbrauch.
Verschiedene andere Faktoren erhöhen (+) oder verringern (-) diesen Wert. Diese Faktoren sind:
• ob der Prozess privilegiert ist (-).
Vor Linux 2.6.36 wurden die folgenden Faktoren auch bei der Berechnung von oom_score benutzt:
• ob der Prozess mittels fork(2) viele Kinder erzeugt (+);
• ob der Prozess schon lange läuft oder viel CPU-Zeit verbraucht hat (-);
• ob der Prozess einen niedrigen Nice-Wert hat (d.h. > 0) (+); und
• ob der Prozess direkt auf die Hardware zugreift (-).
Der oom_score spiegelt auch die Anpassung durch die oom_score_adj- oder oom_adj-Einstellung für
den Prozess.
/proc/PID/oom_score_adj (seit Linux 2.6.36)
Diese Datei kann zur Anpassung der Schlechtigkeitsheuristik verwandt werden, die eingesetzt wird,
um in Speicherknappheitssituationen den zu beendenden Prozess auszuwählen.
Die Schlechtigkeits-Heuristik weist jedem möglichen Prozess einen Wert von 0 (niemals töten) bis
1000 (immer töten) zu, um zu bestimmen, welcher Prozess infrage kommt. Der Wert beschreibt im
Wesentlichen den kontinuierlichen Anteil des erlaubten Speichers, aus dem sich der Prozess
Speicher zuweisen darf. Als Grundlage dient dazu der aktuelle verwendete Speicher und
Auslagerungsspeicher. Wenn ein Prozess beispielsweise sämtlichen erlaubten Speicher nutzt, ist
dessen Schlechtigkeitsbewertung bei 1000. Nutzt er die Hälfte des erlaubten Speichers, beträgt die
Bewertung 500.
Es gibt einen weiteren Faktor in der Schlechtigkeitsbewertung: Root-Prozessen wird 3% zusätzlicher
Speicher gegenüber anderen Prozessen gegeben.
Die Menge des »erlaubten« Speichers hängt von dem Kontext ab, in dem der OOM-Killer aufgerufen
wurde. Falls der Kontext ist, dass der oder die Prozessoren ausgelastet sind, entspricht der
erlaubte Speicher dem Speicher, der diesem Cpuset zugewiesen ist (siehe cpuset(7)). Falls der oder
die Mempolicy-Knoten erschöpft ist/sind, repräsentiert der erlaubte Speicher die Mempolicy-Knoten.
Falls eine Arbeitsspeicher- (oder Auslagerungsspeicher-) Grenze erreicht wurde, entspricht der
erlaubte Speicher dieser Grenze. Sollte das gesamte System keinen Speicher mehr übrig haben, steht
der erlaubte Speicher für alle verfügbaren Ressoucen.
Die Wert aus oom_score_adj wird zur Schlechtigkeitsbewertung hinzugefügt, bevor dieser zur
Ermittlung des zu tötenden Prozesses verwendet wird. Zulässige Werte liegen zwischen -1000
(OOM_SCORE_ADJ_MIN) und +1000 (OOM_SCORE_ADJ_MAX), einschließlich dieser. Dies ermöglicht auf
Anwendungsebene die Einstellungen für das OOM-Killern zu steuern; dies reicht von der permanentes
Bevorzugen eines bestimmten Prozesses oder deren vollständige Deaktivierung des OOM-Killers für
ihn. Der niedrigste mögliche Wert von -1000 ist gleichbedeutend mit der vollständigen
Deaktivierung des OOM-Killers für diesen Prozess, da dieser stets eine Schlechtigkeitsbewertung
von 0 meldet.
Infolgedessen ist es für die Anwendungsebene sehr einfach, die Speichermenge zu definieren, die
für jeden Prozess in Betracht gezogen wird. Die Festlegung eines Wertes von +500 für oom_score_adj
ist beispielsweise etwa gleichbedeutend damit, dass die übrigen Prozesse, die das gleiche System,
Cpuset, Mempolicy oder Speicher-Controller-Ressourcen mit verwenden, mindestens 50% mehr Speicher
verwenden. Andererseits wäre ein Wert von -500 etwa gleichbedeutend damit, den erlaubten Speicher
eines Prozesses bei der Bewertung des erlaubten Speichers des Prozesses um 50% zu reduzieren.
Zur Rückwärtskompatibilität mit früheren Kerneln kann /proc/PID/oom_adj immer noch zur
Feineinstellung der Schlechtigkeitsbewertung verwendet werden. Dieser Wert skaliert linear mit
oom_score_adj.
Schreiben in /proc/PID/oom_score_adj oder /proc/PID/oom_adj führt zur Änderung des anderen mit dem
skalierten Wert.
Das Programm choom(1) stellt eine Befehlszeilenschnittstelle für die Anpassung des Wertes
oom_score_adj eines laufenden Prozesses oder frisch ausgeführten Befehls bereit.
/proc/PID/pagemap (seit Linux 2.6.25)
Diese Datei zeigt das Mapping jeder der virtuellen Seiten des Prozesses auf die physischen
Seiten-Frames oder den Auslagerungsbereich. Sie enthält einen 64-Bit-Wert für jede virtuelle
Seite, wobei die Bits wie folgt gesetzt sind:
63 Falls gesetzt ist die Seite im RAM
62 Falls gesetzt, befindet sich die Seite im Auslagerungsbereich (Swap)
61 (seit Linux 3.5)
Die Seite ist eine Datei-gemappte Seite oder eine gemeinsam benutzte Seite.
60…58 (seit Linux 3.11)
Null
57 (seit Linux 5.14)
Falls gesetzt, ist die Seite durch userfaultfd(2) schreibgeschützt.
56 (seit Linux 4.2)
Diese Seite ist exklusiv gemappt.
55 (seit Linux 3.11)
PTE ist soft-dirty (leicht geändert, siehe die Kernel-Quelldatei
Documentation/admin-guide/mm/soft-dirty.rst).
54…0 Falls die Seite im RAM (Bit 63) liegt, stellen diese Bits die Seiten-Frame-Nummer bereit,
die zum Indizieren von /proc/kpageflags und /proc/kpagecount benutzt werden kann. Falls die
Seite im Auslagerungsspeicher liegt (Bit 62), geben die Bits 4…0 den Typ des
Auslagerungsspeichers an und die Bits 54…5 kodieren den Auslagerungsspeicherversatz.
Vor Linux 3.11 wurden die Bits 60…55 dazu verwandt, den Logarithmus (in der Basis 2) der
Seitengröße zu halten.
Um /proc/PID/pagemap effektiv einzusetzen, verwenden Sie /proc/PID/maps, um die Speicherbereiche
zu bestimmen, die tatsächlich gemappt sind und überspringen Sie die nicht gemappten Bereiche.
Die Datei /proc/PID/pagemap ist nur vorhanden, wenn die Kernel-Konfigurationsoption
CONFIG_PROC_PAGE_MONITOR aktiviert ist.
Die Zugriffsberechtigungen dieser Datei werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_READ_FSCREDS geregelt; siehe ptrace(2).
/proc/PID/personality (seit Linux 2.6.28)
Diese nur lesbare Datei legt die Ausführungs-Domain des Prozesses offen, wie sie von
personality(2) gesehen wird. Der Wert ist hexadezimal dargestellt.
Die Rechte, auf diese Datei zuzugreifen, werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_ATTACH_FSCREDS gesteuert; siehe ptrace(2).
/proc/PID/root
UNIX und Linux unterstützen das Konzept eines prozesseigenen Wurzel-Dateisystems (root), das für
jeden Prozess mit dem Systemauf chroot(2) gesetzt wird. Diese Datei ist ein symbolischer Link, der
auf das Wurzelverzeichnis des Prozesses weist, und verhält sich wie es auch exe und fd/* tun.
Beachten Sie, dass diese Datei nicht nur ein einfacher symbolischer Link ist. Sie stellt den
gleichen Blick auf das Dateisystem (einschließlich Namensräume und der Gruppe der
pro-Prozess-Einhängungen) wie der Prozess dar. Ein Beispiel erläutert diesen Punkt. In einem
Terminal wird eine Shell in einem neuen Benutzer- und Einhängenamensraum gestartet und in dieser
Shell werden einige neue Einhängungen erstellt:
$ PS1='sh1# ' unshare -Urnm
sh1# mount -t tmpfs tmpfs /etc # Leeres Tmpfs unter /etc einhängen
sh1# mount --bind /usr /dev # /usr unter /dev einhängen
sh1# echo $$
27123
In einem zweiten Terminalfenster, in dem ursprünglichen Einhängenamensraum, wird der Inhalt der
entsprechenden Einhängungen in dem ursprünglichen und dem neuen Namensraum angeschaut:
$ PS1='sh2# ' sudo sh
sh2# ls /etc | wc -l # Im anfänglichen NR
309
sh2# ls /proc/27123/root/etc | wc -l # /etc in anderem NR
0 # Das leere Verz tmpfs
sh2# ls /dev | wc -l # Im anfänglichen NR
205
sh2# ls /proc/27123/root/dev | wc -l # /dev in anderem NR
11 # Tatsächlich bind-
# eingehängt in /usr
sh2# ls /usr | wc -l # /usr im anfänglichen NR
11
In einem Multithread-Prozess ist der Inhalt des symbolischen Links /proc/PID/root nicht mehr
verfügbar, wenn der Haupt-Thread schon beendet ist (typischerweise durch einen Aufruf von
pthread_exit(3)).
Die Rechte, diesen symbolischen Link zu dereferenzieren oder zu lesen (readlink(2)), werden von
einer Ptrace-Zugriffsmodusprüfung PTRACE_MODE_READ_FSCREDS gesteuert; siehe ptrace(2).
/proc/PID/projid_map (seit Linux 3.7)
Siehe user_namespaces(7).
/proc/PID/seccomp (Linux 2.6.12 bis 2.6.22)
Diese Datei kann zum Lesen und Ändern der Moduseinstellungen der sicheren Berechnung (Seccomp) des
Prozesses verwandt werden. Sie enthält den Wert 0, falls der Prozess sich nicht im Seccomp-Modus
befindet und 1, falls der Prozess sich im strikten Seccomp-Modus befindet (siehe seccomp(2)). Wird
1 in diese Datei geschrieben, wird der Prozess unwiderruflich in den strikten Seccomp-Modus
gebracht. (Weitere Versuche, in diese Datei zu schreiben, werden mit dem Fehler EPERM
fehlschlagen.)
Unter Linux 2.6.23 verschwand diese Datei und wurde durch die Aktionen PR_GET_SECCOMP und
PR_SET_SECCOMP von prctl(2) ersetzt (und später durch seccomp(2) und das Feld Seccomp in
/proc/PID/status).
/proc/PID/setgroups (seit Linux 3.19)
Siehe user_namespaces(7).
/proc/PID/smaps (seit Linux 2.6.14)
Diese Datei zeigt den Speicherverbrauch für jedes der Prozess-Mappings. (Der Befehl pmap(1) zeigt
ähnliche Informationen in einer Form, die leichter auswertbar sein könnte.) Für jedes der Mappings
gibt es eine Reihe von Zeilen wie die folgende:
00400000-0048a000 r-xp 00000000 fd:03 960637 /bin/bash
Size: 552 kB
Rss: 460 kB
Pss: 100 kB
Shared_Clean: 452 kB
Shared_Dirty: 0 kB
Private_Clean: 8 kB
Private_Dirty: 0 kB
Referenced: 460 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
ProtectionKey: 0
VmFlags: rd ex mr mw me dw
Die erste dieser Zeilen enthält die gleichen Informationen, wie sie für das Mapping in
/proc/PID/maps angezeigt werden. Die übrigen Zeilen zeigen die Größe des Mappings, den aktuell im
RAM befindlichen Anteil des Mappings, der Anteil des Prozesses an dem Mapping (»Pss«), die Anzahl
unveränderter (clean) und geänderter (dirty) gemeinsam genutzter Seiten des Mappings und die
Anzahl unveränderter und geänderter privater Seiten. »Referenced« gibt die Menge des derzeit als
referenziert oder zugegriffen markierten Speichers an. »Anonymous« zeigt die Speichermenge, die zu
keiner Datei gehört. »Swap« zeigt an, wieviel möchte-gerne-Anonym-Speicher auch verwandt wird,
aber im Auslagerungsspeicher.
Die Zeile »KernelPageSize« (verfügbar seit Linux 2.6.29) ist die vom Kernel verwandte Seitengröße,
um den virtuellen Speicherbereich zu hinterlegen. Dies passt in den meisten Fällen auf die Größe,
die von der MMU verwandt wird. Allerdings tritt ein Gegenbeispiel auf PPC64-Kerneln auf, auf denen
64 kB als Basisseitengröße verwandt wird, aber auf älteren Prozessoren 4 kB für die MMU verwendet
wird. Um zwischen den zwei Attributen zu unterscheiden, meldet die Zeile »MMUPageSize« (auch seit
Linux 2.6.29 verfügbar) die von der MMU verwandte Seitengröße.
Das »Locked« zeigt an, ob das Mapping im Speicher gesperrt ist oder nicht.
Die Zeile »ProtectionKey« (verfügbar seit Linux 4.9, nur x86) enthält den Speicherschutzschlüssel
(siehe pkeys(7)), der dem virtuellen Speicherbereich zugeordnet ist. Dieser Eintrag ist nur
vorhanden, falls der Kernel mit der Konfigurationsoption CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
gebaut wurde (seit Linux 4.6).
Die Zeile »VmFlags« (verfügbar seit Linux 3.8) stellt die dem virtuellen Speicherbereich
zugeordneten Kernelschalter dar, kodiert mittels der folgenden zwei-Buchstaben-Codes:
rd - lesbar
wr - schreibbar
ex - ausführbar
sh - gemeinsam
mr - darf gelesen werden
mw - darf geschrieben werden
me - darf ausgeführt werden
ms - darf gemeinsam verwandt werden
gd - Stapelsegment wächst nach unten
pf - reiner PFN-Bereich
dw - Schreiben auf die gemappte Datei deaktiviert
lo - Seiten sind im Speicher gesperrt
io - Speicher-gemappter E/A-Bereich
sr - Empfehlung zum sequentiellen Lesen bereitgestellt
rr - Empfehlung zum zufälligen Lesen bereitgestellt
dc - beim Fork nicht zu kopierender Bereich
de - Bereich beim Remapping nicht erweitern
ac - Bereich ist rechenschaftspflichtig
nr - Auslagerungsbereich ist für den Bereich nicht reserviert
ht - Bereich verwendet große tlb-Seiten
sf - synchrone Seitenausnahmebehandlungen durchführen (seit Linux 4.15)
nl - nichtlineares Mapping (entfernt in Linux 4.0)
ar - Architektur-spezifische Schalter
wf - beim Fork bereinigen (seit Linux 4.14)
dd - Bereich nicht in den Speicherauszug aufnehmen
sd - Soft-dirty-Schalter (seit Linux 3.13)
mm - gemischt-gemappter Bereich
hg - Empfehlungs-Schalter für große Seiten
nh - Kein-Empfehlungs-Schalter für große Seiten
mg - Empfehlungsschalter zum Zusammenführen
um - userfaultfd-Nachverfolgung fehlender Seiten (seit Linux 4.3)
uw - userfaultfd-Nachverfolgung wprotect-Seiten (seit Linux 4.3)
Die Datei /proc/PID/smaps ist nur vorhanden, wenn die Kernel-Konfigurationsoption
CONFIG_PROC_PAGE_MONITOR aktiviert ist.
/proc/PID/stack (seit Linux 2.6.29)
Diese Datei stellt eine symbolische Verfolgung der Funktionsaufrufe in dem Kernel-Stack dieses
Prozesses bereit. Diese Datei wird nur bereitgestellt, falls der Kernel mit der
Konfigurationsoption CONFIG_STACKTRACE gebaut wurde.
Die Rechte, auf diese Datei zuzugreifen, werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_ATTACH_FSCREDS gesteuert; siehe ptrace(2).
/proc/PID/stat
Statusinformationen des Prozesses. Wird von ps(1) benutzt. Sie werden in der Kernelquelldatei
fs/proc/array.c definiert.
Die Felder werden in dieser Reihenfolge mit ihrem passenden scanf(3)-Formatkennzeichnern unten
aufgeführt. Ob bestimmte dieser Felder gültige Informationen anzeigen, wird von einer
Ptrace-Zugriffsmodusprüfung PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT gesteuert (siehe
ptrace(2)). Falls die Prüfung den Zugriff verweigert, wird der Feldwert mit 0 angegeben. Die
betroffenen Felder werden mit der Markierung [PT] gekennzeichnet.
(1) PID %d
Die Prozesskennung.
(2) comm %s
Der Name der ausführbaren Datei, in Klammern. Zeichenketten länger als TASK_COMM_LEN (16)
Zeichen (einschließlich des abschließenden Nullbytes) werden ohne Rückmeldung
abgeschnitten. Dies wird angezeigt, unabhängig davon, ob das Programm ausgelagert ist oder
nicht.
(3) state %c
Eines der folgenden Zeichen zur Angabe des Prozesszustandes:
R Laufend
S Schlafend in einem unterbrechbaren Wartezustand
D Wartend in einem nicht unterbrechbaren Plattenschlaf
Z Zombie
T Gestoppt (aufgrund eines Signals) oder (vor Linux 2.6.33) Verfolgung gestoppt
t Verfolgung gestoppt (seit Linux 2.6.33)
W Paging (nur vor Linux 2.6.0)
X Getötet (seit Linux 2.6.0)
x Getötet (nur Linux 2.6.33 bis 3.13)
K Wakekill (nur Linux 2.6.33 bis 3.13)
W Aufwachend (nur Linux 2.6.33 bis 3.13)
P Geparkt (nur Linux 3.9 bis 3.13)
I Leerlauf (Linux 4.14 und neuer)
(4) ppid %d
Die Prozesskennung (PID) des Elternprozesses dieses Prozesses.
(5) pgrp %d
Die Prozess-Gruppenkennung des Prozesses.
(6) session %d
Die Sitzungskennung des Prozesses.
(7) tty_nr %d
Das steuernde Terminal des Prozesses. (Die Minor-Gerätenummer ist in der Kombination der
Bits 31 bis 20 und 7 bis 0 enthalten; die Major-Gerätenummer befindet sich in den Bits 15
bis 8.)
(8) tpgid %d
Die Kennung der Vordergrund-Prozessgruppe des steuernden Terminals des Prozesses.
(9) flags %u
Das Wort mit den Kernel-Schaltern des Prozesses. Die Bedeutung der Bits finden Sie in den
PF_*-#define-Anweisungen in der Linux-Quellcodedatei <linux/sched.h>. Die Details hängen
von der Kernel-Version ab.
Das Format dieses Feldes war %lu vor Linux 2.6.
(10) minflt %lu
Die Anzahl geringfügiger Ausnahmebehandlungen des Prozesses, die kein Nachladen einer
Speicherseite von Platte erforderlich gemacht haben.
(11) cminflt %lu
Die Anzahl geringfügiger Ausnahmebehandlungen der Kindprozesse des Prozesses, auf die der
Prozess wartete.
(12) majflt %lu
Die Anzahl wesentlicher Ausnahmebehandlungen des Prozesses, die das Nachladen einer
Speicherseite von der Platte erforderten.
(13) cmajflt %lu
Die Anzahl wesentlicher Ausnahmebehandlungen der Kindprozesse des Prozesses, auf die der
Prozess wartete.
(14) utime %lu
Gesamtzeit, die dieser Prozess im Benutzermodus verbracht hat, gemessen in Uhren-Ticks
(dividieren Sie durch sysconf(_SC_CLK_TCK)). Das umfasst Gastzeit, guest_time (aufgewendete
Zeit für den Betrieb einer virtuellen CPU, siehe unten), so dass Anwendungen, die das
Gastzeit-Feld nicht kennen, diese Zeit in ihren Berechnungen nicht außer acht lassen.
(15) stime %lu
Gesamtzeit, die dieser Prozess im Kernel-Modus verbracht hat, gemessen in Uhren-Ticks
(dividieren Sie durch sysconf(_SC_CLK_TCK)).
(16) cutime %ld
Gesamtzeit, die abgewartete Kindprozesse im Benutzermodus verbracht haben, gemessen in
Uhren-Ticks (dividieren Sie durch sysconf(_SC_CLK_TCK)) (siehe auch times(2)). Das umfasst
Gastzeit, guest_time (Laufzeit in einer virtuellen CPU, siehe unten).
(17) cstime %ld
Gesamtzeit, die abgewartete Kindprozesse im Kernel-Modus verbracht haben, gemessen in
Uhren-Ticks (dividieren Sie durch sysconf(_SC_CLK_TCK)).
(18) priority %ld
(Erklärung für Linux 2.6) Für Prozesse, die im Scheduling eine Echtzeit-Strategie verfolgen
(policy weiter unten, siehe sched_setscheduler(2)), ist dies die negierte
Scheduling-Priorität minus eins, das heißt, eine Zahl im Bereich von -2 bis -100,
entsprechend den Echtzeitprioritäten 1 bis 99. Für Prozesse, deren Scheduling keine
Echtzeit-Strategie verfolgt, ist dies der rohe Nice-Wert (setpriority(2)), wie er im Kernel
dargestellt ist. Der Kernel speichert Nice-Werte als Zahlen im Bereich 0 (hoch) bis 39
(niedrig), entsprechend des für den Benutzer sichtbaren Nice-Bereichs von -20 bis 19.
Vor Linux 2.6 war dies ein skalierter Wert auf Grundlage des vom Scheduler an den Prozess
zugewiesenen Gewichts.
(19) nice %ld
Der Nice-Wert (siehe setpriority(2)), ein Wert im Bereich von 19 (niedrige Priorität) bis
-20 (hohe Priorität).
(20) num_threads %ld
Anzahl von Threads in diesem Prozess (seit Linux 2.6). Vor Linux 2.6 war dieses Feld mit
dem Wert 0 als Platzhalter für ein früher entferntes Feld hartkodiert.
(21) itrealvalue %ld
Die Zeit (in Jiffies), bevor dem Prozess aufgrund eines Intervall-Timers ein SIGALRM
gesendet wird. Seit Linux 2.6.17 wird dieses Feld nicht mehr gewartet und wird mit 0
hartkodiert.
(22) starttime %llu
Die Zeit, zu der der Prozess nach dem Systemstart gestartet wurde. In Linux vor 2.6 wurde
dieser Wert in Jiffies ausgegeben. Seit Linux 2.6 wird der Wert in Uhren-Ticks ausgedrückt
(teilen Sie diese durch sysconf(_SC_CLK_TCK)).
Das Format dieses Feldes war %lu vor Linux 2.6.
(23) vsize %lu
Größe des virtuellen Speichers in Bytes.
(24) rss %ld
Resident Set Size: Anzahl der Seiten, die der Prozess tatsächlich im Speicher hat. Dabei
zählen nur die Seiten von Text, Daten und Stack. Nicht abgerufene oder ausgelagerte
Bereiche zählen nicht mit. Dieser Wert ist ungenau, siehe /proc/PID/statm weiter unten.
(25) rsslim %lu
Aktuelle weiche Grenze für die RSS des Prozesses; siehe die Beschreibung von RLIMIT_RSS in
getrlimit(2).
(26) startcode %lu [PT]
Die Adresse, oberhalb derer Programmtext ausgeführt werden kann.
(27) endcode %lu [PT]
Die Adresse, unterhalb derer Programmtext ausgeführt werden kann.
(28) startstack %lu [PT]
Die Startadresse des Stacks (also der »Boden«).
(29) kstkesp %lu [PT]
Derzeitiger Wert von ESP (Stack Pointer), wie er in der Kernel-Stack-Seite für diesen
Prozess steht.
(30) kstkeip %lu [PT]
Der aktuelle EIP (Instruction Pointer, Anweisungszeiger).
(31) signal %lu
Die Bitmap anstehender Signale, angezeigt als Dezimalzahl. Obsolet, weil sie keine
Informationen über Echtzeitsignale gibt; verwenden Sie stattdessen /proc/PID/status.
(32) blocked %lu
Die Bitmap blockierter Signale, angezeigt als Dezimalzahl. Obsolet, weil sie keine
Informationen über Echtzeitsignale gibt; verwenden Sie stattdessen /proc/PID/status.
(33) sigignore %lu
Die Bitmap ignorierter Signale, angezeigt als Dezimalzahl. Obsolet, weil sie keine
Informationen über Echtzeitsignale gibt; verwenden Sie stattdessen /proc/PID/status.
(34) sigcatch %lu
Die Bitmap abgefangener Signale, angezeigt als Dezimalzahl. Obsolet, weil sie keine
Informationen über Echtzeitsignale gibt; verwenden Sie stattdessen /proc/PID/status.
(35) wchan %lu [PT]
Dies ist der »Kanal«, in dem der Prozess wartet. Es ist die Adresse des Orts im Kernel, an
dem der Prozess schläft. Der entsprechende symbolische Name kann in /proc/PID/wchan
gefunden werden.
(36) nswap %lu
Anzahl ausgelagerter Seiten (nicht gewartet).
(37) cnswap %lu
Aufaddiertes nswap der Kindprozesse (nicht gewartet).
(38) exit_signal %d (seit Linux 2.1.22)
Das an den Elternprozess zu sendende Signal, wenn wir sterben.
(39) processor %d (seit Linux 2.2.8)
Nummer der CPU, auf der der Prozess zuletzt lief.
(40) rt_priority %u (seit Linux 2.5.19)
Priorität für das Echtzeit-Scheduling, eine Zahl im Bereich von 1 bis 99 für Prozesse,
deren Scheduling einer Echtzeit-Strategie folgt oder 0 für andere Prozesse (siehe
sched_setscheduler(2)).
(41) policy %u (seit Linux 2.5.19)
Scheduling-Regeln (siehe sched_setscheduler(2)). Dekodieren Sie sie mit den
SCHED_*-Konstanten in linux/sched.h.
Das Format dieses Feldes war %lu vor Linux 2.6.22.
(42) delayacct_blkio_ticks %llu (seit Linux 2.6.18)
Kumulierte Block-E/A-Verzögerungen, gemessen in Uhren-Ticks (Hundertstelsekunden).
(43) guest_time %lu (seit Linux 2.6.24)
Gastzeit des Prozesses (aufgewendete Zeit für den Betrieb einer virtuellen CPU für ein
Gast-Betriebssystem), gemessen in Uhren-Ticks (dividieren Sie durch sysconf(_SC_CLK_TCK)).
(44) cguest_time %ld (seit Linux 2.6.24)
Gastzeit der Kindprozesse des Prozesses, gemessen in Uhren-Ticks (dividieren Sie durch
sysconf(_SC_CLK_TCK)).
(45) start_data %lu (seit Linux 3.3) [PT]
Adresse, oberhalb derer die initialisierten und nicht-initialisierten Programmdaten (BSS)
abgelegt werden.
(46) end_data %lu (seit Linux 3.3) [PT]
Adresse, unterhalb derer die initialisierten und nicht-initialisierten Programmdaten (BSS)
abgelegt werden.
(47) start_brk %lu (seit Linux 3.3) [PT]
Adresse, oberhalb derer der Heap von Programmen mit brk(2) ausgedehnt werden kann.
(48) arg_start %lu (seit Linux 3.5) [PT]
Adresse, oberhalb derer die Befehlszeilenargumente (argv) abgelegt werden.
(49) arg_end %lu (seit Linux 3.5) [PT]
Adresse, unterhalb derer die Befehlszeilenargumente (argv) abgelegt werden.
(50) env_start %lu (seit Linux 3.5) [PT]
Adresse, oberhalb derer die Programmumgebung abgelegt wird.
(51) env_end %lu (seit Linux 3.5) [PT]
Adresse, unterhalb derer die Programmumgebung abgelegt wird.
(52) exit_code %d (seit Linux 3.5) [PT]
Der Exit-Status des Threads in dem durch waitpid(2) berichteten Format.
/proc/PID/statm
Informiert über den Speicherverbrauch, gemessen in Seiten. Die Spalten bedeuten:
Größe (1) Gesamtgröße des Programms
(dasselbe wie VmSize in /proc/PID/status)
im Speicher (2) Größe des Resident Set
(dasselbe wie VmRSS in /proc/PID/status)
gemeinsam (3) Anzahl von residenten (d.h. dateigestützten) gemeinsamen
Seiten
(ungenau; dasselbe wie RssFile+RssShmem in
/proc/PID/status)
Text (4) Text (Code)
Bibliothek (5) Bibliothek (seit Linux 2.6 nicht verwendet, immer 0)
Daten (6) Daten + Stack
geändert (7) geänderte Seiten (dirty) (seit Linux 2.6
nicht verwendet, immer 0)
Einige dieser Werte sind aufgrund kernelinterner Skalierungsoptimierung ungenau. Falls genaue
Werte benötigt werden, verwenden Sie stattdessen /proc/PID/smaps oder /proc/PID/smaps_rollup.
Diese sind deutlich langsamer, stellten aber genaue, detaillierte Informationen bereit.
/proc/PID/status
Stellt viele der Informationen in /proc/PID/stat und /proc/PID/statm in einem Format bereit, das
für Menschen einfacher auszuwerten ist. Ein Beispiel:
$ cat /proc/$$/status
Name: bash
Umask: 0022
State: S (sleeping)
Tgid: 17248
Ngid: 0
Pid: 17248
PPid: 17200
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 100 100 100 100
FDSize: 256
Groups: 16 33 100
NStgid: 17248
NSpid: 17248
NSpgid: 17248
NSsid: 17200
VmPeak: 131168 kB
VmSize: 131168 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 13484 kB
VmRSS: 13484 kB
RssAnon: 10264 kB
RssFile: 3220 kB
RssShmem: 0 kB
VmData: 10332 kB
VmStk: 136 kB
VmExe: 992 kB
VmLib: 2104 kB
VmPTE: 76 kB
VmPMD: 12 kB
VmSwap: 0 kB
HugetlbPages: 0 kB # 4.4
CoreDumping: 0 # 4.15
Threads: 1
SigQ: 0/3067
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
CapAmb: 0000000000000000
NoNewPrivs: 0
Seccomp: 0
Speculation_Store_Bypass: vulnerable
Cpus_allowed: 00000001
Cpus_allowed_list: 0
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 150
nonvoluntary_ctxt_switches: 545
Die Bedeutung der Felder im Einzelnen:
Name Der von diesem Prozess ausgeführte Befehl. Zeichenketten länger als TASK_COMM_LEN (16)
Zeichen (einschließlich des abschließenden Nullbytes) werden ohne Rückmeldung
abgeschnitten.
Umask Die Umask des Prozesses, oktal mit führender Null, siehe umask(2). (Seit Linux 4.7.)
State Aktueller Prozesszustand; einer der Werte »R (running)«, »S (sleeping)«, »D (disk sleep)«,
»T (stopped)«, »t (tracing stop)«, »Z (zombie)« oder »X (dead)«.
Tgid Gruppenkennung des Threads (d.h. die Prozesskennung).
Ngid NUMA-Gruppenkennung (0 falls keine; seit Linux 3.13).
Pid Thread-Kennung (siehe gettid(2)).
PPid PID des Elternprozesses.
TracerPid
PID des Prozesses, der diesen Prozess beobachtet (0 ohne Beobachtung).
Uid, Gid
reale, effektive, gespeicherte sowie Dateisystem-UIDs (GIDs).
FDSize Anzahl der aktuell bereitgestellten Dateideskriptor-Slots.
Groups Ergänzende Gruppenliste.
NStgid Thread-Gruppenkennung (d.h. PID) in jedem der PID-Namensräume, in denen PID ein Mitglied
ist. Der ganz linke Eintrag zeigt den Wert in Bezug auf den PID-Namensraum des Prozesses,
der dieses Procfs eingehängt hat (oder des Wurzelnamensraums, falls vom Kernel eingehängt),
gefolgt von den Werten nachfolgend geschachtelter innerer Namensräume. (Seit Linux 4.1)
NSpid Thread-Kennung in jedem der PID-Namensräume, in denen PID ein Mitglied ist. Die Felder sind
wie bei NStgid sortiert. (Seit Linux 4.1.)
NSpgid Prozessgruppenkennung in jedem der PID-Namensräume, in denen PID ein Mitglied ist. Die
Felder sind wie bei NStgid sortiert. (Seit Linux 4.1.)
NSsid Sitzungskennung der Nachkommens-Namensraum-Sitzungs-Kennungs-Hierarchie, in jedem der
PID-Namensraumen, in denen PID ein Mitglied ist. Die Felder sind wie bei NStgid sortiert.
(Seit Linux 4.1.)
VmPeak Maximalwert des genutzten virtuellen Speichers.
VmSize Größe des virtuellen Speichers
VmLck Größe des gesperrten Speichers (siehe mlock(2)).
VmPin Größe des befestigten Speichers (seit Linux 3.2). Diese Seiten können nicht verschoben
werden, da etwas den direkten Zugriff auf physischen Speicher benötigt.
VmHWM Resident Set Size (»Hochwassermarke«). Dieser Wert ist ungenau; siehe /proc/PID/statm
weiter oben.
VmRSS Resident set size. Beachten Sie, dass dieser Wert die Summe aus RssAnon, RssFile und
RssShmem ist. Dieser Wert ist ungenau; siehe /proc/PID/statm weiter oben.
RssAnon
Größe des residenten anonymen Speichers. (seit Linux 4.5). Dieser Wert ist ungenau; siehe
/proc/PID/statm weiter oben.
RssFile
Größe von residenten Datei-Mappings. (seit Linux 4.5). Dieser Wert ist ungenau; siehe
/proc/PID/statm weiter oben.
RssShmem
Größe des residenten gemeinsamen Speichers (einschließlich System-V-gemeinsamer Speicher,
Mappings von tmpfs(5) und gemeinsame anonyme Mappings). (seit Linux 4.5).
VmData, VmStk, VmExe
Größe der Daten-, Stapelspeicher- und Textsegmente. Dieser Wert ist ungenau; siehe
/proc/PID/statm weiter oben.
VmLib Code-Größe von dynamischen Bibliotheken.
VmPTE Größe der Einträge in der Page Table (seit Linux 2.6.10).
VmPMD Größe der Page Tables zweiter Stufe (in Linux 4.0 hinzugefügt, entfernt in Linux 4.15).
VmSwap VmSwap: ausgelagerte virtuelle Speichergröße durch anonyme private Pages;
Shmem-Auslagerungsverwendung ist nicht enthalten (seit Linux 2.6.34). Dieser Wert ist
ungenau, siehe /proc/PID/statm weiter oben.
HugetlbPages
Größe der Hugetlb-Speicheranteile (seit Linux 4.4).
CoreDumping
Enthält den Wert 1, falls der Prozess derzeit einen Speicherauszug durchführt und 0, falls
nicht (seit Linux 4.15). Diese Information kann von einem Überwachungsprozess verwandt
werden, um das Töten eines Prozesses zu vermeiden, der derzeit einen Speicherauszug
durchführt, wodurch eine beschädigte Speicherauszugsdatei (»core dump«) vermieden wird.
Threads
Anzahl der Threads im Prozess, zu dem dieser Thread gehört.
SigQ Dieses Feld enthält zwei durch Schrägstriche getrennte Zahlen, die sich auf Signale in der
Warteschlange für die reale Benutzerkennung des Prozesses beziehen. Die erste davon ist die
Anzahl der derzeit in der Warteschlange befindlichen Signale für diese reale
Benutzerkennung und die zweite ist die Ressourcenbegrenzung für die Anzahl wartender
Signale für diesen Prozess (siehe die Beschreibung von RLIMIT_SIGPENDING in getrlimit(2)).
SigPnd, ShdPnd
Maske (hexadezimal ausgedrückt) der insgesamt für Thread und Prozess anhängende Signale
(siehe pthreads(7) und signal(7)).
SigBlk, SigIgn, SigCgt
Masken (hexadezimal ausgedrückt) für die Anzeige blockierter, ignorierter und abgefangener
Signale (siehe signal(7)).
CapInh, CapPrm, CapEff
In den vererbbaren, erlaubten und effektiven Capability-Mengen aktivierte Masken
(hexadezimal ausgedrückt) (siehe capabilities(7)).
CapBnd Capability-Begrenzungsmenge, hexadezimal ausgedrückt (seit Linux 2.6.26, siehe
capabilities(7)).
CapAmb Umgebungs-Capability-Menge, hexadezimal ausgedrückt (seit Linux 4.3, siehe
capabilities(7)).
NoNewPrivs
Wert des Bits no_new_privs (seit Linux 4.10, siehe prctl(2)).
Seccomp
Seccomp-Modus des Prozesses (seit Linux 3.8, siehe seccomp(2)). 0 bedeutet
SECCOMP_MODE_DISABLED; 1 bedeutet SECCOMP_MODE_STRICT; 2 bedeutet SECCOMP_MODE_FILTER.
Dieses Feld wird nur bereitgestellt, falls der Kernel mit der aktivierten
Kernelkonfigurationsoption CONFIG_SECCOMP gebaut wurde.
Speculation_Store_Bypass
Zustand der Abschwächung des Spekulationsdefekts (seit Linux 4.17, siehe prctl(2)).
Cpus_allowed
Hexadezimale Maske von CPUs, auf denen der Prozess laufen kann (seit Linux 2.6.24, siehe
cpuset(7)).
Cpus_allowed_list
Dasselbe wie das vorhergehende, aber in »Listenformat« (seit Linux 2.6.26, siehe
cpuset(7)).
Mems_allowed
Maske von für diesen Prozess erlaubten Speicherknoten (seit Linux 2.6.24, siehe cpuset(7)).
Mems_allowed_list
Dasselbe wie das vorhergehende, aber in »Listenformat« (seit Linux 2.6.26, siehe
cpuset(7)).
voluntary_ctxt_switches, nonvoluntary_ctxt_switches
Anzahl der freiwilligen und der unfreiwilligen Kontextwechsel (seit Linux 2.6.23).
/proc/PID/syscall (seit Linux 2.6.27)
Diese Datei legt die Systemaufrufnummer und -argumentenregister für den derzeit durch den Prozess
ausgeführten Systemaufruf offen. Es folgen die Werte des Stack-Zeigers und der
Programmzählerregister. Die Werte aller sechs Argumentenregister werden offengelegt, obwohl die
meisten Systemaufrufe weniger Register verwenden.
Falls der Prozess blockiert aber nicht in einem Systemaufruf ist, dann zeigt die Datei -1 an der
Stelle der Systemaufrufnummer an, gefolgt von nur den Werten des Stack-Zeigers und des
Programmzählers. Falls der Prozess nicht blockiert ist, dann enthält die Datei nur die
Zeichenkette »running«.
Diese Datei ist nur vorhanden, falls der Kernel mit CONFIG_HAVE_ARCH_TRACEHOOK konfiguriert wurde.
Die Rechte, auf diese Datei zuzugreifen, werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_ATTACH_FSCREDS gesteuert; siehe ptrace(2).
/proc/PID/task (seit Linux 2.6.0)
Dieses Verzeichnis enthält ein Unterverzeichnis für jeden Thread in dem Prozess. Der Name jedes
Unterverzeichnisses ist die numerische Thread-Kennung (TID) des Threads (siehe gettid(2)).
Innerhalb jedes dieser Unterverzeichnisse gibt es eine Reihe von Dateien mit gleichem Namen und
Inhalt wie unter den /proc/PID-Verzeichnissen. Für Attribute, die von allen Threads gemeinsam
verwendet werden, sind die Inhalte für jede der Dateien unter den /task/TID-Unterverzeichnissen
die gleichen wie in der entsprechenden Datei im Elternverzeichnis /proc/PID (z.B. in einem
Multithread-Prozess werden task/TID/cwd-Dateien den gleichen Wert wie die Datei task/PID/cwd im
Elternverzeichnis haben, da alle Threads in einem Prozess sich ein Arbeitsverzeichnis teilen). Für
Attribute, die für jeden Thread verschieden sind, können die entsprechenden Dateien unter task/TID
unterschiedliche Werte annehmen (z.B. können verschiedene Felder in jeder der
task/TID/status-Dateien für jeden Thread unterschiedlich sein) oder sie könnten in /proc/PID
überhaupt nicht existieren.
In Multithread-Prozessen sind die Inhalte des Verzeichnisses /proc/PID/task überhaupt nicht
verfügbar, falls der Haupt-Thread bereits beendet wurde (typischerweise durch den Aufruf von
pthread_exit(3)).
/proc/PID/task/TID/children (seit Linux 3.5)
Eine durch Leerzeichen getrennte Liste von Kindprozessen dieses Prozesses. Jeder Kindprozess wird
durch seine TID dargestellt.
Diese Option ist für die Verwendung durch das Prüfpunktwiederherstellungssystem
(Checkpoint/Restore In Userspace/CRIU) gedacht und stellt nur verlässlich eine Liste von
Kindprozessen bereit, falls alle Kindprozesse gestoppt oder eingefroren sind. Sie funktioniert
nicht richtig, falls Kindprozesse des Ziel-Tasks während des Lesens der Datei beendet werden.
Kindprozesse, die enden, können dazu führen, dass nicht endende Kindprozesse in der Liste
weggelassen werden. Dies macht diese Schnittstelle sogar noch unzuverlässiger als herkömmliche
PID-basierte Herangehensweisen, wenn der untersuchte Task und seine Kindprozesse nicht eingefroren
sind und der meiste Code sollte wahrscheinlich diese Schnittstelle nicht benutzen.
Bis Linux 4.2 wurde die Existenz dieser Datei durch die Kernelkonfigurationsoption
CONFIG_CHECKPOINT_RESTORE gesteuert. Seit Linux 4.2 wird sie durch die Option CONFIG_PROC_CHILDREN
gesteuert.
/proc/PID/timers (seit Linux 3.10)
Eine Liste der POSIX-Timer für diesen Prozess. Jeder Timer wird mit einer Zeile aufgeführt, die
mit der Zeichenkette »ID:« beginnt, beispielsweise:
ID: 1
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 0
ID: 0
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 1
Die gezeigten Zeilen für jeden Timer haben die folgenden Bedeutungen:
ID Die Kennung für diesen Timer. Dies ist nicht mit der von timer_create(2) zurückgelieferten
Timer-Kennung identisch. Stattdessen ist es die gleiche kernelinterne Kennung, die mittels
des Feldes si_timerid der Struktur siginfo_t verfügbar ist (siehe sigaction(2)).
signal Dies ist die Signalnummer, die dieser Timer zur Auslieferung von Benachrichtigungen
verwendet. Ihr folgt ein Schrägstrich und dann der dem Signal-Handler übergebene Wert
sigev_value. Gültig nur für Timer, die mittels Signal benachrichtigen.
notify Der Teil vor dem Schrägstrich legt den Mechanismus fest, den dieser Timer zur Auslieferung
von Nachrichten verwendet. Er ist entweder »thread«, »signal« oder »none«. Direkt nach dem
Schrägstrich ist entweder die Zeichenkette »tid« für Timer mit
SIGEV_THREAD_ID-Benachrichtigungen oder »pid« für Timer, die mittels andere Mechanismen
benachrichtigen. Nach dem ».« folgt die PID des Prozesses (oder der Kernel-Thread-Kennung
des Threads), der ein Signal geliefert bekommt, falls der Timer Benachrichtigungen über ein
Signal ausliefert.
ClockID
Dieses Feld identifiziert die Uhr, die der Timer für die Zeitmessung verwendet. Für die
meisten Uhren ist dies eine Zahl, die auf einen der Konstanten der Anwendungsebene CLOCK_*
passt, die mittels <time.h> offengelegt werden. CLOCK_PROCESS_CPUTIME_ID-Timer zeigen mit
einem Wert -6 in diesem Feld. CLOCK_THREAD_CPUTIME_ID-Timer zeigen mit einem Wert -2 in
diesem Feld.
Diese Datei ist nur vorhanden, falls der Kernel mit CONFIG_CHECKPOINT_RESTORE konfiguriert wurde.
/proc/PID/timerslack_ns (seit Linux 4.6)
Diese Datei legt den »derzeitigen« Spielraum des Timers ausgedrückt in Nanosekunden offen. Diese
Datei ist schreibbar, wodurch das Ändern des Spielraums des Timers möglich ist. Wird 0 in diese
Datei geschrieben, wird der Spielraum auf den »Standard«-Spielraum des Timers zurückgesetzt.
Weitere Einzelheiten finden Sie in der Besprechung von PR_SET_TIMERSLACK in prctl(2).
Ursprünglich wurde die Zugriffsberechtigung für diese Datei über eine Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_ATTACH_FSCREDS geregelt (siehe ptrace(2)). Allerdings wurde dies nachfolgend als zu
strenge Anforderung erachtet (und es hatte den Seiteneffekt, dass die Notwendigkeit für einen
Prozess, die Capability CAP_SYS_PTRACE zu haben, auch dazu führte, dass er den Speicher jedes
Prozesses lesen und verändern konnte). Daher wird seit Linux 4.9 nur die (schwächere) Capability
CAP_SYS_NICE für den Zugriff auf diese Datei benötigt.
/proc/PID/uid_map (seit Linux 3.5)
Siehe user_namespaces(7).
/proc/PID/wchan (seit Linux 2.6.0)
Der symbolische Name, der dem Ort im Kernel entspricht, an dem der Prozess schläft.
Die Zugriffsberechtigungen dieser Datei werden von einer Ptrace-Zugriffsmodusprüfung
PTRACE_MODE_READ_FSCREDS geregelt; siehe ptrace(2).
/proc/TID
Dies ist ein numerisches Unterverzeichnis für jeden der laufenden Threads, der nicht
Thread-Gruppenleiter ist (d.h. einem Thread, dessen Thread-Kennung nicht zu der Prozesskennung
identisch ist). Das Unterverzeichnis ist nach der Thread-Kennung benannt. Jedes dieser
Unterverzeichnisse enthält Dateien und Unterverzeichnisse, die Informationen über den Thread mit
der Thread-Kennung TID offenlegen. Die Inhalte dieser Verzeichnisse sind identisch zu den Inhalten
der entsprechenden /proc/PID/task/TID-Verzeichnisse.
Die Unterverzeichnisse /proc/TID sind beim Durchlauf durch /proc mit getdents(2) nicht sichtbar
(und daher nicht sichtbar, wenn ls(1) zur Anzeige der Inhalte von /proc verwandt wird). Allerdings
sind die Pfadnamen dieser Verzeichnisse sichtbar (d.h als Argumente benutzbar in) Systemaufrufen,
die auf diesen Pfadnamen arbeiten.
/proc/apm
Version von »advanced power management« und Informationen zur Batterie, wenn bei der Kompilierung
des Kernels CONFIG_APM definiert wird.
/proc/buddyinfo
Diese Datei enthält Informationen, die zur Diagnose von Speicherfragmentierungsproblemen verwandt
werden. Jede Zeile beginnt mit der Kennzeichnung des Knotens und dem Name der Zone, die zusammen
einen Speicherbereich identifizieren. Dies wird von der Anzahl der verfügbaren Stücke (Chunks)
einer bestimmten Ordnung, in die diese Zonen geteilt sind, gefolgt. Die Größe in Bytes einer
bestimmten Ordnung wird von der folgenden Formel bestimmt:
(2^Ordnung) * PAGE_SIZE
Der binäre Buddy-Speicherverwaltungsalgorithmus innerhalb des Kernels wird ein Stück in zwei
Stücke einer geringeren Ordnung (daher mit der halben Größe) unterteilen oder zwei angrenzende
Stück in ein größeres Stück höherer Ordnung (daher mit der doppelten Größe) kombinieren, um
Reservierungsanfragen zu erfüllen und um Speicherfragmentierung etwas entgegenzusetzen. Die
Ordnung entspricht der Spaltennummer, wenn mit dem Zählen bei Null begonnen wird.
Auf einem x86-64-System zum Beispiel:
Node 0, zone DMA 1 1 1 0 2 1 1 0 1 1 3
Node 0, zone DMA32 65 47 4 81 52 28 13 10 5 1 404
Node 0, zone Normal 216 55 189 101 84 38 37 27 5 3 587
In diesem Beispiel gibt es einen Knoten, der drei Zonen enthält und es gibt 11 verschiedene
Stückgrößen. Falls die Seitengröße 4 Kilobyte beträgt, dann hat die erste Zone, genannt DMA, (auf
X86 die ersten 16 Megabyte an Speicher) ein Stück von 4 Kilobyte (Ordnung 0) verfügbar und hat 3
Stücke von 4 Megabyte (Ordnung 10) verfügbar.
Falls der Speicher stark fragmentiert ist, werden die Zähler für Stücke höherer Ordnung Null sein
und Zuweisungen von großen, zusammenhängenden Bereichen fehlschlagen.
Weitere Informationen über die Zonen können in /proc/zoneinfo gefunden werden.
/proc/bus
Enthält Unterverzeichnisse für installierte Busse.
/proc/bus/pccard
Unterverzeichnis für PCMCIA-Geräte, wenn bei der Kompilierung des Kernels CONFIG_PCMCIA gesetzt
wird.
/proc/bus/pccard/drivers
/proc/bus/pci
Enthält diverse Bus-Unterverzeichnisse und Pseudodateien mit Informationen zu PCI-Bussen,
installierten Geräten und Gerätetreibern. Einige dieser Dateien sind nicht in ASCII codiert.
/proc/bus/pci/devices
Informationen über PCI-Geräte. Auf diese kann mittels lspci(8) und setpci(8) zugegriffen werden.
/proc/cgroups (seit Linux 2.6.24)
siehe cgroups(7)
/proc/cmdline
Dem Kernel beim Startvorgang übergebene Argumente. Oft geschieht das über einen Bootmanager wie
lilo(8) oder grub(8).
/proc/config.gz (seit Linux 2.6)
Diese Datei macht die Konfigurationsoptionen verfügbar, die für den Bau des aktuell laufenden
Kernels verwendet wurden. Das Format ist das gleiche wie in der Datei .config, die bei der
Konfiguration des Kernels (mittels make xconfig, make config oder ähnlichem) erzeugt wird. Der
Inhalt der Datei ist komprimiert; er kann mittels zcat(1) und zgrep(1) angezeigt und durchsucht
werden. Solange keine Änderungen in der folgenden Datei vorgenommen wurden, sind die Inhalte von
/proc/config.gz die gleichen, die wie folgt gewonnen werden können:
cat /lib/modules/$(uname -r)/build/.config
/proc/config.gz wird nur bereitgestellt, wenn der Kernel mit CONFIG_IKCONFIG_PROC konfiguriert
wird.
/proc/crypto
Eine Liste der durch das Kernel-Krypto-API bereitgestellten Chiffren. Für Details schauen Sie in
die Kerneldokumentation zum Thema Linux Kernel Crypto API, die unterhalb des
Kernelquellbaumverzeichnisses Documentation/crypto/ (oder Documentation/DocBook vor Linux 4.10)
verfügbar ist. (Die Dokumentation kann mit einem Befehl wie make htmldocs im Wurzelverzeichnis des
Kernelquellbaums gebaut werden.)
/proc/cpuinfo
Dies ist eine Sammlung von Informationen, die von der CPU und der Systemarchitektur abhängen. Die
Liste sieht für jede unterstützte Architektur anders aus. Die einzigen Einträge, die man überall
antrifft, sind processor, welcher die Nummer der CPU anzeigt und BogoMIPS, eine Systemkonstante,
die während der Kernel-Initialisierung errechnet wird. SMP-Maschinen haben Informationen für jede
CPU. Der Befehl lscpu(1) sammelt seine Informationen aus dieser Datei.
/proc/devices
Eine Textliste der Major-Gerätenummern und Gerätegruppen. Kann von MAKEDEV-Skripten genutzt
werden, um mit dem Kernel überein zu stimmen.
/proc/diskstats (seit Linux 2.5.69)
Diese Datei enthält Platten-E/A-Statistiken für jedes Plattengerät. Die Linux-Kernel-Quelldatei
Documentation/admin-guide/iostats.rst (oder Documentation/iostats.txt vor Linux 5.3) gibt weitere
Informationen.
/proc/dma
Das ist eine Liste von registrierten ISA-DMA-Kanälen, die zur Zeit benutzt werden (DMA: Direct
Memory Access).
/proc/driver
Leeres Unterverzeichnis.
/proc/execdomains
Liste der Ausführungsdomänen (ABI-Personalitäten).
/proc/fb
Information zum Bildspeicher (frame buffer), wenn bei der Kompilierung des Kernels CONFIG_FB
definiert wird.
/proc/filesystems
Eine Auflistung der Dateisysteme, die vom Kernel unterstützt werden, nämlich Dateisysteme, die in
den Kernel kompiliert wurden oder deren Kernel-Module derzeit geladen sind (siehe auch
filesystems(5)). Wenn ein Dateisystem mit »nodev« gekennzeichnet ist, bedeutet dies, dass kein
Block-Gerät eingehängt werden muss (z.B. virtuelles Dateisystem, Netzwerk-Dateisystem).
Im Übrigen kann diese Datei von mount(8) verwendet werden, wenn kein Dateisystem angegeben wurde
und es den Typ des Dateisystems nicht bestimmen konnte. Dann werden in dieser Datei enthaltene
Dateisysteme ausprobiert (ausgenommen diejenigen, die mit »nodev« gekennzeichnet sind).
/proc/fs
Enthält Unterverzeichnisse, die wiederum Dateien mit Informationen über (bestimmte) eingehängte
Dateisysteme enthalten.
/proc/ide
Dieses Verzeichnis gibt es auf Systemen mit dem IDE-Bus. Es gibt Verzeichnisse für jeden IDE-Kanal
und jedes zugeordnete Gerät. Zu den Dateien gehören:
cache Puffergröße in KB
capacity Anzahl der Sektoren
driver Version des Treibers
geometry physikalische und logische Geometrie
identify hexadezimal
media Medientyp
model Modellnummer des Herstellers
settings Laufwerkeinstellungen
smart_thresholds IDE-Plattenverwaltungsschwellwerte (hexadezimal)
smart_values IDE-Plattenverwaltungswerte (hexadezimal)
Das Werkzeug hdparm(8) ermöglicht einen angenehmen Zugriff auf diese Informationen.
/proc/interrupts
Diese Datei wurde verwendet, um die Anzahl der Interrupts pro CPU pro E/A-Gerät aufzunehmen. Seit
Linux 2.6.24 werden außerdem, zumindest für die Architekturen i386 und x86-64, systeminterne
Interrupts (das sind nicht unmittelbar an ein Gerät gebundene) wie beispielsweise NMI (nicht
maskierbarer Interrupt), LOC (lokaler Timer-Interrupt), und für SMP-Systeme TLB (TLB Flush
Interrupt), RES (Interrupt für Änderungen im Scheduling), CAL (Remote Function Call Interrupt) und
möglicherweise andere mit eingetragen. Sie ist in ASCII codiert und sehr leicht zu lesen.
/proc/iomem
E/A-Speicher-Map in Linux 2.4
/proc/ioports
Das ist eine Liste der derzeit registrierten und benutzten Ein-/Ausgabe-Port-Regionen.
/proc/kallsyms (seit Linux 2.5.71)
Hier stehen die vom Kernel exportierten Symboldefinitionen, die von modules(X)-Tools benutzt
werden, um ladbare Module dynamisch zu linken und zu binden. Bis einschließlich Linux 2.5.47 gab
es eine ähnliche Datei ksyms mit leicht abweichender Syntax.
/proc/kcore
Diese Datei repräsentiert den physikalischen Speicher des Systems und hat das
Elf-core-Dateiformat. Mit dieser Pseudodatei und einem Kernel mit Debug-Symbolen
(/usr/src/linux/vmlinux) kann mit GDB der aktuelle Zustand der Kernel-Datenstrukturen untersucht
werden.
Die Gesamtgröße dieser Datei ist die Größe des physischen Speichers (RAM) plus 4 KiB.
/proc/keys (seit Linux 2.6.10)
Siehe keyrings(7).
/proc/key-users (seit Linux 2.6.10)
Siehe keyrings(7).
/proc/kmsg
Diese Datei kann anstelle des Systemaufrufs syslog(2) benutzt werden, um Meldungen des Kernels zu
lesen. Ein Prozess muss Superuser-Privilegien haben, um diese Datei zu lesen und nur ein einziger
Prozess sollte dies tun. Die Datei sollte nicht ausgelesen werden, wenn ein Syslog-Prozess läuft,
der den Systemaufruf syslog(2) zur Protokollierung benutzt.
Die Informationen in dieser Datei können mit dmesg(1) dargestellt werden.
/proc/kpagecgroup (seit Linux 4.3)
Diese Datei enthält 64-Bit-Inode-Nummern der Speicher-Cgroup, auf die jede Seite berechnet wird.
Sie ist durch die Seiten-Frame-Nummer indiziert (siehe die Erörterung von /proc/PID/pagemap).
Die Datei /proc//proc/kpagecgroup ist nur vorhanden, wenn die Kernel-Konfigurationsoption
CONFIG_MEMCG aktiviert ist.
/proc/kpagecount (seit Linux 2.6.25)
Diese Datei enthält einen 64-Bit-Zähler der Anzahl, die jede physische Seiten-Frame gemappt ist,
indiziert durch die Seiten-Frame-Nummer (siehe die Beschreibung von /proc/PID/pagemap).
Die Datei /proc/kpagecount ist nur vorhanden, wenn die Kernel-Konfigurationsoption
CONFIG_PROC_PAGE_MONITOR aktiviert ist.
/proc/kpageflags (seit Linux 2.6.25)
Diese Datei enthält 64-Bit-Masken, die jedem physischen Seiten-Frame entsprechen. Sie ist durch
die Seiten-Frame-Nummer indiziert (siehe die Erörterung von /proc/PID/pagemap). Die Bits sind wie
folgt:
0 - KPF_LOCKED
1 - KPF_ERROR
2 - KPF_REFERENCED
3 - KPF_UPTODATE
4 - KPF_DIRTY
5 - KPF_LRU
6 - KPF_ACTIVE
7 - KPF_SLAB
8 - KPF_WRITEBACK
9 - KPF_RECLAIM
10 - KPF_BUDDY
11 - KPF_MMAP (seit Linux 2.6.31)
12 - KPF_ANON (seit Linux 2.6.31)
13 - KPF_SWAPCACHE (seit Linux 2.6.31)
14 - KPF_SWAPBACKED (seit Linux 2.6.31)
15 - KPF_COMPOUND_HEAD (seit Linux 2.6.31)
16 - KPF_COMPOUND_TAIL (seit Linux 2.6.31)
17 - KPF_HUGE (seit Linux 2.6.31)
18 - KPF_UNEVICTABLE (seit Linux 2.6.31)
19 - KPF_HWPOISON (seit Linux 2.6.31)
20 - KPF_NOPAGE (seit Linux 2.6.31)
21 - KPF_KSM (seit Linux 2.6.32)
22 - KPF_THP (seit Linux 3.4)
23 - KPF_BALLOON (seit Linux 3.18)
24 - KPF_ZERO_PAGE (seit Linux 4.0)
25 - KPF_IDLE (seit Linux 4.3)
Für weitere Details zur Bedeutung dieser Bits lesen Sie die Kernelquelldatei
Documentation/admin-guide/mm/pagemap.rst. Vor Linux 2.6.29 lieferten KPF_WRITEBACK, KPF_RECLAIM,
KPF_BUDDY und KPF_LOCKED nicht die korrekten Werte.
Die Datei /proc/kpageflags ist nur vorhanden, wenn die Kernel-Konfigurationsoption
CONFIG_PROC_PAGE_MONITOR aktiviert ist.
/proc/ksyms (Linux 1.1.23…2.5.47)
Siehe /proc/kallsyms.
/proc/loadavg
Die ersten drei Felder in dieser Datei geben die durchschnittliche Anzahl von Jobs an, die in der
Run-Warteschlange sind (Status R) oder auf Platten-E/A warten (Status D), gemittelt über 1, 5, und
15 Minuten. Das sind die gleichen Angaben für die durchschnittliche Belastung, wie sie von
uptime(1) und anderen Programmen angegeben werden. Das vierte Feld besteht aus zwei durch einen
Schrägstrich (/) getrennten Zahlen. Die erste davon ist die Anzahl von derzeit ausführbaren
Kernel-Scheduling-Einheiten (Prozesse, Threads). Der Wert nach dem Schrägstrich ist die Anzahl der
Kernel-Scheduling-Einheiten, die aktuell auf dem System existieren. Das fünfte Feld ist die PID
des Prozesses, der zuletzt auf dem System erzeugt wurde.
/proc/locks
Diese Datei zeigt aktuelle Datei-Sperren (flock(2) und fcntl(2)) und -Ausleihen (fcntl(2)) an.
Ein Beispiel für den Inhalt in dieser Datei wird nachfolgend gezeigt:
1: POSIX ADVISORY READ 5433 08:01:7864448 128 128
2: FLOCK ADVISORY WRITE 2001 08:01:7864554 0 EOF
3: FLOCK ADVISORY WRITE 1568 00:2f:32388 0 EOF
4: POSIX ADVISORY WRITE 699 00:16:28457 0 EOF
5: POSIX ADVISORY WRITE 764 00:16:21448 0 0
6: POSIX ADVISORY READ 3548 08:01:7867240 1 1
7: POSIX ADVISORY READ 3548 08:01:7865567 1826 2335
8: OFDLCK ADVISORY WRITE -1 08:01:8713209 128 191
Die Bedeutung der Felder in jeder Zeile im Einzelnen:
[1] Die ordinale Position der Sperre in der Liste.
[2] Der Sperrtyp. Folgende Werte können hier u.A. erscheinen:
FLOCK Dies ist eine mittels flock(2) erstellte BSD-Sperrdatei.
OFDLCK Dies ist eine mittels fcntl(2) erstellte offene Dateideskriptorsperre (OFD).
POSIX Dies ist eine mittels fcntl(2) erstellte POSIX-Byte-Bereichssperre.
[3] Unter den hier auftretenden Zeichenketten sind auch die folgenden:
ADVISORY
Dies ist eine empfohlene Sperre.
MANDATORY
Dies ist eine Pflichtsperre.
[4] Die Art der Sperre. Folgende Werte können hier auftauchen:
READ Dies ist eine POSIX- oder OFD-Lesesperre oder eine gemeinsame BSD-Sperre.
WRITE Dies ist eine POSIX- oder OFD-Schreibsperre oder eine exklusive BSD-Sperre.
[5] die PID des Prozesses, der die Sperre besitzt,
Da OFD-Sperren nicht einem einzelnen Prozess gehören (da mehrere Prozesse über
Dateideskriptoren verfügen können, die sich auf die gleiche offene Dateideskription
beziehen), wird in diesem Feld der Wert -1 für OFD-Sperren angezeigt. (Vor Linux 4.14 wurde
durch einen Fehler die PID des Prozesses, der ursprünglich die Sperre erwarb, statt des
Wertes -1 angezeigt.)
[6] Drei Doppelpunkt-getrennte Unterlisten, die die Major- und Minor-Gerätekennung des Geräts,
das das Dateisystem enthält, auf dem sich die gesperrte Datei befindet, gefolgt von der
Inode-Nummer der gesperrten Datei.
[7] Der Byte-Versatz des ersten Bytes der Sperre. Für BSD-Sperren ist dieser Wert immer 0.
[8] Der Byteversatz des letzten Bytes der Sperre. EOF im Feld bedeutet, dass sich die Sperre bis
zum Ende der Datei ausdehnt. Für BSD-Sperren ist der angezeigte Wert immer EOF.
Seit Linux 4.9 wird die Liste der in /proc/locks gezeigten Sperren gefiltert, um nur die Sperren
für die Prozesse in dem PID-Namensraum (siehe pid_namespaces(7)), für den das Dateisystem /proc
eingehängt worden war, anzuzeigen. (Im ursprünglichen PID-Namensraum gibt es keine Filterung der
in dieser Datei angezeigten Datensätze.)
Der Befehl lslocks(8) stellt etwas mehr Informationen über jede Sperre bereit.
/proc/malloc (nur bis zu einschließlich Linux 2.2)
Diese Datei existiert nur, wenn bei der Kompilierung des Kernels CONFIG_DEBUG_MALLOC definiert
war.
/proc/meminfo
Diese Datei berichtet Statistiken über die Speicherverwendung auf dem System. Sie wird von free(1)
benutzt, um den freien und benutzen (sowohl physischen als auch Auslagerungs-)Speicher auf dem
System zu berichten, sowie den gemeinsam benutzten Speicher und die vom Kernel benutzten Puffer.
Jede Zeile der Datei besteht aus einem Parameternamen, gefolgt von einem Doppelpunkt, dem Wert des
Parameters und einer Maßeinheit der Option (z.B. »kB«). Die nachfolgende Liste beschreibt die
Parameternamen und die Formatkennzeichner, die zum Lesen des Feldwertes benötigt wird. Außer falls
unten angegeben sind alle Felder seit mindestens Linux 2.6.0 vorhanden. Einige Felder werden nur
angezeigt, falls der Kernel mit bestimmten Optionen konfiguriert wurde, diese Abhängigkeiten sind
in der Liste vermerkt.
MemTotal %lu
Gesamter verwendbarer Arbeitsspeicher (d.h. physischer Arbeitsspeicher abzüglich ein paar
reservierter Bits und dem Binärcode des Kernels).
MemFree %lu
Die Summe von LowFree+HighFree.
MemAvailable %lu (seit Linux 3.14)
Eine Abschätzung, wieviel Speicher zum Starten neuer Anwendungen verfügbar ist, ohne
auszulagern.
Buffers %lu
Relativ temporärer Speicher für rohe Plattenblöcke, der nicht besonders groß werden sollte
(20 MB oder so).
Cached %lu
Speicherinterner Zwischenspeicher für von Platte gelesene Dateien (der
Seiten-Zwischenspeicher). Enthält SwapCached nicht.
SwapCached %lu
Speicher, der schon ausgelagert war, und wieder hereingelagert wurde, aber noch in der
Auslagerungsdatei ist. (Falls der Speicherdruck hoch ist, müssen diese Seiten nicht wieder
ausgelagert werden, da sie bereits in der Auslagerungsdatei sind. Dies spart E/A).
Active %lu
Speicher, der kürzlich verwandt wurde und normalerweise noch nicht zurückgefordert wurde,
falls nicht absolut notwendig.
Inactive %lu
Speicher, der nicht kürzlich verwandt wurde. Er ist für Rückforderungen für andere Zwecke
geeigneter.
Active(anon) %lu (seit Linux 2.6.28)
[Muss noch dokumentiert werden.]
Inactive(anon) %lu (seit Linux 2.6.28)
[Muss noch dokumentiert werden.]
Active(file) %lu (seit Linux 2.6.28)
[Muss noch dokumentiert werden.]
Inactive(file) %lu (seit Linux 2.6.28)
[Muss noch dokumentiert werden.]
Unevictable %lu (seit Linux 2.6.28)
(Von Linux 2.6.28 bis 2.6.30: CONFIG_UNEVICTABLE_LRU war notwendig.) [Muss noch
dokumentiert werden.]
Mlocked %lu (seit Linux 2.6.28)
(Von Linux 2.6.28 bis 2.6.30: CONFIG_UNEVICTABLE_LRU war notwendig.) [Muss noch
dokumentiert werden.]
HighTotal %lu
(Beginnend mit Linux 2.6.19 wird CONFIG_HIGHMEM benötigt). Gesamtmenge von Highmem. Highmem
ist aller Speicher oberhalb ~860 MB physischen Speichers. Highmem-Bereiche können von
Anwendungsprogrammen oder für den Seiten-Zwischenspeicher verwandt werden. Der Kernel muss
Tricks zum Zugriff auf diesen Speicher verwenden, wodurch der Zugriff langsamer als bei
Lowmem ist.
HighFree %lu
(Beginnend mit Linux 2.6.19 wird CONFIG_HIGHMEM benötigt) Menge des freien Highmems.
LowTotal %lu
(Beginnend mit Linux 2.6.19 wird CONFIG_HIGHMEM benötigt) Gesamtmenge an Lowmem. Lowmem ist
Speicher, der für alles verwandt werden kann, wofür Highmem verwandt werden kann, er ist
aber auch für die Verwendung durch den Kernel für seine eigenen Datenstrukturen verfügbar.
Unter anderem wird hier heraus Slab zugewiesen. Schlimme Dinge passieren, falls kein Lowmem
mehr verfügbar ist.
LowFree %lu
(Beginnend mit Linux 2.6.19 wird CONFIG_HIGHMEM benötigt) Menge des freien Lowmems.
MmapCopy %lu (seit Linux 2.6.29)
(CONFIG_MMU ist notwendig.) [Muss noch dokumentiert werden.]
SwapTotal %lu
Gesamtmenge des verfügbaren Auslagerungsbereichs.
SwapFree %lu
Größe des derzeit ungenutzten Auslagerungsbereichs.
Dirty %lu
Speicher, der darauf wartet, zurück auf Platte geschrieben zu werden.
Writeback %lu
Speicher, der aktiv zurück auf Platte geschrieben wird.
AnonPages %lu (seit Linux 2.6.18)
Nicht-Datei basierende Seiten, die in Seitentabellen des Anwendungsraums gemappt sind.
Mapped %lu
Dateien, die in den Speicher (mit mmap(2)) gemappt wurden, wie Bibliotheken.
Shmem %lu (seit Linux 2.6.32)
Speichermenge, die vom tmpfs(5) belegt wird.
KReclaimable %lu (seit Linux 4.20)
Kernelzuweisungen, die der Kernel versuchen wird, im Falle von Speicherknappheit
zurückzuverlangen. Schließt SReclaimable (siehe nachfolgend) und andere direkte Zuweisungen
mit einem Verkleinerer ein.
Slab %lu
Zwischenspeicher für In-Kernel-Datenstrukturen. (siehe slabinfo(5))
SReclaimable %lu (seit Linux 2.6.19)
Teil von Slab, der zurückgewonnen werden könnte, wie Zwischenspeicher.
SUnreclaim %lu (seit Linux 2.6.19)
Teil von Slab, der bei Speicherknappheit nicht zurückgewonnen werden kann.
KernelStack %lu (seit Linux 2.6.32)
Teil des Speichers, der Kernel-Stacks zugewiesen wurde.
PageTables %lu (seit Linux 2.6.18)
Menge des Speichers, der der niedrigsten Stufe der Seitentabellen zugeordnet ist.
Quicklists %lu (seit Linux 2.6.27)
(CONFIG_QUICKLIST ist notwendig.) [Muss noch dokumentiert werden.]
NFS_Unstable %lu (seit Linux 2.6.18)
NFS-Seiten, die an den Server gesandt, aber noch nicht dem dauerhaften Speicher übergeben
wurden.
Bounce %lu (seit Linux 2.6.18)
Speicher, der für Blockgerät-»bounce buffer« verwendet wird.
WritebackTmp %lu (seit Linux 2.6.26)
Speicher, das von FUSE für temporäre Rückschreibe-Puffer verwandt wird.
CommitLimit %lu (seit Linux 2.6.10)
Dies ist der Gesamtbetrag des Speichers, der derzeit zum Reservieren auf dem System
verfügbar ist, ausgedrückt in Kilobyte. Diese Beschränkung wird nur eingehalten, falls
strikte Überbuchungs-Buchführung aktiviert ist (Modus 2 in /proc/sys/vm/overcommit_memory).
Die Beschränkung wird gemäß der unter /proc/sys/vm/overcommit_memory beschriebenen Formel
berechnet. Weitere Einzelheiten finden Sie in der Kernelquelltextdatei
Documentation/vm/overcommit-accounting.rst.
Committed_AS %lu
Die derzeit im System belegte Speichermenge. Der gebuchte Speicher ist die Summe des
Speichers, der vom Prozess belegt wird, selbst wenn der noch nicht durch ihn »verwandt«
wurde. Ein Prozess, der 1 GB Speicher (mittels malloc(3) oder ähnlichem) reserviert, aber
nur 300 MB davon anrührt, wird mit 300 MB an benutztem Speicher angezeigt, selbst wenn er
einen Adressraum für das gesamte 1 GB reserviert hat.
Dieses ein GB ist Speicher, der durch die VM »gebucht« ist und jederzeit durch die
reservierende Anwendung verwendet werden kann. Ist striktes Überbuchen auf dem System
aktiviert (Modus 2 in /proc/sys/vm/overcommit_memory), werden Speicherreservierungen, die
das CommitLimit überschreiten würden, nicht gestattet. Dies ist nützlich, falls
gewährleisten werden soll, dass Prozesse aufgrund von Speichermangel nicht fehlschlagen,
nachdem dieser Speicher erfolgreich reserviert wurde.
VmallocTotal %lu
Gesamtgröße des Vmalloc-Speicherbereichs.
VmallocUsed %lu
Größe des benutzten Vmalloc-Bereichs. Seit Linux 4.4 wird dieses Feld nicht mehr berechnet
und ist auf 0 hartkodiert. Siehe /proc/vmallocinfo.
VmallocChunk %lu
Größter zusammenhängender freier Vmalloc-Bereichsblock. Seit Linux 4.4 wird dieses Feld
nicht mehr berechnet und ist auf 0 hartkodiert. Siehe /proc/vmallocinfo.
HardwareCorrupted %lu (seit Linux 2.6.32)
(CONFIG_MEMORY_FAILURE ist notwendig.) [Muss noch dokumentiert werden.]
LazyFree %lu (seit Linux 4.12)
Zeigt die Menge des durch madvise(2) als MADV_FREE markierten Speichers.
AnonHugePages %lu (seit Linux 2.6.38)
(CONFIG_TRANSPARENT_HUGEPAGE wird benötigt) Nicht-Datei basierte große Speicherseiten, die
in die Seitentabellen im Anwendungsraum gemappt sind.
ShmemHugePages %lu (seit Linux 4.8)
(CONFIG_TRANSPARENT_HUGEPAGE wird benötigt.) Von gemeinsam benutztem Speicher (shem)
benutzter Speicher und mit großen Speicherseiten reserviertes tmpfs(5).
ShmemPmdMapped %lu (seit Linux 4.8)
(CONFIG_TRANSPARENT_HUGEPAGE wird benötigt.) Gemeinsamer, in den Anwendungsraum mit großen
Seiten gemappter Speicher.
CmaTotal %lu (seit Linux 3.1)
Gesamte CMA- (Contiguous Memory Allocator) Seiten. (CONFIG_CMA wird benötigt.)
CmaFree %lu (seit Linux 3.1)
Freie CMA- (Contiguous Memory Allocator) Seiten. (CONFIG_CMA wird benötigt.)
HugePages_Total %lu
(CONFIG_HUGETLB_PAGE wird benötigt.) Die Größe des Vorrats der großen Speicherseiten.
HugePages_Free %lu
(CONFIG_HUGETLB_PAGE wird benötigt.) Die Anzahl der großen Speicherseiten in dem Vorrat,
die noch nicht reserviert worden sind.
HugePages_Rsvd %lu (seit Linux 2.6.17)
(CONFIG_HUGETLB_PAGE wird benötigt.) Dies ist die Anzahl der großen Speicherseiten, für die
eine Verpflichtung zur Reservierung aus dem Vorrat erfolgte, aber noch keine Reservierung
durchgeführt wurde. Die reservierten großen Speicherseiten garantieren, dass die Anwendung
in der Lage sein wird, große Speicherseiten aus dem Vorrat von großen Speicherseiten zum
Zeitpunkt der Ausnahmebehandlung zu reservieren.
HugePages_Surp %lu (seit Linux 2.6.24)
(CONFIG_HUGETLB_PAGE wird benötigt.) Dies ist die Anzahl an großen Speicherseiten in dem
Vorrat oberhalb des Wertes in /proc/sys/vm/nr_hugepages. Die maximale Anzahl an
zusätzlichen großen Speicherseiten wird durch /proc/sys/vm/nr_overcommit_hugepages
gesteuert.
Hugepagesize %lu
(CONFIG_HUGETLB_PAGE wird benötigt.) Die Größe der großen Speicherseiten.
DirectMap4k %lu (seit Linux 2.6.27)
Anzahl von Bytes von RAM (in 4 kB-Seiten), der durch den Kernel linear gemappt ist. (x86)
DirectMap4M %lu (seit Linux 2.6.27)
Anzahl an Bytes von RAM (in 4 MB-Seiten), der durch den Kernel linear gemappt ist. (x86 mit
aktiviertem CONFIG_X86_64 oder CONFIG_X86_PAE)
DirectMap2M %lu (seit Linux 2.6.27)
Anzahl an Bytes von RAM (in 2 MB-Seiten), der durch den Kernel linear gemappt ist. (x86 mit
aktiviertem CONFIG_X86_64 oder CONFIG_X86_PAE)
DirectMap1G %lu (seit Linux 2.6.27)
(x86 mit CONFIG_X86_64 und CONFIG_X86_DIRECT_GBPAGES aktiviert.)
/proc/modules
Eine Textliste der vom System geladenen Module (siehe auch lsmod(8)) .
/proc/mounts
Vor Linux 2.4.19 war diese Datei eine Liste aller aktuell im System eingehängten Dateisysteme. Mit
der Einführung der prozesseigenen Einhängenamensräume in Linux 2.4.19 (siehe mount_namespaces(7))
wurde diese Datei ein Link auf /proc/self/mounts, die die Einhängungen des prozesseigenen
Einhängenamensraums auflistet. Das Format dieser Datei wird in fstab(5) dokumentiert.
/proc/mtrr
Die Memory Type Range Register, Details siehe die Linux-Kernel-Quelldatei
Documentation/x86/mtrr.rst (oder Documentation/x86/mtrr.txt vor Linux 5.2 oder
Documentation/mtrr.txt vor Linux 2.6.28).
/proc/net
Dieses Verzeichnis enthält verschiedene Dateien und Unterverzeichnisse, die Informationen über die
Netzwerkschicht enthalten. Diese Dateien enthalten ASCII-Strukturen und sind daher mit »cat«
lesbar. Allerdings stellt der Standardbefehl netstat(8) einen sehr viel saubereren Zugang zu
diesen Dateien dar.
Mit dem Aufkommen von Netznamensräumen sind verschiedene Informationen über den Netzwerkstapel
virtualisiert (siehe network_namespaces(7)). Daher ist seit Linux 2.6.25 /proc/net ein
symbolischer Link auf das Verzeichnis /proc/self/net, das die gleichen unten aufgeführten Dateien
und Verzeichnisse enthält. Allerdings stellen diese Dateien und Verzeichnisse nun die
Informationen für den Netznamensraum dar, bei dem der Prozess Mitglied ist.
/proc/net/arp
Enthält einen in ASCII lesbaren Abzug der ARP-Tabelle des Kernels, die zur Adressauflösung dient.
Angezeigt werden sowohl dynamisch gelernte wie auch vorprogrammierte ARP-Einträge in folgendem
Format:
IP address HW type Flags HW address Mask Device
192.168.0.50 0x1 0x2 00:50:BF:25:68:F3 * eth0
192.168.0.250 0x1 0xc 00:00:00:00:00:00 * eth0
Dabei ist »IP address« die IPv4-Adresse der Maschine, »HW type« ist der Hardware-Typ gemäß
RFC 826. Die Schalter sind die internen Schalter der ARP-Struktur (siehe
/usr/include/linux/if_arp.h) und »HW address« ist die Zuordnung in der Daten-Link-Ebene für diese
IP-Adresse, wenn bekannt.
/proc/net/dev
Die Pseudodatei dev enthält Statusinformationen über die Netzwerkkarte. Darin stehen die Anzahl
der empfangenen und gesendeten Pakete, die Anzahl der Übertragungsfehler und Kollisionen und
weitere grundlegende Statistik. Das Programm ifconfig(8) benutzt diese Werte für die Anzeige des
Gerätestatus. Das Format ist:
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 2776770 11307 0 0 0 0 0 0 2776770 11307 0 0 0 0 0 0
eth0: 1215645 2751 0 0 0 0 0 0 1782404 4324 0 0 0 427 0 0
ppp0: 1622270 5552 1 0 0 0 0 0 354130 5669 0 0 0 0 0 0
tap0: 7714 81 0 0 0 0 0 0 7714 81 0 0 0 0 0 0
/proc/net/dev_mcast
Definiert in /usr/src/linux/net/core/dev_mcast.c:
indx interface_name dmi_u dmi_g dmi_address
2 eth0 1 0 01005e000001
3 eth1 1 0 01005e000001
4 eth2 1 0 01005e000001
/proc/net/igmp
Internet Group Management Protocol. Definiert in /usr/src/linux/net/core/igmp.c.
/proc/net/rarp
Diese Datei benutzt das gleiche Format wie die arp-Datei und enthält die aktuelle Datenbank für
die »umgekehrte Adressauflösung« (reverse mapping), mit der rarp(8) arbeitet. Wenn RARP nicht in
den Kernel hineinkonfiguriert ist, dann ist diese Datei nicht vorhanden.
/proc/net/raw
Enthält einen Abzug der RAW-Socket-Tabelle. Der Großteil der Informationen dient nur zur
Fehlersuche. Der »sl«-Wert ist der »kernel hash slot« für diesen Socket, »local address« enthält
das Wertepaar für lokale Adresse und Protokoll. "St" ist der interne Status des Sockets.
»tx_queue« und »rx_queue« sind Warteschlangen für ausgehende bzw. eintreffende Daten, angegeben
als Kernel-Speichernutzung, »tr«, »tm->when« und »rexmits« werden von RAW nicht benutzt. Das
»uid«-Feld enthält die effektive UID des Socket-Erstellers.
/proc/net/snmp
Diese Datei enthält die ASCII-Daten, die für die Verwaltung von IP, ICMP, TCP und UDP durch einen
SNMP-Agenten benötigt werden.
/proc/net/tcp
Enthält einen Abzug der TCP-Socket-Tabelle. Der Großteil der Informationen dient nur zur
Fehlersuche. Der »sl«-Wert ist der »kernel hash slot« für diesen Socket, »local address« ist ein
Wertepaar aus lokaler Adresse und Port. Die »remote address« ist (bei einer bestehenden
Verbindung) ein Wertepaar aus Adresse der Gegenstation und deren Port. "St" ist der interne Status
des Sockets. »tx_queue« und »rx_queue« sind aus- und eingehenden Datenwarteschlangen bezüglich der
Kernelspeicherverwendung. Die Felder »tr«, »tm->when« und »rexmits« enthalten interne
Kernel-Informationen zum Zustand des Sockets und nutzen nur zur Fehlersuche. Das »uid«-Feld
enthält die effektive UID des Socket-Erstellers.
/proc/net/udp
Enthält einen Abzug der UDP-Socket-Tabelle. Der Großteil der Informationen dient nur zur
Fehlersuche. Der »sl«-Wert ist der »kernel hash slot« für diesen Socket, »local address« ist ein
Wertepaar aus lokaler Adresse und Port. Die »remote address« ist (bei einer bestehenden
Verbindung) ein Wertepaar aus Adresse der Gegenstation und deren Port. "St" ist der interne Status
des Sockets. »tx_queue« und »rx_queue« sind aus- und eingehenden Datenwarteschlangen bezüglich der
Kernelspeicherverwendung. Die Felder »tr«, »tm->when« und »rexmits« werden von UDP nicht genutzt.
Das »uid«-Feld enthält die effektive UID des Socket-Erstellers. Das Format ist:
sl local_address rem_address st tx_queue rx_queue tr rexmits tm->when uid
1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
/proc/net/unix
Liste der UNIX Domain Sockets im System und ihr Status. Format:
Num RefCount Protocol Flags Type St Inode Path
0: 00000002 00000000 00000000 0001 03 42
1: 00000001 00000000 00010000 0001 01 1948 /dev/printer
Die Bedeutung der Felder im Einzelnen:
Num: die Kerneltabellenpositionsnummer.
RefCount: Die Anzahl der Benutzer des Sockets.
Protokoll:
Derzeit immer 0.
Flags: Die internen Kernel-Schalter, die den Status des Sockets halten.
Type: Der Socket-Typ. Für SOCK_STREAM-Sockets ist dies 0001, für SOCK_DGRAM-Sockets ist dies
0002 und für SOCK_SEQPACKET-Sockets ist dies 0005.
St: Der interne Zustand des Sockets.
Inode: Die Inode-Nummer des Sockets.
Path: Der gebundene Pfadname (falls vorhanden) des Sockets. Sockets in dem abstrakten
Namensraum sind Teil der Liste und werden mit einem Path angezeigt, der mit dem Zeichen
»@« beginnt.
/proc/net/netfilter/nfnetlink_queue
Diese Datei enthält Informationen über den Umgang mit der Netfilter-Anwendungsebene-Warteschlange,
falls diese benutzt wird. Jede Zeile stellt eine Warteschlange dar. Warteschlangen, die von der
Anwendungsebene aus nicht abonniert wurden, werden nicht angezeigt.
1 4207 0 2 65535 0 0 0 1
(1) (2) (3)(4) (5) (6) (7) (8)
Die Felder in jeder Zeile sind:
(1) Die Kennung der Warteschlange. Dies passt auf die Angabe in --queue-num oder der Option
--queue-balance im NFQUEUE-Ziel von iptables(8). Siehe iptables-extensions(8) für weitere
Informationen.
(2) Die Netlink-Port-Kennung, die von der Warteschlange abonniert wurde.
(3) Die Anzahl der derzeit eingereihten und auf Verarbeitung durch die Anwendung wartenden
Pakete.
(4) Der Kopiermodus der Warteschlange. Er ist entweder 1 (nur Metadaten) oder 2 (auch Nutzdaten
in die Anwendungsebene kopieren).
(5) Kopierbereich. Dies gibt an, wie viele Bytes der Paketnutzdaten maximal in die
Anwendungsebene kopiert werden sollen.
(6) in Warteschlange weggelassen. Die Anzahl der Pakete, die vom Kernel weggelassen werden
mussten, da bereits zu viele Pakete darauf warten, dass ein Anwendungsprogramm die
verpflichtenden Akzeptier-/Verwerfentscheidungen zurückliefert.
(7) in Warteschlange durch Benutzer weggelassen. Die Anzahl der Pakete, die innerhalb des
Netlink-Untersystems weggelassen werden mussten. Diese entfallen normalerweise, wenn der
entsprechende Socket-Puffer voll ist, d.h. Benutzeranwendungen nicht schnell genug sind, die
Meldungen zu lesen.
(8) Sequenznummer. Jedes Paket ist einer (32-bit), monoton-ansteigenden Sequenznummer zugeordnet.
Dies zeigt die Kennung des neusten eingereihten Pakets.
Die letzte Zahl existiert nur aus Kompatibilitätsgründen und ist immer 1.
/proc/partitions
Enthält neben den Major- und Minor-Gerätenummern jeder Partition auch die Anzahl der
1024-Byte-Blöcke und dem Partitionsnamen.
/proc/pci
Das ist eine Liste aller PCI-Geräte, die während der Initialisierung des Kernels gefunden und
konfiguriert wurden.
Diese Datei wurde zugunsten einer neuen /proc-Schnittstelle für PCI (/proc/bus/pci) verworfen. Sie
wurde in Linux 2.2 optional (verfügbar durch Setzen von CONFIG_PCI_OLD_PROC bei der
Kernel-Kompilierung). Sie wurde noch einmal non-optional in Linux 2.4 aktiviert. Als nächstes
wurde sie in Linux 2.6 missbilligt (mit gesetztem CON-FIG_PCI_LEGACY_PROC noch verfügbar) und
schließlich seit Linux 2.6.17 entfernt.
/proc/profile (seit Linux 2.4)
Diese Datei ist nur verfügbar, falls der Kernel mit der Befehlszeilenoption profile=1 gestartet
wurde. Er legt die Profiling-Informationen des Kernels in einem binären Format für die Verwendung
mit readprofile(1) offen. Wird (z.B. eine leere Zeichenkette) in diese Datei geschrieben, werden
die Profiling-Zähler zurückgesetzt; auf einigen Architekturen setzt das Schreiben einer binäre
Ganzzahl (»Profiling-Vervielfacher«) der Größe sizeof(int) die Profiling-Interrupt-Frequenz.
/proc/scsi
Ein Verzeichnis mit der scsi-»mid-level«-Pseudodatei und diversen Verzeichnissen für systemnahe
SCSI-Treiber, die eine Datei pro SCSI-Host im System enthalten. Alle diese spiegeln den Status
eines Teils des SCSI-Subsystems wider. Die Dateien enthalten ASCII-Strukturen, können also mit
cat(1) gelesen werden.
In einige Dateien kann auch geschrieben werden, um das Teilsystem neu zu konfigurieren oder um
bestimmte Eigenschaften ein- oder auszuschalten.
/proc/scsi/scsi
Dies ist eine Liste aller SCSI-Geräte, die dem Kernel bekannt sind. Sie ähnelt der, die beim
Hochfahren des Rechners zu sehen ist. SCSI unterstützt derzeit nur den Befehl singledevice, der
root ermöglicht, im laufenden Betrieb der Liste ein zusätzliches Gerät hinzuzufügen.
Der Befehl
echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi
veranlasst Host scsi1 nachzusehen, ob auf SCSI-Kanal 0 ein Gerät mit ID 5 LUN 0 existiert. Wenn an
dieser Adresse schon ein Gerät ist, oder die Adresse ungültig ist, wird ein Fehler
zurückgeliefert.
/proc/scsi/Treibername
Treibername kann derzeit sein: NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx, buslogic, eata_dma,
eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug, seagate, t128, u15-24f, ultrastore oder
wd7000. Diese Verzeichnisse werden für jeden Treiber angezeigt, der zumindest ein SCSI-HBA
registriert hat. Jedes Verzeichnis enthält eine Datei pro registriertem Host, die als Namen die
Nummer haben, die dem Host bei der Initialisierung zugewiesen wurde.
Das Lesen der Dateien zeigt normalerweise Treiber- und Host-Konfiguration, Statistik usw.
Schreiben in diese Dateien hat Host-abhängige Auswirkungen. Mit den Befehlen latency und nolatency
kann Root den Code zur Latenzmessung im eata_dma-Treiber ein-/ausschalten. Mit lockup und unlock
kann Root Bus-Verklemmungen (bus lockups) steuern, wie sie vom scsi_debug-Treiber simuliert
werden.
/proc/self
Dieses Verzeichnis bezieht sich auf den Prozess, der auf das /proc-Dateisystem zugreift und ist
mit dem /proc-Verzeichnis identisch, das als Namen die Prozessnummer dieses Prozesses hat.
/proc/slabinfo
Informationen über Kernel-Zwischenspeicher. Siehe slabinfo(5) für Details.
/proc/stat
Von der Architektur abhängige Kernel- und Systemstatistiken. Gebräuchliche Einträge sind:
cpu 10132153 290696 3084719 46828483 16683 0 25195 0 175628 0
cpu0 1393280 32966 572056 13343292 6130 0 17875 0 23933 0
Die Zeitdauer (gemessen in USER_HZ, auf den meisten Architekturen Hundertstelsekunden,
ermitteln Sie den richtigen Wert mit sysconf(_SC_CLK_TCK)), die das System (»cpu«-Zeile)
oder die spezielle CPU (»cpuN«-Zeile) in verschiedenen Status verbracht hat:
user (1) Zeit, die auf der Anwendungsebene verbracht wurde.
nice (2) Zeit, die auf der Anwendungsebene mit niedriger Priorität (nice) verbracht
wurde.
system (3) Zeit, die im Systemmodus verbracht wurde.
idle (4) Im Leerlaufprozess verbrachte Zeit. Dieser Wert sollte USER_HZ mal den zweiten
Eintrag in der Pseudo-Datei /proc/uptime sein.
iowait (seit Linux 2.5.41)
(5) Zeit, die für den Abschluss der E/A wartend verbracht wird. Dieser Wert ist aus
den folgenden Gründen nicht zuverlässig:
• Die CPU wartet nicht, dass E/A abgeschlossen wird; Iowait ist die Zeit, die ein
Prozess auf den Abschluss von E/A wartet. Wenn eine CPU aufgrund ausstehender
Prozess-E/A in den Leerlauf geht, wird ein anderer Prozess auf der CPU
eingeplant.
• Auf einer Mehrkern-CPU läuft der auf den Abschluss von E/A wartende Prozess auf
keiner CPU, so dass die Berechnung von Iowait für jede CPU schwierig ist.
• Der Wert in diesem Feld kann unter gewissen Umständen abnehmen.
irq (seit Linux 2.6.0)
(6) Zeit, die zum Ausliefern von Interrupts verbracht wurde.
softirq (seit Linux 2.6.0)
(7) Zeit, die zum Ausliefern von Softirqs verbracht wurde.
steal (seit Linux 2.6.11)
(8) Gestohlene Zeit, die in anderen Betriebssystemen verbracht wurde, wenn der
Prozess in einer virtualisierten Umgebung läuft.
guest (seit Linux 2.6.24)
(9) Zeit, die für den Betrieb einer virtuellen CPU für Gastbetriebssysteme unter der
Steuerung des Linux-Kernels verbracht wurde.
guest_nice (seit Linux 2.6.33)
(10) Zeit, die für die Ausführung eines mit nice eingestellten Gastes verbracht
wurde (virtuelle CPU für Gastbetriebssysteme unter der Steuerung des Linux-Kernels)
page 5741 1808
Die Anzahl Speicherseiten, die das System von der Platte geladen hat sowie die Anzahl der
dorthin ausgelagerten Speicherseiten.
swap 1 0
Die Anzahl an Auslagerungsseiten, die hereingeholt und herausgebracht wurden.
intr 1462898
Diese Zeile zeigt Zählungen der seit dem Systemstart bearbeiteten Interrupts für jeden der
möglichen System-Interrupts. Die erste Spalte ist die Summe aller bearbeiteten Interrupts
(einschließlich architekturspezifischer Interrupts ohne Nummer); jede weitere Spalte ist
die Summe für diesen bestimmten Interrupt mit Nummer. Interrupts ohne Nummer werden nicht
angezeigt, nur in der Gesamtsumme berücksichtigt.
disk_io: (2,0):(31,30,5764,1,2) (3,0):…
(major,disk_idx):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written)
(nur Linux 2.4)
ctxt 115315
Anzahl Kontextwechsel, die das System durchlaufen hat.
btime 769041601
Zeitpunkt des Systemstarts, in Sekunden seit dem 1. Januar 1970 0 Uhr UTC (Epoch).
processes 86031
Anzahl der seit dem Systemstart erzeugten Prozesse.
procs_running 6
Anzahl der lauffähigen Prozesse (von Linux 2.5.45 aufwärts).
procs_blocked 2
Anzahl von Prozessen, die durch das Warten auf den Abschluss von E/A blockiert sind (von
Linux 2.5.45 aufwärts).
softirq 229245889 94 60001584 13619 5175704 2471304 28 51212741 59130143 0 51240672
Diese Zeile zeigt die Anzahl von Softirqs für alle CPUs. Die erste Spalte ist die
Gesamtsumme aller Softirqs und jede nachfolgende Spalte ist die Gesamtsumme für einen
bestimmten Softirq (von Linux 2.6.31 aufwärts).
/proc/swaps
Genutzte Auslagerungsbereiche; siehe auch swapon(8).
/proc/sys
Dieses Verzeichnis (vorhanden seit Linux 1.3.57) enthält einige Dateien und Unterverzeichnisse,
die Kernel-Variablen entsprechen. Diese Variablen können gelesen und einigen Fällen auch mittels
des /proc-Dateisystems oder des (missbilligten) Systemaufrufs sysctl(2) geändert werden.
Zeichenkettenwerte dürfen entweder von »\0« oder »\n« abgeschlossen werden.
Werte vom Typ Integer oder Long können entweder in dezimaler oder in hexadezimaler Schreibweise
(z.B. 0x3FFF) geschrieben werden. Beim Schreiben von mehreren Werten vom Typ Integer oder Long
können diese durch eines der folgenden Leerraumzeichen getrennt werden: » «, »\t« oder »\n«. Die
Verwendung anderer Trennzeichen führt zum Fehler EINVAL.
/proc/sys/abi (seit Linux 2.4.10)
Dieses Verzeichnis enthält möglicherweise binäre Anwendungsinformationen; siehe die
Linux-Kernel-Quelldatei Documentation/sysctl/abi.rst (oder Documentation/sysctl/abi.txt vor Linux
5.3) für weitere Informationen.
/proc/sys/debug
Dieses Verzeichnis kann leer sein.
/proc/sys/dev
Dieses Verzeichnis enthält gerätespezifische Informationen (z.B. /dev/cdrom/info). Auf einigen
Systemen kann es leer sein.
/proc/sys/fs
Dieses Verzeichnis enthält die Dateien und Unterverzeichnisse für Kernel-Variablen in Zusammenhang
mit Dateisystemen.
/proc/sys/fs/aio-max-nr und /proc/sys/fs/aio-nr (seit Linux 2.6.4)
aio-nr ist die laufende Gesamtsumme der Anzahl von Ereignissen, die mit io_setup(2)-Aufrufen für
alle derzeit aktiven AIO-Kontexte festgelegt wurde. Falls aio-nr aio-max-nr erreicht, dann wird
io_setup(2) mit dem Fehler EAGAIN fehlschlagen. Erhöhen von aio-max-nr führt nicht zu einer
Vorbelegung oder Vergrößerung irgendwelcher Kernel-Datenstrukturen.
/proc/sys/fs/binfmt_misc
Dokumentation für Dateien in diesem Verzeichnis kann in den Linux-Kernelquellen in der Datei
Documentation/admin-guide/binfmt-misc.rst (oder in Documentation/binfmt_misc.txt auf älteren
Kerneln) gefunden werden.
/proc/sys/fs/dentry-state (seit Linux 2.2)
Diese Datei enthält Informationen über den Zustand des Verzeichnis-Zwischenspeichers (directory
cache,dcache). Die Datei enthält sechs Zahlen: nr_dentry, nr_unused, age_limit (Alter in
Sekunden), want_pages (vom System angeforderte Seiten) und zwei Dummy-Werte.
• nr_dentry ist die Anzahl der zugewiesenen Dentries (dcache entries). Dieses Feld wird in Linux
2.2 nicht genutzt.
• nr_unused ist die Anzahl ungenutzter Dentries.
• age_limit ist das Alter in Sekunden, nach dem Dcache-Einträge bei Speicherknappheit
zurückgefordert werden können.
• want_pages ist ungleich null, wenn der Kernel shrink_dcache_pages() aufgerufen hat und der
Dcache noch nicht bereinigt ist.
/proc/sys/fs/dir-notify-enable
Diese Datei kann genutzt werden, um die in fcntl(2) beschriebene dnotify-Schnittstelle auf
systemweiter Basis zu aktivieren oder zu deaktivieren. Ein Wert von 0 in dieser Datei deaktiviert
die Schnittstelle, ein Wert von 1 aktiviert sie.
/proc/sys/fs/dquot-max
Diese Datei zeigt die maximale Anzahl von zwischengespeicherten Kontingent-Einträgen für die
Festplatte. Auf einigen (2.4)-Systemen ist sie nicht vorhanden. Wenn die Anzahl der freien
Festplatten-Kontingent-Einträge im Cache sehr klein ist und Sie haben eine außergewöhnliche Anzahl
gleichzeitiger Systembenutzer, möchten Sie vielleicht diesen Grenzwert erhöhen.
/proc/sys/fs/dquot-nr
Diese Datei zeigt die Anzahl zugewiesener und die Anzahl freier Plattenkontingent-Einträge.
/proc/sys/fs/epoll (seit Linux 2.6.28)
Dieses Verzeichnis enthält die Datei max_user_watches, mit der der insgesamt von der
epoll-Schnittstelle beanspruchte Kernel-Speicher begrenzt werden kann. Weitere Einzelheiten finden
Sie in epoll(7).
/proc/sys/fs/file-max
Diese Datei legt eine systemweite Grenze für die Anzahl offener Dateien für alle Prozesse fest.
Systemaufrufe, die beim Erreichen dieser Grenze fehlschlagen, schlagen mit dem Fehler ENFILE fehl.
(Siehe auch setrlimit(2), mit der ein Prozess seine prozess-spezifische Begrenzung, RLIMIT_NOFILE,
für die Anzahl zu öffnender Dateien festlegen kann.) Wenn Sie viele Fehlermeldungen im
Kernelprotkoll über nicht ausreichende Datei-Handles (offene Dateideskriptoren) bekommen (suchen
Sie nach »VFS: file-max limit <number> reached«), versuchen Sie es mit einer Vergrößerung des
Wertes:
echo 100000 > /proc/sys/fs/file-max
Ein privilegierter Prozess (CAP_SYS_ADMIN) kann die Begrenzung file-max außer Kraft setzen.
/proc/sys/fs/file-nr
Diese (nur lesbare) Datei enthält drei Zahlen: die Anzahl der belegten Datei-Handles (d.h. die
Anzahl der offenen Dateiedeskriptoren; siehe open(2)); die Anzahl der freien Datei-Handles und die
maximale Anzahl an Datei-Handles (d.h. der gleiche Wert wie /proc/sys/fs/file-max). Falls die
Anzahl an belegten Datei-Handles nahe dem Maximalwert ist, sollten Sie in Betracht ziehen, das
Maximum zu erhöhen. Vor Linux 2.6 belegte der Kernel Datei-Handles dynamisch, aber gab sie nicht
wieder frei. Stattdessen wurden die freien Datei-Handles in einer Liste zur Neubelegung verwaltet,
der Wert »free file handles« zeigt die Größe dieser Liste an. Ein große Anzahl an freien
Datei-Handles zeigt an, dass es in der Vergangenheit eine Benutzungsspitze für offene
Datei-Handles gab. Seit Linux 2.6 gibt der Kernel freigegebene Datei-Handles wieder frei und der
Wert »free file handles« ist immer Null.
/proc/sys/fs/inode-max (nur bis Linux 2.2 vorhanden)
Diese Datei enthält die maximale Anzahl von im Speicher befindlichen Inodes. Dieser Wert sollte
drei- bis viermal größer sein als der Wert von file-max, weil auch die Bearbeitung von stdin,
stdout und Netzwerk-Sockets einen Inode erfordert. Wenn Ihnen regelmäßig die Inodes knapp werden,
müssen Sie diesen Wert erhöhen.
Beginnend mit Linux 2.4 gibt es keine statische Begrenzung der Anzahl der Inodes mehr und diese
Datei wurde entfernt.
/proc/sys/fs/inode-nr
Diese Datei enthält die ersten zwei Werte von inode-state.
/proc/sys/fs/inode-state
Diese Datei enthält sieben Zahlen: nr_inodes, nr_free_inodes, preshrink und vier Dummy-Werte
(immer Null).
nr_inodes ist die Anzahl der Inodes, die das System zugeteilt hat. nr_free_inodes stellt die
Anzahl der freien Inodes dar.
preshrink ist von Null verschieden, wenn nr_inodes > inode-max und das System die Inode-Liste
abschneiden muss, statt mehr zu belegen; seit Linux 2.4 ist das Feld ein Blindwert (immer Null).
/proc/sys/fs/inotify (seit Linux 2.6.13)
Dieses Verzeichnis enthält die Dateien max_queued_events, max_user_instances, und
max_user_watches, mit denen der Verbrauch von Kernel-Speicher durch die inotify-Schnittstelle
begrenzt werden kann. Weitere Einzelheiten finden Sie in inotify(7).
/proc/sys/fs/lease-break-time
Diese Datei legt die Gnadenfrist fest, die der Kernel einem Prozess gewährt, der über einen
Dateiausleihe (fcntl(2)) verfügt, nachdem der Kernel dem Prozess signalisiert hat, das ein anderer
Prozess die Datei öffnen will. Wenn der Prozess innerhalb dieser Frist die Ausleihe nicht entfernt
oder herabstuft, wird der Kernel die Ausleihe zwangsweise zurückziehen.
/proc/sys/fs/leases-enable
Mit dieser Datei können Dateiausleihen (fcntl(2)) systemweit aktiviert oder deaktiviert werden.
Wenn diese Datei den Wert 0 enthält, werden Ausleihen deaktiviert. Ein Wert ungleich null
aktiviert Ausleihen.
/proc/sys/fs/mount-max (seit Linux 4.9)
Der Wert in dieser Datei legt die maximale Anzahl an Einhängungen, die in einem Einhängenamensraum
existieren dürfen, fest. Der Vorgabewert ist 100.000.
/proc/sys/fs/mqueue (seit Linux 2.6.6)
Dieses Verzeichnis enthält die Dateien msg_max, msgsize_max und queues_max, die den
Ressourcenverbrauch von POSIX-Meldungswarteschlangen steuern. mq_overview(7) gibt weitere
Informationen.
/proc/sys/fs/nr_open (seit Linux 2.6.25)
Diese Datei erzwingt eine obere Grenze für den Wert, auf den die Ressourcenbeschränkung
RLIMIT_NOFILE erhöht werden kann (siehe getrlimit(2)). Diese obere Grenze wird sowohl für
unprivilegierte als auch für privilegierte Prozesse durchgesetzt. Der Vorgabewert in dieser Datei
ist 1048576. (Vor Linux 2.6.25 war die obere Grenze für RLIMIT_NOFILE hart auf den gleichen Wert
einkodiert.)
/proc/sys/fs/overflowgid und /proc/sys/fs/overflowuid
Diese Dateien ermöglichen Ihnen, die festen Maximalwerte für UID und GID zu ändern. Der
Vorgabewert ist 65534. Einige Dateisysteme unterstützen nur 16-Bit-UIDs und -GIDs, obwohl in Linux
UIDs und GIDs 32 Bit lang sind. Wenn eines dieser Dateisysteme schreibbar eingehängt wird, würden
alle UIDs oder GIDs, die 65535 überschreiten würden, vor dem Schreiben auf die Platte in ihren
Überlaufwert übersetzt werden.
/proc/sys/fs/pipe-max-size (seit Linux 2.6.35)
siehe pipe(7).
/proc/sys/fs/pipe-user-pages-hard (seit Linux 4.5)
siehe pipe(7).
/proc/sys/fs/pipe-user-pages-soft (seit Linux 4.5)
siehe pipe(7).
/proc/sys/fs/protected_fifos (seit Linux 4.19)
Der Wert in dieser Datei ist/kann auf eines der Folgenden gesetzt (werden):
0 Schreiben in FIFOs ist nicht beschränkt.
1 O_CREAT open(2) wird auf FIFOs, die dem Aufrufenden nicht gehören und in für allen
schreibbaren, »sticky« Verzeichnissen liegen, nicht erlaubt, außer der FIFO gehört dem
Eigentümer des Verzeichnisses.
2 Wie bei Wert 1, aber die Beschränkung trifft auch auch Gruppen-schreibbare, »sticky«
Verzeichnisse.
Das Ziel der obigen Beschränkungen ist, unbeabsichtigtes Schreiben in eine FIFO, die von einem
Angreifer gesteuert wird, zu vermeiden, wenn ein Programm erwartet, eine normale Datei zu
erstellen.
/proc/sys/fs/protected_hardlinks (seit Linux 3.6)
Wenn der Wert in dieser Datei 0 ist, werden keine Einschränkungen bezüglich der Erstellung von
harten Links gesetzt (d.h. dies ist das historische Verhalten vor Linux 3.6). Wenn der Wert in
dieser Datei 1 ist, kann ein harter Link auf ein Ziel nur erstellt werden, falls einer der
folgenden Bedingungen zutrifft:
• Der aufrufenden Prozess verfügt über die Capability CAP_FOWNER in seinem Benutzernamensraum und
die Datei-UID hat ein Zuordnung in dem Namensraum.
• Die Dateisystem-UID des Prozesses, der den Link erstellt, passt auf den Eigentümer (UID) der
Zieldatei (wie in credentials(7) beschrieben, ist die Dateisystem-UID eines Prozesses
normalerweise zu seiner effektiven UID identisch).
• Alle der folgenden Bedingungen sind wahr:
• das Ziel ist eine reguläre Datei;
• die Zieldatei hat nicht ihr Modus-Bit »set-user-ID« aktiviert;
• die Zieldatei hat nicht sowohl ihr Modus-Bit »set-user-ID« als auch »group-executable«
aktiviert; und
• der Aufrufende hat Rechte, die Zieldatei zu lesen und zu schreiben (entweder über die
Dateiberechtigungsmaske oder weil er über die geeigneten Capabilities verfügt).
Der Vorgabewert in dieser Datei ist 0. Durch Setzen des Wertes auf 1 wird eine lange existierende
Klasse von Sicherheitsproblemen durch hardlinkbasierte
Prüfungszeitpunkt-Nutzungszeitpunkt-Ressourcenwettläufe verhindert, die meistens in
weltschreibbaren Verzeichnissen wie /tmp beobachtet wird. Die häufigste Ausnutzungsmethode dieses
Problems besteht darin, Privilegiengrenzen beim Folgen eines gegebenen harten Links zu
überschreiten (d.h. ein Root-Prozess folgt einem harten Link, den ein anderer Benutzer erstellt
hat). Zusätzlich verhindert dies unberechtigte Benutzer auf Systemen ohne separierte Partitionen
vom »Festklemmen« verwundbarer set-user-ID- und set-group-ID-Dateien gegen Upgrades durch den
Administrator oder dem Linken auf besondere Dateien.
/proc/sys/fs/protected_regular (seit Linux 4.19)
Der Wert in dieser Datei ist/kann auf eines der Folgenden gesetzt (werden):
0 Schreiben in normale Dateien ist nicht beschränkt.
1 O_CREAT open(2) wird auf normale Dateien, die dem Aufrufenden nicht gehören und in für allen
schreibbaren, »sticky« Verzeichnissen liegen, nicht erlaubt, außer die normale Datei gehört
dem Eigentümer des Verzeichnisses.
2 Wie bei Wert 1, aber die Beschränkung trifft auch auch Gruppen-schreibbare, »sticky«
Verzeichnisse.
Das Ziel der obigen Beschränkungen ist ähnlich dem von protected_fifos, erlaubt es aber
Anwedungen, das Schreiben in normale Dateien, die von einem Angreifer gesteuert werden, zu
vermeiden, wenn ein Programm erwartet, eine zu erstellen.
/proc/sys/fs/protected_symlinks (seit Linux 3.6)
Wenn der Wert in dieser Datei 0 ist, werden keine Einschränkungen auf die folgenden symbolischen
Links gesetzt (d.h. das historische Verhalten vor Linux 3.6). Wenn der Wert in dieser Datei 1 ist,
wird symbolischen Links nur unter den folgenden Umständen gefolgt:
• Die Dateisystem-UID des Prozesses, der dem symbolischen Link folgt, passt auf den Eigentümer
(UID) des symbolischen Links (wie in credentials(7) beschrieben, ist die Dateisystem-UID eines
Prozesses normalerweise identisch zu seiner effektiven UID);
• der Link ist nicht in einem weltschreibbaren Verzeichnis mit Sticky-Bit; oder
• der symbolische Link und sein Elternverzeichnis haben den gleichen Eigentümer (UID).
Ein Systemaufruf, der beim Folgen eines symbolischen Links wegen der obigen Einschränkungen
fehlschlägt, liefert den Fehler EACCES in errno zurück.
Der Vorgabewert in dieser Datei ist 0. Wird der Wert auf 1 gesetzt, wird eine bereits lang
existierende Klasse von Sicherheitsproblemen, die auf Ressourcenwettläufen zwischen dem Zeitpunkt
der Überprüfung und dem Zeitpunkt der Verwendung beim Zugriff auf symbolische Links basieren,
vermieden.
/proc/sys/fs/suid_dumpable (seit Linux 2.6.13)
Der Wert in dieser Datei wird dem Schalter »dumpable« unter den in prctl(2) beschriebenen
Umständen zugewiesen. Der Wert dieser Datei bestimmt schließlich, ob Speicherabbilder
(Core-Dump-Dateien) für Set-User-ID-Programme oder anderweitig geschützte/unsaubere Binärprogramme
erzeugt werden. Die Einstellung »dumpable« betrifft auch die Eigentümerschaft von Dateien im
Verzeichnis /proc/PID eines Prozesses, wie oben beschrieben.
Es können drei verschiedene Ganzzahlwerte festgelegt werden:
0 (Standard)
0 (Standard) Das bewirkt das traditionelle Verhalten (vor Linux 2.6.13). Ein
Kernspeicherabzug wird nicht für Prozesse erzeugt, die ihre Identität änderten (durch
Aufruf von seteuid(2), setgid(2) oder ähnliches oder durch das Ausführen eines set-user-ID
oder set-group-ID-Programms) oder deren Binärprogramm nicht die Leseberechtigung aktiviert
hat.
1 (»debug«)
Alle Prozesse geben einen Kernspeicherabzug aus, wenn möglich. (Gründe, warum ein Prozess
dennoch keinen Kernspeicherabzug ausgibt, sind in core(5) beschrieben.) Der
Kernspeicherabzug trägt die Benutzer-Kennung (UID) des erzeugenden Prozesses, es gibt keine
Sicherheitsprüfungen. Dies ist nur für die Fehlersuche im System gedacht: Dieser Modus ist
unsicher, da er es unprivilegierten Benutzern erlaubt, die Speicherinhalte von
privilegierten Prozessen zu untersuchen.
2 (»suidsafe«)
2 (»suidsafe«) Für alle Programme, für die normalerweise kein Abzug erzeugt würde (siehe
»0« oben), wird ein nur für Root lesbarer Abzug erzeugt. Dadurch kann der Benutzer die
Kernspeicherabzugsdatei entfernen, sie aber nicht lesen. Aus Sicherheitsgründen
überschreiben Kernspeicherabzüge in diesem Modus keine anderen Abzüge oder Dateien. Dieser
Modus eignet sich, wenn Administratoren Probleme in einer normalen Umgebung untersuchen.
Zusätzlich muss wie in core(5) ausführlich beschrieben seit Linux 3.6
/proc/sys/kernel/core_pattern entweder ein absoluter Pfadname oder ein Pipe-Befehl sein.
Falls core_pattern diesen Regeln nicht folgt, werden in das Kernelprotokoll Warnungen
ausgegeben und kein Kernspeicherabzug erstellt.
Für Einzelheiten der Auswirkungen der »dumpable«-Einstellung eines Prozesses auf die
Ptrace-Zugriffsmodusprüfung siehe ptrace(2).
/proc/sys/fs/super-max
Diese Datei steuert die maximale Anzahl der Superblocks und damit die maximale Anzahl von
Dateisystemen, die der Kernel einhängen kann. Sie müssen nur super-max erhöhen, wenn Sie mehr
Dateisysteme einhängen müssen, als der aktuelle Wert in super-max zulässt.
/proc/sys/fs/super-nr
Diese Datei enthält die Anzahl aktuell eingehängter Dateisysteme.
/proc/sys/kernel
Dieses Verzeichnis enthält Dateien, die eine Reihe von Kernel-Parametern steuern, wie es im
Folgenden beschrieben wird.
/proc/sys/kernel/acct
Diese Datei enthält drei Zahlen: highwater, lowwater und frequency. Wenn BSD-Prozessabrechnung
(accounting) aktiviert ist, steuern diese Werte ihr Verhalten. Wenn der freie Platz auf dem
Dateisystem mit der Protokolldatei unter lowwater Prozent sinkt, wird die Abrechnung ausgesetzt.
Wenn der freie Platz über highwater steigt, wird die Abrechnung fortgesetzt. frequency (Wert in
Sekunden) legt fest, wie oft der Kernel die Größe des freien Speichers prüft. Standardwerte sind
4, 2 und 30: Die Abrechnung wird unter 2% freiem Speicher ausgesetzt, über 4% fortgesetzt und alle
30 Sekunden der freie Speicher überprüft.
/proc/sys/kernel/auto_msgmni (Linux 2.6.27 bis 3.18)
Von Linux 2.6.27 bis 3.18 wurde diese Datei dazu verwandt, die Neuberechnung des Werts in
/proc/sys/kernel/msgmni, basierend auf der Hinzufügung oder der Entfernung von Speicher oder der
Erstellung/Entfernung von IPC-Namensräumen, zu steuern. Wurde der Wert »1« per Echo in diese Datei
geschrieben, wurde die automatische Neuberechnung von msgmni aktiviert (und eine Neuberechnung von
msgmni basierend auf der aktuellen Menge von verfügbaren Speicher und der Anzahl von
IPC-Namensräumen ausgelöst). Wurde »0« per Echo geschrieben, wurde die automatische Neuberechnung
deaktiviert. (Die automatische Neuberechnung war auch deaktiviert, falls explizit ein Wert
/proc/sys/kernel/msgmni zugewiesen worden war.) Der Vorgabewert in auto_msgmni war 1.
Seit Linux 3.19 hat der Inhalt dieser Datei keinen Effekt (da msgmni standardmäßig fast den
maximalen Wert enthält) und beim Lesen aus dieser Datei wird immer der Wert »0« zurückgeliefert.
/proc/sys/kernel/cap_last_cap (seit Linux 3.2)
siehe capabilities(7).
/proc/sys/kernel/cap-bound (von Linux 2.2 bis 2.6.24)
Diese Datei enthält den Wert der Kernel-Capability-Begrenzungsmenge (ausgedrückt als
vorzeichenbehaftete Dezimalzahl). Dieser Satz wird logisch UND-verknüpft mit den Capabilities, die
während execve(2) bestanden. Beginnend mit Linux 2.6.25 verschwand dieser Wert und wurde durch
seine prozess-spezifische Variante ersetzt; siehe capabilities(7).
/proc/sys/kernel/core_pattern
siehe core(5)
/proc/sys/kernel/core_pipe_limit
siehe core(5)
/proc/sys/kernel/core_uses_pid
siehe core(5)
/proc/sys/kernel/ctrl-alt-del
Diese Datei steuert den Umgang mit Strg-Alt-Entf von der Tastatur. Wenn der Wert in dieser Datei 0
ist, wird Strg-Alt-Entf abgefangen und an das init(1)-Programm weitergeleitet, um einen
ordnungsgemäßen Neustart auszulösen. Wenn der Wert größer als Null ist, wird Linux' Reaktion auf
einen vulkanischen Nackengriff™ ein sofortiger Neustart sein, ohne auch nur seine schmutzigen
Puffer zu synchronisieren. Anmerkung: Wenn ein Programm (wie DOSEMU) die Tastatur im »raw«-Modus
betreibt, wird das Strg-Alt-Entf durch das Programm abgefangen, bevor es die Kernel-TTY-Schicht
erreicht. Das Programm muss entscheiden, wie es damit umgeht.
/proc/sys/kernel/dmesg_restrict (seit Linux 2.6.37)
Der Wert in dieser Datei bestimmt, wer den Inhalt des Syslogs des Kernels sehen kann. Ein Wert von
0 in dieser Datei führt zu keinen Einschränkungen. Falls der Wert 1 ist, können nur privilegierte
Benutzer den Syslog des Kernels lesen. (Siehe syslog(2) für weitere Details). Seit Linux 3.4
können nur Benutzer, die über das Capability CAP_SYS_ADMIN verfügen, den Wert dieser Datei ändern.
/proc/sys/kernel/domainname und /proc/sys/kernel/hostname
können benutzt werden, um den NIS/YP-Domainnamen und den Namen Ihres Systems auf genau dieselbe
Weise wie mit den Befehlen domainname(1) und hostname(1) zu setzen. Also hat
# echo 'darkstar' > /proc/sys/kernel/hostname
# echo 'meineDomain' > /proc/sys/kernel/domainname
den gleichen Effekt wie
# hostname 'darkstar'
# domainname 'meineDomain'
Beachten Sie jedoch, dass der klassische darkstar.frop.org den Rechnernamen »darkstar« und den
DNS-Domainnamen (Internet Domain Name Server) »frop.org« hat, der nicht mit den Domainnamen von
NIS (Network Information Service) oder YP (Gelbe Seiten) verwechselt werden darf. Diese beiden
Domainnamen sind in der Regel anders. Für eine ausführliche Diskussion siehe die Handbuchseite
hostname(1).
/proc/sys/kernel/hotplug
Diese Datei enthält den Pfadnamen für das Programm zur Umsetzung der »Hotplug«-Richtlinie. Der
Standardwert in dieser Datei ist /sbin/hotplug.
/proc/sys/kernel/htab-reclaim (vor Linux 2.4.9.2)
(nur PowerPC) Wenn diese Datei auf einen Wert ungleich Null gesetzt ist, wird die »PowerPC htab«
(siehe Kernel-Datei Documentation/powerpc/ppc_htab.txt) jedesmal »zurückgeschnitten«, wenn das
System in den Leerlauf geht.
/proc/sys/kernel/keys/*
Dieses Verzeichnis enthält verschiedene Dateien, die Parameter und Begrenzungen für die
Schlüsselverwaltungseinrichtung definieren. Diese Dateien werden in keyrings(7) beschrieben.
/proc/sys/kernel/kptr_restrict (seit Linux 2.6.38)
Der Wert in dieser Datei bestimmt, ob die Kerneladressen mittels Dateien in /proc und anderen
Schnittstellen offengelegt werden. Ein Wert von 0 in dieser Datei führt zu keinen Einschränkungen.
Falls der Wert 1 ist, werden alle Kernelzeiger, die mittels des Formatkennzeichners %pK ausgegeben
werden, durch Nullen ersetzt, es sei denn, der Benutzer verfügt über die Capability CAP_SYSLOG.
Falls der Wert 2 ist, werden Kernelzeiger, die mittels des Formatkennzeichners %pK ausgegeben
werden, durch Nullen ersetzt, unabhängig von den Capabilitys der Benutzer. Der ursprüngliche
Vorgabewert dieser Datei war 1, aber die Vorgabe wurde in Linux 2.6.39 auf 0 geändert. Seit Linux
3.4 können nur Benutzer mit der Capability CAP_SYS_ADMIN den Wert in dieser Datei ändern.
/proc/sys/kernel/l2cr
(nur PowerPC) Diese Datei enthält einen Schalter für die Steuerung des L2-Caches von Platinen mit
dem G3-Prozessor. Der Wert 0 deaktiviert den Cache, ein Wert ungleich null aktiviert ihn.
/proc/sys/kernel/modprobe
Diese Datei enthält den Pfadnamen zum Programm, das die Kernel-Module lädt, standardmäßig
/sbin/modprobe. Diese Datei existiert nur, falls die Kernel-Option CONFIG_MODULES (CONFIG_KMOD in
Linux 2.6.26 und älter) aktiviert ist. Diese wird in der Linux-Kernel-Quelldatei
Documentation/kmod.txt beschrieben (nur in Linux 2.4 und älter vorhanden).
/proc/sys/kernel/modules_disabled (seit Linux 2.6.31)
Ein Umschaltwert, der angibt, ob Module in einen andernfalls modularen Kernel geladen werden
dürfen. Dieser Umschaltwert ist standardmäßig aus (0), kann aber auf wahr (true, 1) gesetzt
werden. Sobald er wahr ist, können Module weder geladen noch entladen werden und der Umschaltwert
kann nicht zurück auf falsch gesetzt werden. Diese Datei ist nur vorhanden, falls der Kernel mit
der aktivierten Option CONFIG_MODULES gebaut wurde.
/proc/sys/kernel/msgmax (seit Linux 2.2)
Diese Datei enthält eine systemweite Begrenzung der Maximalzahl von Bytes, die eine einzelne
Nachricht in einer System-V-Nachrichtenschlange enthalten darf.
/proc/sys/kernel/msgmni (seit Linux 2.4)
Diese Datei legt die systemweite Grenze für die Anzahl der Nachrichtenschlangen-Bezeichner fest.
Siehe auch /proc/sys/kernel/auto_msgmni.
/proc/sys/kernel/msgmnb (seit Linux 2.2)
Diese Datei definiert einen systemweiten Parameter für die Initialisierung der Einstellung
msg_qbytes für nachfolgend erstellte Nachrichtenschlangen. msg_qbytes legt fest, wie viele Bytes
maximal in eine Nachrichtenschlange geschrieben werden dürfen.
/proc/sys/kernel/ngroups_max (seit Linux 2.6.4)
Dies ist eine nur lesbare Datei, die die obere Grenze für die Anzahl der Gruppenmitgliedschaften
eines Prozesses anzeigt.
/proc/sys/kernel/ns_last_pid (seit Linux 3.3)
Siehe pid_namespaces(7).
/proc/sys/kernel/ostype und /proc/sys/kernel/osrelease
Diese Dateien enthalten Teilzeichenketten von /proc/version.
/proc/sys/kernel/overflowgid und /proc/sys/kernel/overflowuid
Diese Dateien duplizieren die Dateien /proc/sys/fs/overflowgid und /proc/sys/fs/overflowuid.
/proc/sys/kernel/panic
Diese Datei ermöglicht Lese- und Schreib-Zugriff auf die Kernel-Variable panic_timeout. Steht hier
eine 0, dann bleibt der Kernel in einer Panic-Schleife; ungleich 0 bedeutet, dass der Kernel nach
dieser Anzahl Sekunden automatisch das System wieder hochfahren soll. Wenn Sie die
Laufzeitüberwachungs-Gerätetreiber (software watchdog device driver) nutzen, ist der empfohlene
Wert 60.
/proc/sys/kernel/panic_on_oops (seit Linux 2.5.68)
Diese Datei steuert das Verhalten des Kernels, wenn ein Problem (oops) oder ein Fehler aufgetreten
ist. Falls diese Datei den Wert 0 enthält, versucht das System eine Fortsetzung des Betriebs.
Falls sie 1 enthält, gibt das System klogd ein paar Sekunden Zeit für die Protokollierung des
Problems und verfällt dann in die »kernel panic«. Wenn in der Datei /proc/sys/kernel/panic ein
Wert ungleich Null steht, wird der Rechner neu gestartet.
/proc/sys/kernel/pid_max (seit Linux 2.5.34)
Diese Datei gibt den Wert an, an dem PIDs überlaufen (d.h. der Wert in dieser Datei ist um eins
größer als die maximal zulässige PID). PIDs größer als dieser Wert werden nicht zugewiesen; daher
fungiert der Wert in dieser Datei auch als systemweite Grenze der Gesamtanzahl an Prozessen und
Threads. Der Standardwert für diese Datei ist 32768; dieser bewirkt den gleichen PID-Bereich wie
auf älteren Kerneln. Auf 32-Bit-Plattformen ist 32768 der Maximalwert. Auf 64-Bit-Systemen kann
pid_max auf einen beliebigen Wert bis zu 2^22 (PID_MAX_LIMIT, ungefähr 4 Millionen) gesetzt
werden.
/proc/sys/kernel/powersave-nap (nur PowerPC)
Diese Datei enthält einen Schalter zur Steuerung von Linux-PPC. Ist er betätigt, wird Linux-PPC
den »nap«-Energiesparmodus verwenden, ansonsten wird es der »doze«-Modus sein.
/proc/sys/kernel/printk
siehe syslog(2)
/proc/sys/kernel/pty (seit Linux 2.6.4)
Dieses Verzeichnis enthält zwei Dateien mit Bezug zu den Unix-98-Pseudoterminals (siehe pts(4))
des Systems.
/proc/sys/kernel/pty/max
Diese Datei definiert die Maximalzahl von Pseudoterminals.
/proc/sys/kernel/pty/nr
Diese (nur lesbare) Datei gibt die Anzahl der derzeit im System genutzten Pseudoterminals an
/proc/sys/kernel/random
Dieses Verzeichnis enthält verschiedene Parameter, um das Verhalten der Datei /dev/random zu
steuern. random(4) gibt weitere Informationen.
/proc/sys/kernel/random/uuid (seit Linux 2.4)
Jeder Lesevorgang aus dieser nur lesbaren Datei liefert eine zufällig generierte 128-Bit UID als
Zeichenkette, die im Standard-UID-Format ist, zurück.
/proc/sys/kernel/randomize_va_space (seit Linux 2.6.12)
Wählt die Adressraumlayoutverwürfelungsregelungen (ASLR) für das System aus (auf Architekturen,
die ASLR unterstützen). Für diese Datei werden drei Werte unterstützt:
0 Schaltet ASLR aus. Dies ist die Vorgabe für Architekturen, die ASLR nicht unterstützen und
wenn der Kernel mit dem Parameter norandmaps gestartet wird.
1 Macht die Zuweisung von Adressen durch mmap(2), den Stack und die VDSO-Seite zufällig.
Unter anderem bedeutet dies, dass dynamische Bibliotheken an zufälligen Adressen geladen
werden. Das Textsegment von PIE-gelinkten Programmen wird auch an zufälligen Adressen
geladen. Dieser Wert ist die Vorgabe, falls der Kernel mit CONFIG_COMPAT_BRK konfiguriert
wurde.
2 (Seit Linux 2.6.25) Speicherverwürfelung wird auch unterstützt. Dieser Wert ist die
Vorgabe, falls der Kernel nicht mit CONFIG_COMPAT_BRK konfiguriert wurde.
/proc/sys/kernel/real-root-dev
Diese Datei wird in der Linux-Kernel-Quelldatei Documentation/admin-guide/initrd.rst (oder
Documentation/initrd.txt vor Linux 4.10) beschrieben.
/proc/sys/kernel/reboot-cmd (nur Sparc)
Diese Datei scheint eine Möglichkeit zu sein, ein Argument an den SPARC-ROM/Flash-Bootloader zu
übergeben. Vielleicht kann man ihm Anweisungen für die Zeit nach dem Neustart geben?
/proc/sys/kernel/rtsig-max
(Nur in Linux bis einschließlich 2.6.7; siehe setrlimit(2)). Mit dieser Datei kann die maximale
Anzahl (anstehender) von POSIX-Echtzeit-Signalen eingestellt werden, die im System anstehen
dürfen.
/proc/sys/kernel/rtsig-nr
(Nur in Linux bis einschließlich 2.6.7). Diese Datei gibt die Anzahl derzeit anstehender
POSIX-Echtzeitsignale an.
/proc/PID/sched_autogroup_enabled (seit Linux 2.6.38)
siehe sched(7)
/proc/sys/kernel/sched_child_runs_first (seit Linux 2.6.23)
Falls diese Datei den Wert Null enthält, dann wird der Elternprozess zuerst nach einem fork(2) auf
der CPU eingeplant. Andernfalls wird das Kind zuerst auf der CPU eingeplant. (Auf einem
Mehrprozessorsystem können natürlich sowohl der Elternprozess als auch das Kind sofort auf einer
CPU eingeplant werden.)
/proc/sys/kernel/sched_rr_timeslice_ms (seit Linux 3.9)
Siehe sched_rr_get_interval(2).
/proc/sys/kernel/sched_rt_period_us (seit Linux 2.6.25)
siehe sched(7)
/proc/sys/kernel/sched_rt_runtime_us (seit Linux 2.6.25)
siehe sched(7)
/proc/sys/kernel/seccomp (seit Linux 4.14)
Dieses Verzeichnis stellt zusätzliche Seccomp-Informationen und -konfigurationen bereit. Siehe
seccomp(2) für weitere Details.
/proc/sys/kernel/sem (since Linux 2.4)
Diese Datei enthält vier Zahlen, die Grenzen für System-V-IPC-Semaphore definieren. Der Reihe nach
sind das:
SEMMSL die maximale Anzahl von Semaphoren pro Satz von Semaphoren
SEMMNS eine systemweite Begrenzung für die Anzahl in allen Semaphoren-Sätzen
SEMOPM die maximale Anzahl von Operationen, die in einem Aufruf von semop(2) festgelegt werden
dürfen
SEMMNI eine systemweite Grenze für die maximale Anzahl von Bezeichnern für Semaphore.
/proc/sys/kernel/sg-big-buff
Diese Datei gibt die Größe der generischen Puffer für SCSI-Geräte an. Sie können den Wert derzeit
nicht optimieren, aber bei der Kompilierung ändern, indem Sie include/scsi/sg.h bearbeiten und den
Wert SG_BIG_BUFF anpassen. Es sollte aber keinen Grund geben, diesen Wert zu ändern.
/proc/sys/kernel/shm_rmid_forced (seit Linux 3.1)
Falls diese Datei auf 1 gesetzt wird, werden alle gemeinsam benutzten System-V-Speichersegmente
für die Zerstörung, sobald die Anzahl der angehängten Prozesse auf Null fällt, markiert. Mit
anderen Worten, es ist nicht mehr möglich, dass gemeinsam benutzte Speichersegmente unabhängig von
angehängten Prozessen existieren.
Der Effekt ist, als ob shmctl(2) IPC_RMID auf alle bestehenden und alle zukünftig erstellten
Segmente angewandt würde (bis diese Datei auf 0 zurückgesetzt wird). Beachten Sie, dass bestehende
Segmente, die an keinen Prozess angehängt sind, sofort beim Setzen der Datei auf 1 zerstört
werden. Setzen dieser Option wird auch Segmente zerstören, die zwar erstellt, aber niemals
angehängt wurden, sobald der Prozess, der das Segment mit shmget(2) erstellte, beendet wird.
Wird diese Datei auf 1 gesetzt, ist es möglich, sicherzustellen, dass alle gemeinsam benutzten
System-V-Speichersegmente beim Ressourcenverbrauch und den Ressourcenbegrenzungen bei mindestens
einem Prozess berücksichtigt werden (siehe die Beschreibung von RLIMIT_AS in getrlimit(2)).
Da durch Setzen der Datei auf 1 ein nicht standardisiertes Verhalten hervorgerufen wird und auch
bestehende Anwendungen dadurch beschädigt werden könnten, ist der Vorgabewert in dieser Datei 0.
Setzen Sie diese Datei nur auf 1, wenn Sie ein gutes Verständnis der Semantik der Anwendungen, die
gemeinsam benutzte System-V-Speichersegmente auf Ihrem System benutzen, haben.
/proc/sys/kernel/shmall (seit Linux 2.2)
Diese Datei enthält die systemweite Grenze für die Gesamtzahl der Seiten im gemeinsam benutzten
System-V-Speicher.
/proc/sys/kernel/shmmax (seit Linux 2.2)
Diese Datei kann genutzt werden, um die Laufzeitbeschränkung für die maximale Größe (System V IPC)
für gemeinsame Speichersegmente festzulegen. Jetzt werden im Kernel gemeinsame Speichersegmente
bis zu 1 GB unterstützt. Dieser Wert ist per Vorgabe SHMMAX.
/proc/sys/kernel/shmmni (seit Linux 2.4)
Diese Datei spezifiziert die systemweite maximale Anzahl von gemeinsam genutzten
System-V-Speichersegmenten, die erzeugt werden können.
/proc/sys/kernel/sysctl_writes_strict (seit Linux 3.16)
Der Wert in dieser Datei bestimmt, wie der Dateiversatz das Verhalten der Aktualisierung von
Einträgen in Dateien unter /proc/sys beeinflusst. Die Datei hat drei mögliche Werte:
-1 Dies stellt das veraltete Verhalten bereit, ohne Printk-Warnungen. Jeder write(2) muss den
kompletten zu schreibenden Wert enthalten und mehrere Schreibvorgänge auf den gleichen
Dateideskriptor werden unabhängig von der Dateiposition den gesamten Wert überschreiben.
0 (Vorgabe) Dies stellt das gleiche Verhalten wie bei -1 bereit, aber Printk-Warnungen werden
für Prozesse geschrieben, die Schreibzugriffe ausführen, wenn der Dateiversatz nicht 0 ist.
1 Respektiert den Dateiversatz beim Schreiben von Zeichenketten in Dateien in /proc/sys. Mehrere
Schreibvorgänge werden an den Wertepuffer anhängen. Alles, was hinter die maximale Länge des
Puffers geschrieben wird, wird ignoriert. Schreibvorgänge an numerische Einträge in /proc/sys
müssen immer bei Dateiversatz 0 erfolgen und der Wert muss komplett in dem an write(2)
bereitgestellten Puffer enthalten sein.
/proc/sys/kernel/sysrq
Diese Datei steuert, welche Funktionen von dem SysRq-Schlüssel aufgerufen werden. Standardmäßig
enthält die Datei den Wert 1. Das bedeutet, dass jede mögliche SysRq-Anfrage möglich ist. (In
älteren Kernel-Versionen wurde SysRq standardmäßig deaktiviert und Sie mussten SysRq gesondert zur
Laufzeit aktivieren, aber das ist nicht mehr notwendig). Mögliche Werte in dieser Datei sind:
0 deaktiviert Sysrq komplett
1 aktiviert alle Funktionen von Sysrq
> 1 Bitmaske, die Sysrq-Funktione erlaubt, wie folgt:
2 aktiviert die Steuerung der Konsolenprotokollierungsstufe
4 aktiviert die Steuerung der Tastatur (SAK, unraw)
8 aktiviert Speicherauszüge von Prozessen zur Fehlersuche usw.
16 aktiviert den Befehl »sync«
32 aktiviert das nur lesende erneute Einhängen
64 aktiviert das Signalisieren von Prozessen (term, kill, oom-kill)
128 erlaubt Neustarten/Ausschalten
256 Erlaubt die Veränderungen des Nice-Werts von Echtzeitprozessen
Diese Datei ist nur vorhanden, wenn die Kernel-Konfigurationsoption CONFIG_MAGIC_SYSRQ aktiviert
wird. Für weitere Einzelheiten lesen Sie die Linux-Kernel-Quelltextdatei
Documentation/admin-guide/sysrq.rst (oder Documentation/sysrq.txt vor Linux 4.10).
/proc/sys/kernel/version
Diese Datei enthält eine Zeichenkette wie beispielsweise:
#5 Wed Feb 25 21:49:24 MET 1998
Die »#5« besagt, das dies der fünfte aus diesem Quelltext erstellte Kernel ist. Das anschließende
Datum gibt an, wann der Kernel erstellt wurde.
/proc/sys/kernel/threads-max (seit Linux 2.3.11)
Diese Datei legt die systemweite Begrenzung für die Gesamtzahl der Threads (Prozesse) fest, die
erstellt werden dürfen.
Seit Linux 4.1 ist der Wert, den nach threads-max geschrieben werden kann, begrenzt. Der
Minimalwert ist 20, der Maximalwert wird durch die Konstante FUTEX_TID_MASK (0x3fffffff) gegeben.
Falls ein Wert außerhalb dieses Bereichs nach threads-max geschrieben wird, tritt der Fehler
EINVAL auf.
Der geschriebene Wert wird gegenüber den verfügbaren RAM-Seiten geprüft. Falls die Thread-Struktur
zu viel (mehr als 1/8) der verfügbaren RAM-Seiten belegen würde, wird threads-max entsprechend
reduziert.
/proc/sys/kernel/yama/ptrace_scope (seit Linux 3.5)
siehe ptrace(2).
/proc/sys/kernel/zero-paged (nur PowerPC)
Die Datei enthält einen Schalter. Ist er aktiviert (ungleich 0), wird Linux-PPC vorbeugend Seiten
im Leerlauf auf Null setzen und beschleunigt möglicherweise get_free_pages.
/proc/sys/net
Dieses Verzeichnis enthält Netzwerkkram. Erklärungen für einige der Dateien in diesem Verzeichnis
finden Sie in tcp(7) und ip(7).
/proc/sys/net/core/bpf_jit_enable
siehe bpf(2).
/proc/sys/net/core/somaxconn
Diese Datei enthält eine obere Grenze für das backlog-Argument von listen(2); siehe die
Handbuchseite von listen(2) für Einzelheiten.
/proc/sys/proc
Dieses Verzeichnis kann leer sein.
/proc/sys/sunrpc
Dieses Verzeichnis unterstützt Suns »remote procedure call« (rpc(3)) für das Netzwerkdateisystem
(NFS). Auf manchen Systemen fehlt es.
/proc/sys/user (seit Linux 4.9)
Siehe namespaces(7).
/proc/sys/vm
Dieses Verzeichnis enthält Dateien für die Optimierung der Speicherverwaltung und die Verwaltung
der Puffer und Caches (Zwischenspeicher).
/proc/sys/vm/admin_reserve_kbytes (seit Linux 3.10)
Diese Datei definiert die Menge an freiem Speicher (in KiB) auf dem System, der für Benutzer mit
der Capability CAP_SYS_ADMIN reserviert werden sollte.
Die Vorgabe für diesen Wert ist der kleinere Wert aus [3% von freien Seiten, 8 MiB], ausgedrückt
in kiB. Der Vorgabewert ist dazu gedacht, unter dem standardmäßigen Überbuchungs »Rate«-Modus
(d.h. 0 in /proc/sys/vm/overcommit_memory) genug für die Anmeldung des Systemadministrators zum
Beenden eines Prozesses, falls notwendig, bereitzustellen.
Systeme, die im »Nichtmals Überbuchen«-Modus« (d.h. 2 in /proc/sys/vm/overcommit_memory) laufen,
sollten den Wert in dieser Datei vergrößern,um der vollen virtuelle Speichergröße Rechnung zu
tragen, die Programme zur Wiederherstellung benötigen (z.B. login(1), ssh(1) und top(1)).
Andernfalls ist der Systemadministrator möglicherweise nicht in der Lage, sich anzumelden, um das
System wiederherzustellen. Auf x86-64 ist beispielsweise 131072 (128 MiB reserviert) ein
geeigneter Wert.
Die Änderung des Wertes in dieser Datei tritt in Kraft, wann immer eine Anwendung Speicher
anfordert.
/proc/sys/vm/compact_memory (seit Linux 2.6.35)
Wenn 1 in diese Datei geschrieben wird, werden alle Zonen zusammengefasst, so dass der freie
Speicher wo möglich in durchlaufenden Blöcken verfügbar ist. Der Effekt dieser Aktion kann durch
Einsicht in /proc/buddyinfo geprüft werden.
Nur vorhanden, falls der Kernel mit CONFIG_COMPACTION konfiguriert wurde.
/proc/sys/vm/drop_caches (seit Linux 2.6.16)
Das Schreiben in diese Datei veranlasst den Kernel, saubere Zwischenspeicher, Dentries und Inodes
aus dem Speicher zu verwerfen, was dazu führt, dass Speicher frei wird. Dies kann für das Testen
der Speicherverwaltung und der Durchführung reproduzierbarer Dateisystembewertungen nützlich sein.
Da das Schreiben in diese Datei dazu führt, dass die Vorteile der Zwischenspeicherung verloren
gehen, kann es die Leistung des gesamten Systems vermindern.
Zur Freigabe des Seitenzwischenspeichers, verwenden Sie:
echo 1 > /proc/sys/vm/drop_caches
Zur Freigabe der Dentries und Inodes, verwenden Sie:
echo 2 > /proc/sys/vm/drop_caches
Zur Freigabe des Seitenzwischenspeichers, der Dentries und Inodes, verwenden Sie:
echo 3 > /proc/sys/vm/drop_caches
Da das Schreiben in diese Datei unschädlich ist und geänderte (schmutzige) Objekte nicht
freigegeben werden können, sollte der Benutzer vorher sync(8) aufrufen.
/proc/sys/vm/sysctl_hugetlb_shm_group (seit Linux 2.6.7)
Diese schreibbare Datei enthält die Gruppenkennung, der es erlaubt ist, Speicher mittels großer
Seiten zu belegen. Falls ein Prozess über eine Dateisystemgruppenkennung oder irgendeine
zusätzliche Gruppenkennung, die auf diese Gruppenkennung passt, verfügt, dann kann er große
Speicherseiten belegen, ohne die Capability CAP_IPC_LOCK zu halten; siehe memfd_create(2), mmap(2)
und shmget(2).
/proc/sys/vm/legacy_va_layout (seit Linux 2.6.9)
Wenn ungleich Null, deaktiviert dies das neue 32-Bit-Layout für das »Memory Mapping«, der Kernel
wird das alte (2.4) Layout für alle Prozesse anwenden.
/proc/sys/vm/memory_failure_early_kill (seit Linux 2.6.32)
Steuert, wie Prozesse beendet werden, wenn ein nicht korrigierter Speicherfehler (in der Regel ein
2-Bit-Fehler in einem Speichermodul), den der Kernel nicht bearbeiten kann, im Hintergrund durch
die Hardware erkannt wird. In einigen Fällen (wenn es von der Seite noch eine gültige Kopie auf
der Festplatte gibt), wird der Kernel den Fehler behandeln, ohne alle Anwendungen zu
beeinträchtigen. Aber wenn es keine weitere aktuelle Kopie der Daten gibt, wird er Prozesse
abbrechen, um die Verbreitung korrumpierter Daten zu unterbinden.
Die Datei hat einen der folgenden Werte:
1 Bricht alle Prozesse ab, in deren Speicher die beschädigte und nicht erneut ladbare Seite
gemappt ist, sobald die Beschädigung erkannt wird. Beachten Sie, dass dies nicht für einige
spezielle Seitentypen wie Kernel-intern zugewiesene Daten oder den
Auslagerungszwischenspeicher unterstützt wird, es funktioniert aber für die Mehrheit der
Anwenderseiten.
0 Die beschädigte Seite aus allen Prozesse ausmappen und einen Prozess nur töten, falls er
versucht, auf die Seite zuzugreifen.
Der Abbruch wird mittels eines SIGBUS-Signals erledigt, bei dem der si_code auf BUS_MCEERR_AO
gesetzt wird. Prozesse können darauf reagieren, wenn sie wollen; siehe sigaction(2) für weitere
Einzelheiten.
Diese Funktionalität ist nur auf Architekturen/Plattformen aktiv, die über eine ausgefeilte
Handhabung von »machine checks« verfügen und hängt von den Fähigkeiten der Hardware ab.
Anwendungen können die Einstellung memory_failure_early_kill individuell mit der
prctl(2)-Operation PR_MCE_KILL außer Kraft setzen.
Nur vorhanden, falls der Kernel mit CONFIG_MEMORY_FAILURE konfiguriert wurde.
/proc/sys/vm/memory_failure_recovery (seit Linux 2.6.32)
Aktiviert die Behebung von Speicherfehlern (wenn das von der Plattform unterstützt wird).
1 Fehlerbehebung versuchen.
0 Bei Speicherfehlern immer eine Kernel Panic auslösen.
Nur vorhanden, falls der Kernel mit CONFIG_MEMORY_FAILURE konfiguriert wurde.
/proc/sys/vm/oom_dump_tasks (seit Linux 2.6.25)
Ermöglicht einen systemweiten Speicherauszug der Prozesse (ohne Kernel-Threads), wenn der Kernel
bei Speicherknappheit Prozesse abbricht (OOM-Killer). Der Speicherauszug enthält die folgenden
Informationen für jeden Prozess (Thread, Prozess): Thread-Kennung, reale Benutzerkennung,
Thread-Gruppenkennung (Prozesskennung), Größe des virtuellen Speichers, Größe des Resident Set,
die CPU, auf der der Prozess laufen soll, die oom_adj-Bewertung (siehe die Beschreibung von
/proc/PID/oom_adj) und der Name des Befehls. Dies ist hilfreich, um festzustellen, warum der
OOM-Killer aufgerufen wurde und um die außer Kontrolle geratenen Prozesse zu identifizieren.
Ist der Wert in der Datei Null, wird diese Information unterdrückt. Auf sehr großen Systemen mit
Tausenden von Prozessen wird es kaum praktikabel sein, für alle Prozesse den Speicherstatus
auszugeben. Solche Systeme sollten nicht gezwungen werden, bei OOM-Situationen Leistungseinbußen
zu erleiden, wenn die Informationen nicht gewünscht werden.
Ist der Wert von Null verschieden, werden diese Informationen jedesmal ausgegeben, wenn der
OOM-Killer einen speicherhungrigen Prozess ins Jenseits schickt.
Der Standardwert ist 0.
/proc/sys/vm/oom_kill_allocating_task (seit Linux 2.6.24)
Dies aktiviert oder deaktiviert das Beenden des OOM-auslösenden Prozesses bei Speicherknappheit.
Ist der Wert null, wertet der OOM-Killer die gesamte Taskliste aus und wählt heuristisch einen
Prozess als Opfer aus. Normalerweise wählt er einen speicherhungrigen, außer Kontrolle geratenenen
Task aus, dessen Tod sehr viel Speicher freigibt.
Ist der Wert ungleich Null, tötet der OOM-Killer den Prozess, der die Speicherknappheit auslöste.
Dadurch wird eine möglicherweise aufwändige Analyse der Taskliste vermieden.
Falls /proc/sys/vm/panic_on_oom von null verschieden ist, hat das Vorrang vor dem Wert in
/proc/sys/vm/oom_kill_allocating_task, was auch immer darin steht.
Der Standardwert ist 0.
/proc/sys/vm/overcommit_kbytes (seit Linux 3.14)
Diese beschreibbare Datei stellt eine Alternative zu /proc/sys/vm/overcommit_ratio zu Steuerung
von CommitLimit bereit, wenn /proc/sys/vm/overcommit_memory den Wert 2 hat. Es ermöglicht die
Menge der Speicherüberbuchung als absoluten Wert (in kB) statt als Prozentwert, wie dies in
overcommit_ratio erfolgt, festzulegen. Dies ermöglicht granularere Steuerung des CommitLimit auf
Systemen mit extrem viel Speicher.
Nur entweder overcommit_kbytes oder overcommit_ratio kann einen Effekt haben. Falls
overcommit_kbytes einen von Null verschiedenen Wert enthält, dann wird dieser zur Berechnung von
CommitLimit verwandt, andernfalls wird overcommit_ratio verwandt. Wird in eine der beiden Dateien
geschrieben, dann wird der Wert in der anderen auf Null gesetzt.
/proc/sys/vm/overcommit_memory
Diese Datei legt den Abrechnungsmodus des Kernels für virtuellen Speicher fest. Die Werte sind:
0: heuristische Überbuchung (Standardverhalten)
1: immer überbuchen, niemals prüfen
2: immer prüfen, niemals überbuchen
In Modus 0 werden Aufrufe von mmap(2) mit MAP_NORESERVE nicht überprüft. Damit ist die
Standardprüfung sehr schwach und setzt den Prozess dem Risiko aus, zum Opfer des OOM-Killers zu
werden.
In Modus 1 gibt der Kernel immer vor, noch über Speicher zu verfügen, bis der Speicher schließlich
wirklich erschöpft ist. Ein Einsatzzweck stellt das wissenschaftliche Rechnen dar, bei denen
große, kaum besetzte Felder eingesetzt werden. Vor Linux 2.6.0 impliziert jeder von Null
verschiedene Wert den Modus 1.
In Modus 2 (verfügbar seit Linux 2.6) wird der reservierbare gesamte virtuelle Adressraum
(CommitLimit in /proc/meminfo) wie folgt berechnet:
CommitLimit = (total_RAM - total_huge_TLB) *
overcommit_ratio / 100 + total_swap
wobei:
• total_RAM ist der gesamte RAM des Systems
• total_huge_TLB ist die für große Speicherseiten beiseite gestellte Speichermenge
• overcommit_ratio ist der Wert aus /proc/sys/vm/overcommit_ratio
• total_swap ist die Menge des Auslagerungsbereichs
Beispielsweise ergibt diese Formel auf einem System mit 16 GB an physischem RAM, 16 GB an
Auslagerungsspeicher, keinen für große Speicherseiten gewidmeten Bereich und einem
overcommit_ratio von 50 ein CommitLimit von 24 GB.
Falls der Wert in /proc/sys/vm/overcommit_kbytes von Null verschieden ist, wird CommitLimit
stattdessen seit Linux 3.14 wie folgt berechnet:
CommitLimit = overcommit_kbytes + total_swap
Siehe auch die Beschreibung von /proc/sys/vm/admin_reserve_kbytes und
/proc/sys/vm/user_reserve_kbytes.
/proc/sys/vm/overcommit_ratio (seit Linux 2.6.0)
Diese schreibbare Datei definiert einen Prozentwert, zu dem Speicher überbucht werden kann. Der
Vorgabewert in der Datei ist 50. Siehe die Beschreibung von /proc/sys/vm/overcommit_memory.
/proc/sys/vm/panic_on_oom (seit Linux 2.6.18)
Dies aktiviert oder deaktiviert eine Kernel-Panik bei Speicherknappheit.
Wenn diese Datei auf den Wert 0 gesetzt wird, wird der OOM-Killer des Kernels einen außer
Kontrolle geratenen Prozess töten. Normalerweise findet er einen außer Kontrolle geratenen Prozess
und das System überlebt.
Wenn diese Datei auf den Wert 1 gesetzt ist, verfällt der Kernel in Panik, wenn Speicherknappheit
eintritt. Wenn allerdings ein Prozess die Zuweisungen an bestimmte Knoten mit Speicherstrategien
(mbind(2) MPOL_BIND) oder Cpusets (cpuset(7)) begrenzt und die Knoten einen
Speichererschöpfungs-Zustand erreichen, kann ein Prozess vom OOM-Killer getötet werden. In diesem
Fall tritt keine Panik ein: Weil der Speicher anderer Knoten noch frei sein kann, muss das System
noch nicht als ganzes unter Speicherknappheit leiden.
Wenn diese Datei schon auf den Wert 2 gesetzt ist, wird bei Speicherknappheit immer eine
Kernel-Panik ausgelöst.
Der Standardwert ist 0. 1 und 2 sind für die Ausfallsicherung in Clustern bestimmt. Wählen Sie den
Wert entsprechend ihrer Strategie oder im Sinn der Ausfallsicherung.
/proc/sys/vm/swappiness
Der Wert in dieser Datei legt fest, wie aggressiv der Kernel Speicherseiten auslagert. Hohe Werte
machen ihn aggressiver, kleinere Werte sanftmütiger. Der Standardwert ist 60.
/proc/sys/vm/user_reserve_kbytes (seit Linux 3.10)
Legt die Speichermenge (in kiB) fest, die für Benutzerprozesse zu reservieren ist. Dies ist dazu
gedacht, einen Benutzer vom Starten eines einzelnen, speicherfressenden Prozesses abzuhalten, so
dass er sich nicht von dem Speicherfresser erholen kann (ihn beenden kann). Der Wert in dieser
Datei hat nur eine Auswirkung, wenn /proc/sys/vm/overcommit_memory auf 2 gesetzt ist (»niemals
Überbuchen«-Modus). In diesem Fall reserviert das System eine Speichermenge, die der kleinere Wert
aus [3% der aktuellen Prozessgröße, user_reserve_kbytes] ist.
Der Vorgabewert in dieser Datei ist der kleinere Wert aus [3% der freien Seiten, 128 MiB],
ausgedrückt in kiB.
Falls der Wert in dieser Datei auf Null gesetzt wird, darf ein Benutzer sämtlichen Speicher durch
einen einzelnen Prozess belegen (abzüglich der durch /proc/sys/vm/admin_reserve_kbytes
reservierten Menge). Alle nachfolgenden Versuche, einen Befehl auszuführen, führen dann zu »fork:
Cannot allocate memory«.
Die Änderung des Wertes in dieser Datei tritt in Kraft, wann immer eine Anwendung Speicher
anfordert.
/proc/sys/vm/unprivileged_userfaultfd (seit Linux 5.2)
Diese (schreibbare) Datei legt einen Schalter offen, der steuert, ob nicht privilegierten
Prozessen erlaubt wird, userfaultfd(2) einzusetzen. Falls diese Datei den Wert 1 enthält, dann
dürfen nicht privilegierte Prozesse userfaultfd(2) verwenden. Falls diese Datei den Wert 0
enthält, dann dürfen nur Prozesse, die über die Capability CAP_SYS_PTRACE verfügen, userfaultfd(2)
einsetzen. Der Vorgabewert in dieser Datei ist 1.
/proc/sysrq-trigger (seit Linux 2.4.21)
Wird ein Zeichen in diese Datei geschrieben, löst das die gleiche SysRq-Funktion aus wie die
Eingabe von ALT-SysRq-<Zeichen> (siehe die Beschreibung von /proc/sys/kernel/sysrq). Normalerweise
kann nur root in diese Datei schreiben. Weitere Informationen enthält die
Linux-Kernel-Quelltextdatei Documentation/admin-guide/sysrq.rst (oder Documentation/sysrq.txt vor
Linux 4.10).
/proc/sysvipc
Dieses Unterverzeichnis enthält die Pseudodateien msg, sem und shm. Diese Dateien listen die
aktuell im System befindlichen System-V-IPC-Objekte (IPC: Interprozess-Kommunikation), also
Nachrichtenschlangen, Semaphore und gemeinsam genutzter Speicher auf. Sie enthalten ähnliche
Informationen wie die, die mit ipcs(1) erhalten werden können. Diese Zeilen haben Kopfzeilen und
sind zwecks besserer Verständlichkeit formatiert (ein IPC-Objekt pro Zeile). sysvipc(7) bietet
weiteren Hintergrund zu den von diesen Dateien bereitgestellten Informationen.
/proc/thread-self (seit Linux 3.17)
Dieses Verzeichnis bezieht sich auf den Thread, der auf das /proc-Dateisystem zugreift und ist mit
dem /proc/self/task/TID-Verzeichnis identisch, das als Namen die Prozess-Thread-Nummer (TID)
dieses Threads hat.
/proc/timer_list (seit Linux 2.6.21)
Diese nur lesbare Datei enthält in einer Menschen-lesbaren Form eine Liste aller derzeit
anhängenden (hochauflösenden) Timer, aller Uhrereignis-Quellen und ihrer Parameter.
/proc/timer_stats (von Linux 2.6.21 bis Linux 4.10)
Dies ist eine Fehlersucheinrichtung, um Timer-(Miss)brauch in einem Linux-System für Kernel- und
Anwendungsentwickler sichtbar zu machen. Sie kann von Kernel- und Anwendungsentwicklern verwandt
werden, um zu überprüfen, dass ihr Code keinen ungebührlichen Gebrauch von Timern macht. Das Ziel
besteht darin, unnötige Aufwachaktionen zu vermeiden und damit die Leistungsaufnahme zu
optimieren.
Falls im Kernel (CONFIG_TIMER_STATS) aktiviert aber nicht verwandt, hat es fast keinen
Laufzeit-Zusatzaufwand und einen relativ kleinen Datenstruktur-Zusatzaufwand. Selbst falls die
Datensammlung zur Laufzeit aktiviert wird, ist der Zusatzaufwand klein: Alle Sperren erfolgen pro
CPU und das Nachschlagen erfolgt über einen Hash.
Die Datei /proc/timer_stats wird zum Steuern der Abtast-Einrichtung und zum Auslesen der
abgetasteten Informationen verwandt.
Die Funktionalität rtimer_stats ist beim Systemstart inaktiv. Eine Abtastperiode kann mittels des
folgenden Befehls gestartet werden:
# echo 1 > /proc/timer_stats
Der folgende Befehl beendet eine Abtastperiode:
# echo 0 > /proc/timer_stats
Die Statistiken können wie folgt ermittelt werden:
$ cat /proc/timer_stats
Während das Abtasten aktiviert ist, wird bei jedem Lesen aus /proc/timer_stats eine neu
aktualisierte Statistik gesehen. Sobald das Abtasten deaktiviert ist, wird die abgetastete
Information beibehalten, bis eine neue Abtastperiode begonnen wird. Dies erlaubt mehrfaches
Auslesen.
Beispielausgabe aus /proc/timer_stats:
$ cat /proc/timer_stats
Timer Stats Version: v0.3
Sample period: 1.764 s
Collection: active
255, 0 swapper/3 hrtimer_start_range_ns (tick_sched_timer)
71, 0 swapper/1 hrtimer_start_range_ns (tick_sched_timer)
58, 0 swapper/0 hrtimer_start_range_ns (tick_sched_timer)
4, 1694 gnome-shell mod_delayed_work_on (delayed_work_timer_fn)
17, 7 rcu_sched rcu_gp_kthread (process_timeout)
...
1, 4911 kworker/u16:0 mod_delayed_work_on (delayed_work_timer_fn)
1D, 2522 kworker/0:0 queue_delayed_work_on (delayed_work_timer_fn)
1029 total events, 583.333 events/sec
Die Ausgabespalten sind wie folgt:
[1] eine Anzahl der Ereignisse, optional (seit Linux 2.6.23) gefolgt von dem Buchstaben »D«,
falls dies ein aufschiebbarer Timer ist;
[2] die PID des Prozesses, die den Timer initialisierte,
[3] der Namen des Prozesses, der den Timer initialisierte,
[4] die Funktion, in der der Timer initialisiert wurde; und (in Klammern) die Callback-Funktion,
die diesem Timer zugeordnet ist.
Während des Linux-4.11-Entwicklungszyklus wurde diese Datei aufgrund von Sicherheitsbedenken
entfernt, da sie Informationen über Namensräume hinweg offenlegt. Desweiteren ist es möglich, die
gleichen Informationen über kernelinterne Nachverfolgungseinrichtungen wie Ftrace zu ermitteln.
/proc/tty
Unterverzeichnis mit Pseudodateien und -Unterverzeichnissen für tty-Treiber und »line
disciplines«.
/proc/uptime
Diese Datei enthält zwei Zahlen (Werte in Sekunden): die Laufzeit des Systems (einschließlich der
in Suspendierung verbrachten Zeit) und die Dauer, die im Leerlaufprozess verbracht wurde.
/proc/version
Diese Zeichenkette identifiziert den gerade laufenden Kernel. Er fasst die Inhalte von
/proc/sys/kernel/ostype, /proc/sys/kernel/osrelease und /proc/sys/kernel/version zusammen.
Beispielsweise:
Linux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994
/proc/vmstat (seit Linux 2.6.0)
Die Datei zeigt verschiedene Statistiken des virtuellen Speichers. Jede Zeile dieser Datei enthält
ein einzelnes Name-Wert-Paar, getrennt durch Leerzeichen. Einige Zeilen sind nur vorhanden, falls
der Kernel mit geeigneten Optionen konfiguriert wurde. (In einigen Fällen haben sich die Optionen
für bestimmte Dateien über Kernelversionen hinweg geändert, so dass sie hier nicht aufgeführt
sind. Details können durch Einsicht in den Kernelquellcode gefunden werden.) Die folgenden Felder
können vorhanden sein:
nr_free_pages (seit Linux 2.6.31)
nr_alloc_batch (seit Linux 3.12)
nr_inactive_anon (seit Linux 2.6.28)
nr_active_anon (seit Linux 2.6.28)
nr_inactive_file (seit Linux 2.6.28)
nr_active_file (seit Linux 2.6.28)
nr_unevictable (seit Linux 2.6.28)
nr_mlock (seit Linux 2.6.28)
nr_anon_pages (seit Linux 2.6.18)
nr_mapped (seit Linux 2.6.0)
nr_file_pages (seit Linux 2.6.18)
nr_dirty (seit Linux 2.6.0)
nr_writeback (seit Linux 2.6.0)
nr_slab_reclaimable (seit Linux 2.6.19)
nr_slab_unreclaimable (seit Linux 2.6.19)
nr_page_table_pages (seit Linux 2.6.0)
nr_kernel_stack (seit Linux 2.6.32)
Teil des Speichers, der Kernel-Stacks zugewiesen wurde.
nr_unstable (seit Linux 2.6.0)
nr_bounce (seit Linux 2.6.12)
nr_vmscan_write (seit Linux 2.6.19)
nr_vmscan_immediate_reclaim (seit Linux 3.2)
nr_writeback_temp (seit Linux 2.6.26)
nr_isolated_anon (seit Linux 2.6.32)
nr_isolated_file (seit Linux 2.6.32)
nr_shmem (seit Linux 2.6.32)
Durch Shmem und tmpfs(5) verwandte Seiten
nr_dirtied (seit Linux 2.6.37)
nr_written (seit Linux 2.6.37)
nr_pages_scanned (seit Linux 3.17)
numa_hit (seit Linux 2.6.18)
numa_miss (seit Linux 2.6.18)
numa_foreign (seit Linux 2.6.18)
numa_interleave (seit Linux 2.6.18)
numa_local (seit Linux 2.6.18)
numa_other (seit Linux 2.6.18)
workingset_refault (seit Linux 3.15)
workingset_activate (seit Linux 3.15)
workingset_nodereclaim (seit Linux 3.15)
nr_anon_transparent_hugepages (seit Linux 2.6.38)
nr_free_cma (seit Linux 3.7)
Anzahl an freien CMA- (Contiguous Memory Allocator) Seiten.
nr_dirty_threshold (seit Linux 2.6.37)
nr_dirty_background_threshold (seit Linux 2.6.37)
pgpgin (seit Linux 2.6.0)
pgpgout (seit Linux 2.6.0)
pswpin (seit Linux 2.6.0)
pswpout (seit Linux 2.6.0)
pgalloc_dma (seit Linux 2.6.5)
pgalloc_dma32 (seit Linux 2.6.16)
pgalloc_normal (seit Linux 2.6.5)
pgalloc_high (seit Linux 2.6.5)
pgalloc_movable (seit Linux 2.6.23)
pgfree (seit Linux 2.6.0)
pgactivate (seit Linux 2.6.0)
pgdeactivate (seit Linux 2.6.0)
pgfault (seit Linux 2.6.0)
pgmajfault (seit Linux 2.6.0)
pgrefill_dma (seit Linux 2.6.5)
pgrefill_dma32 (seit Linux 2.6.16)
pgrefill_normal (seit Linux 2.6.5)
pgrefill_high (seit Linux 2.6.5)
pgrefill_movable (seit Linux 2.6.23)
pgsteal_kswapd_dma (seit Linux 3.4)
pgsteal_kswapd_dma32 (seit Linux 3.4)
pgsteal_kswapd_normal (seit Linux 3.4)
pgsteal_kswapd_high (seit Linux 3.4)
pgsteal_kswapd_movable (seit Linux 3.4)
pgsteal_direct_dma
pgsteal_direct_dma32 (seit Linux 3.4)
pgsteal_direct_normal (seit Linux 3.4)
pgsteal_direct_high (seit Linux 3.4)
pgsteal_direct_movable (seit Linux 2.6.23)
pgscan_kswapd_dma
pgscan_kswapd_dma32 (seit Linux 2.6.16)
pgscan_kswapd_normal (seit Linux 2.6.5)
pgscan_kswapd_high
pgscan_kswapd_movable (seit Linux 2.6.23)
pgscan_direct_dma
pgscan_direct_dma32 (seit Linux 2.6.16)
pgscan_direct_normal
pgscan_direct_high
pgscan_direct_movable (seit Linux 2.6.23)
pgscan_direct_throttle (seit Linux 3.6)
zone_reclaim_failed (seit Linux 2.6.31)
pginodesteal (seit Linux 2.6.0)
slabs_scanned (seit Linux 2.6.5)
kswapd_inodesteal (seit Linux 2.6.0)
kswapd_low_wmark_hit_quickly (seit Linux 2.6.33)
kswapd_high_wmark_hit_quickly (seit Linux 2.6.33)
pageoutrun (seit Linux 2.6.0)
allocstall (seit Linux 2.6.0)
pgrotated (seit Linux 2.6.0)
drop_pagecache (seit Linux 3.15)
drop_slab (seit Linux 3.15)
numa_pte_updates (seit Linux 3.8)
numa_huge_pte_updates (seit Linux 3.13)
numa_hint_faults (seit Linux 3.8)
numa_hint_faults_local (seit Linux 3.8)
numa_pages_migrated (seit Linux 3.8)
pgmigrate_success (seit Linux 3.8)
pgmigrate_fail (seit Linux 3.8)
compact_migrate_scanned (seit Linux 3.8)
compact_free_scanned (seit Linux 3.8)
compact_isolated (seit Linux 3.8)
compact_stall (seit Linux 2.6.35)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
compact_fail (seit Linux 2.6.35)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
compact_success (seit Linux 2.6.35)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
htlb_buddy_alloc_success (seit Linux 2.6.26)
htlb_buddy_alloc_fail (seit Linux 2.6.26)
unevictable_pgs_culled (seit Linux 2.6.28)
unevictable_pgs_scanned (seit Linux 2.6.28)
unevictable_pgs_rescued (seit Linux 2.6.28)
unevictable_pgs_mlocked (seit Linux 2.6.28)
unevictable_pgs_munlocked (seit Linux 2.6.28)
unevictable_pgs_cleared (seit Linux 2.6.28)
unevictable_pgs_stranded (seit Linux 2.6.28)
thp_fault_alloc (seit Linux 2.6.39)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
thp_fault_fallback (seit Linux 2.6.39)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
thp_collapse_alloc (seit Linux 2.6.39)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
thp_collapse_alloc_failed (seit Linux 2.6.39)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
thp_split (seit Linux 2.6.39)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
thp_zero_page_alloc (seit Linux 3.8)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
thp_zero_page_alloc_failed (seit Linux 3.8)
Siehe die Kernel-Quelldatei Documentation/admin-guide/mm/transhuge.rst.
balloon_inflate (seit Linux 3.18)
balloon_deflate (seit Linux 3.18)
balloon_migrate (seit Linux 3.18)
nr_tlb_remote_flush (seit Linux 3.12)
nr_tlb_remote_flush_received (seit Linux 3.12)
nr_tlb_local_flush_all (seit Linux 3.12)
nr_tlb_local_flush_one (seit Linux 3.12)
vmacache_find_calls (seit Linux 3.16)
vmacache_find_hits (seit Linux 3.16)
vmacache_full_flushes (seit Linux 3.19)
/proc/zoneinfo (since Linux 2.6.13)
Diese Datei enthält Informationen über Speicherbereiche. Sie ist für die Analyse des Verhaltens
des virtuellen Speichers nützlich.
ANMERKUNGEN
Viele Dateien enthalten Zeichenketten (z. B. die Umgebung und die Befehlszeile), die im internen Format
dargestellt sind, wobei Unterfelder mit Nullbytes (»\0«) begrenzt werden. Beim Untersuchen dieser Dateien
werden Sie diese vielleicht besser lesbar finden, wenn Sie einen Befehl der folgenden Art zur Anzeige
verwenden:
$ cat Datei | tr '\000' '\n'
Diese Handbuchseite ist unvollständig, möglicherweise stellenweise ungenau und ein Beispiel für etwas,
das ständig überarbeitet werden muss.
SIEHE AUCH
cat(1), dmesg(1), find(1), free(1), htop(1), init(1), ps(1), pstree(1), tr(1), uptime(1), chroot(2),
mmap(2), readlink(2), syslog(2), slabinfo(5), sysfs(5), hier(7), namespaces(7), time(7), arp(8),
hdparm(8), ifconfig(8), lsmod(8), lspci(8), mount(8), netstat(8), procinfo(8), route(8), sysctl(8)
Die Linux-Kernelquelldateien: Documentation/filesystems/proc.rst,
Documentation/admin-guide/sysctl/fs.rst, Documentation/admin-guide/sysctl/kernel.rst,
Documentation/admin-guide/sysctl/net.rst und Documentation/admin-guide/sysctl/vm.rst.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Eberhard Schauer
<Martin.E.Schauer@gmx.de>, Dr. Tobias Quathamer <toddy@debian.org>, Chris Leick <c.leick@vollbio.de>,
Erik Pfannenstein <debianignatz@gmx.de> und Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die
Mailingliste der Übersetzer.
Linux man-pages 6.03 10. Februar 2023 proc(5)