proc - Pseudo-Dateisystem für Prozessinformationen
/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.
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
Task/[TID]. 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.
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 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 Kernel 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 NULL-Bytes ('\0'). Nach der letzten
Zeichenkette folgt noch ein NULL-Byte.
- 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 Null-Byte) 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
NULL-Bytes ('\0') getrennt, am Ende der Liste kann ebenfalls ein NULL-Byte
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 des
Einhängepunktes 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:
- 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 Kernel 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 Kernel 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 Kernel Version 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.
- 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ängepunkte
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 der Elterneinhängepunkt 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ängepunkte, die außerhalb des Wurzelverzeichnisses des
Prozesses liegen, nicht in mountinfo angezeigt werden). Als
Sonderfall bei diesem Punkt kann der Wurzeleinhängungspunkt dieses
Prozesses eine Elterneinhängung (für das
Initramfs-Dateisystem) haben, der außerhalb des
Wurzelverzeichnisses des Prozesses liegt, und ein Eintrag für
diesen Einhängepunkt 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.txt 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 Kernel-Version 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ängepunkte 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 Kernel 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…57 (seit Linux 3.11)
- Null
- 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ängepunkte 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]/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
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 - könnte lesen
mw - könne schreiben
me - könnte ausführen
ms - könnte gemeinsam
gd - Stack-Segment wächst abwärts
pf - reiner PFN-Bereich
dw - Schreiben in 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 - Bereich, der beim Fork nicht kopiert werden soll
de - beim neu Mappen Bereich nicht vergrößern
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 - nicht-lineares Mapping (in Linux 4.0 entfernt)
ar - architekturabhängiger Schalter
wf - Beim Fork bereinigen (seit Linux 4.14)
dd - Bereich nicht in den Kernspeicherauszug einschließen
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 NULL-Bytes) 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 (Linux 2.6.33 to 3.13 only)
- W
- Aufwachend (nur Linux 2.6.33 bis 3.13)
- P
- Geparkt (nur Linux 3.9 bis 3.13)
- (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 Kernel 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 Kernel 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
Kerneln vor Linux 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 NULL-Bytes) 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.
- 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.
- Größe des residenten anonymen Speichers. (seit Linux 4.5).
Dieser Wert ist ungenau; siehe /proc/[PID]/statm weiter oben.
- Größe von residenten Datei-Mappings. (seit Linux 4.5).
Dieser Wert ist ungenau; siehe /proc/[PID]/statm weiter oben.
- 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 Kernel-interne 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, /proc/[PID]/gid_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 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/iostats.txt 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
Kernel 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:
- (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 Kernel 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)
- This is the total amount of memory currently available to be allocated on
the system, expressed in kilobytes. This limit is adhered to only if
strict overcommit accounting is enabled (mode 2 in
/proc/sys/vm/overcommit_memory). The limit is calculated according
to the formula described under /proc/sys/vm/overcommit_memory. For
further details, see the kernel source file
Documentation/vm/overcommit-accounting.rst.
- Committed_AS
%lu
- Die derzeit im System belegte Speichermenge. Der gebundene
(»commited«) 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) belegt, aber nur 300 MB davon
anrührt, wird mit 300 MB an Speicher angezeigt, selbst wenn er
einen Adressraum für das gesamte 1 GB belegt hat.
- This 1 GB is memory which has been "committed" to by the VM and
can be used at any time by the allocating application. With strict
overcommit enabled on the system (mode 2 in
/proc/sys/vm/overcommit_memory), allocations which would exceed the
CommitLimit will not be permitted. This is useful if one needs to
guarantee that processes will not fail due to lack of memory once that
memory has been successfully allocated.
- 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
der Sammlung der großen Speicherseiten.
- HugePages_Free
%lu
- (CONFIG_HUGETLB_PAGE wird benötigt.) Die Anzahl der
großen Speicherseiten in der Sammlung, 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 der Sammlung 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 der Sammlung 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 der Sammlung 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 Kernel 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ängepunkte 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.txt (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:
- 1.
- 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.
- 2.
- 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.
- 3.
- 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 (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 (2.6.31
aufwärts).
- /proc/swaps
- Genutzte Auslagerungsbereiche; siehe auch swapon(8).
- /proc/sys
- Dieses Verzeichnis (vorhanden seit 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« eingeschlossen 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.txt 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 Kernel 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 Kerneln 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 Kerneln 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.
- The default value in this file is the minimum of [3% of free pages, 8MiB]
expressed as KiB. The default is intended to provide enough for the
superuser to log in and kill a process, if necessary, under the default
overcommit 'guess' mode (i.e., 0 in
/proc/sys/vm/overcommit_memory).
- Systems running in "overcommit never" mode (i.e., 2 in
/proc/sys/vm/overcommit_memory) should increase the value in this
file to account for the full virtual memory size of the programs used to
recover (e.g., login(1) ssh(1), and top(1))
Otherwise, the superuser may not be able to log in to recover the system.
For example, on x86-64 a suitable value is 131072 (128MiB reserved).
- 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/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)
- This writable file provides an alternative to
/proc/sys/vm/overcommit_ratio for controlling the
CommitLimit when /proc/sys/vm/overcommit_memory has the
value 2. It allows the amount of memory overcommitting to be specified as
an absolute value (in kB), rather than as a percentage, as is done with
overcommit_ratio. This allows for finer-grained control of
CommitLimit on systems with extremely large memory sizes.
- 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: heuristic overcommit (this is the default)
1: always overcommit, never check
2: always check, never overcommit
- 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. In Linux-Kernelversionen vor 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)
- This writable file defines a percentage by which memory can be
overcommitted. The default value in the file is 50. See the description of
/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)
- Specifies an amount of memory (in KiB) to reserve for user processes. This
is intended to prevent a user from starting a single memory hogging
process, such that they cannot recover (kill the hog). The value in this
file has an effect only when /proc/sys/vm/overcommit_memory is set
to 2 ("overcommit never" mode). In this case, the system
reserves an amount of memory that is the minimum of [3% of current process
size, user_reserve_kbytes].
- 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 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:
- eine Anzahl der Ereignisse, optional (seit Linux 2.6.23) gefolgt von dem
Buchstaben »D«, falls dies ein aufschiebbarer Timer
ist;
- die PID des Prozesses, die den Timer initialisierte,
- der Namen des Prozesses, der den Timer initialisierte,
- die Funktion, in der der Timer initalisiert 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:
- /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.
Viele Dateien enthalten Zeichenketten (z. B. die Umgebung und die
Befehlszeile), die im internen Format dargestellt sind, wobei Unterfelder
mit NULL-Bytes (›\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.
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.txt,
Documentation/sysctl/fs.txt, Documentation/sysctl/kernel.txt,
Documentation/sysctl/net.txt und
Documentation/sysctl/vm.txt.
Diese Seite ist Teil der Veröffentlichung 5.10 des Projekts
Linux-man-pages. Eine Beschreibung des Projekts, Informationen, wie
Fehler gemeldet werden können sowie die aktuelle Version dieser Seite
finden sich unter https://www.kernel.org/doc/man-pages/.
Ü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.