BEZEICHNUNG¶
proc - Pseudo-Dateisystem für Prozessinformationen
BESCHREIBUNG¶
/proc ist ein Pseudo-Dateisystem. Es dient als Schnittstelle zu den
Kernel-Datenstrukturen und wird gewöhnlich unter
/proc
eingehängt. Die meisten Einträge sind nur lesbar, einige Dateien
erlauben aber auch das Verändern der Kernel-Variablen.
Die folgende Liste beschreibt viele der Dateien und Verzeichnisse unter der
Hierachie
/prco:
- /proc/[PID]
- Für jeden laufenden Prozess gibt es ein numerisches
Unterverzeichnis, dessen Nummer der Prozesskennung (PID) entspricht. In
jedem dieser Unterverzeichnisse gibt es die folgenden Pseudo-Dateien und
-Verzeichnisse.
- /proc/[PID]/auxv (seit 2.6.0-test7)
- 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-ID plus ein unsigned long-Wert
für jeden Eintrag. Der letzte Eintrag enthält zwei Nullen.
Siehe auch getauxval(3).
- /proc/[PID]/cgroup (seit Linux 2.6.24)
- This file describes control groups to which the process/task belongs. For
each cgroup hierarchy there is one entry containing colon-separated fields
of the form:
5:cpuacct,cpu,cpuset:/daemons
- Die Doppelpunkt-getrennten Felder sind, von links nach rechts:
- 1.
- ID-Zahl der Hierarchie
- 2.
- Gruppe der Untersysteme, die an die Hierarchie gebunden sind
- 3.
- control group in the hierarchy to which the process belongs
- Diese Datei ist nur vorhanden, wenn die Kernel-Konfigurationsoption
CONFIG_CGROUPS aktiviert ist.
- /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)
- Reset the PG_Referenced and ACCESSED/YOUNG bits for all the pages
associated with the process. (Before kernel 2.6.32, writing any nonzero
value to this file had this effect.)
- 2 (seit Linux 2.6.32)
- Reset the PG_Referenced and ACCESSED/YOUNG bits for all anonymous pages
associated with the process.
- 3 (seit Linux 2.6.32)
- Reset the PG_Referenced and ACCESSED/YOUNG bits for all file-mapped pages
associated with the process.
- Clearing the PG_Referenced and ACCESSED/YOUNG bits provides a method to
measure approximately how much memory a process is using. One first
inspects the values in the "Referenced" fields for the VMAs
shown in /proc/[pid]/smaps to get an idea of the memory footprint
of the process. One then clears the PG_Referenced and ACCESSED/YOUNG bits
and, after some measured time interval, once again inspects the values in
the "Referenced" fields to get an idea of the change in memory
footprint of the process during the measured interval. If one is
interested only in inspecting the selected mapping types, then the value 2
or 3 can be used instead of 1.
Ein weiterer Wert kann geschrieben werden, um ein anderes Bit zu
beeinflussen:
- 4 (seit Linux 3.11)
- Clear the soft-dirty bit for all the pages associated with the process.
This is used (in conjunction with /proc/[pid]/pagemap) by the
check-point restore system to discover which pages of a process have been
dirtied since the file /proc/[pid]/clear_refs was written to.
- 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.
- /proc/[PID]/comm (seit Linux 2.6.33)
- This file exposes the process's comm value—that is, the
command name associated with the process. Different threads in the same
process may have different comm values, accessible via
/proc/[pid]/task/[tid]/comm. A thread may modify its comm
value, or that of any of other thread in the same thread group (see the
discussion of CLONE_THREAD in clone(2)), by writing to the
file /proc/self/task/[tid]/comm. Strings longer than
TASK_COMM_LEN (16) characters are silently truncated.
This file provides a superset of the prctl(2) PR_SET_NAME and
PR_GET_NAME operations, and is employed by
pthread_setname_np(3) when used to rename threads other than the
caller.
- /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; /bin/pwd
Beachten Sie, dass der Befehl pwd häufig in die Shell
eingebaut ist (shell built-in) und daher möglicherweise nicht
ordnungsgemäß funktioniert. Mit der bash(1)
können Sie pwd -P verwenden.
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)).
- /proc/[PID]/environ
- Diese Datei enthält die Prozess-Umgebung. 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:
$ strings /proc/1/environ
- /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. 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)).
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.
For file descriptors for pipes and sockets, the entries will be symbolic
links whose content is the file type with the inode. A readlink(2)
call on this file returns a string in the format:
Typ:[Inode]
For example, socket:[2248868] will be a socket and its inode is
2248868. For sockets, that inode can be used to find more information in
one of the files under /proc/net/.
For file descriptors that have no corresponding inode (e.g., file
descriptors produced by epoll_create(2), eventfd(2),
inotify_init(2), signalfd(2), and timerfd(2)), the
entry will be a symbolic link with contents of the form
anon_inode:<Dateityp>
In einigen Fällen wird Dateityp durch eckige Klammern
eingeschlossen.
For example, an epoll file descriptor will have a symbolic link whose
content is the string anon_inode:[eventpoll].
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
/proc/[PID]/fd 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 ...
- /proc/[PID]/fdinfo/ (seit Linux 2.6.22)
- In diesem Unterverzeichnis stehen die Dateideskriptoren aller von diesem
Prozess geöffneten Dateien. Der Inhalt jeder Datei kann gelesen
werden, um Informationen über den entsprechenden Dateideskriptor zu
bekommen, z.B.:
$ cat /proc/12015/fdinfo/4
pos: 1000
flags: 01002002
Das pos-Feld ist eine Dezimalzahl, die die aktuelle Position in der
Datei (file offset) angibt. Das flags-Feld ist eine Oktalzahl, die
den Zugriffsmodus und die Status-Flags der Datei angibt (siehe
open(2)).
Die Dateien in diesem Verzeichnis können nur vom Eigentümer
des Prozesses gelesen werden.
- /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)
- The number of bytes which this task has caused to be read from storage.
This is simply the sum of bytes which this process passed to
read(2) and similar system calls. It includes things such as
terminal I/O and is unaffected by whether or not actual physical disk I/O
was required (the read might have been satisfied from pagecache).
- wchar: characters written (geschriebene Zeichen)
- The number of bytes which this task has caused, or shall cause to be
written to disk. Similar caveats apply here as with rchar.
- syscr: Syscalls lesen
- Attempt to count the number of read I/O operations—that is, system
calls such as read(2) and pread(2).
- syscw: Syscalls schreiben
- Attempt to count the number of write I/O operations—that is, system
calls such as write(2) and pwrite(2).
- read_bytes: bytes read (gelesene Bytes)
- Attempt to count the number of bytes which this process really did cause
to be fetched from the storage layer. This is accurate for block-backed
filesystems.
- 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:
- The big inaccuracy here is truncate. If a process writes 1MB to a file and
then deletes the file, it will in fact perform no writeout. But it will
have been accounted as having caused 1MB of write. In other words: this
field represents the number of bytes which this process caused to not
happen, by truncating pagecache. A task can cause "negative" I/O
too. If this task truncates some dirty pagecache, some I/O which another
task has been accounted for (in its write_bytes) will not be
happening.
- Note: In the current implementation, things are a bit racy on
32-bit systems: if process A reads process B's /proc/[pid]/io while
process B is updating one of these 64-bit counters, process A could see an
intermediate result.
- /proc/[PID]/gid_map (seit Linux 3.5)
- Siehe die Beschreibung von /proc/[PID]/uid_map.
- /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)
- This subdirectory contains entries corresponding to memory-mapped files
(see mmap(2)). Entries are named by memory region start and end
address pair (expressed as hexadecimal numbers), and are symbolic links to
the mapped files themselves. Here is an example, with the output wrapped
and reformatted to fit on an 80-column display:
$ ls -l /proc/self/map_files/
lr--------. 1 root root 64 Apr 16 21:31
3252e00000-3252e20000 -> /usr/lib64/ld-2.15.so
…
Although these entries are present for memory regions that were mapped with
the MAP_FILE flag, the way anonymous shared memory (regions created
with the MAP_ANON | MAP_SHARED flags) is implemented in Linux means
that such regions also appear on this directory. Here is an example where
the target file is the deleted /dev/zero one:
lrw-------. 1 root root 64 Apr 16 21:33
7fc075d2f000-7fc075e6f000 -> /dev/zero (deleted)
Dieses Verzeichnis erscheint nur, falls die Kernel-Konfigurationsoption
CONFIG_CHECKPOINT_RESTORE aktiviert ist.
- /proc/[PID]/maps
- Eine Datei mit den derzeit eingeblendeten Speicherbereichen und ihren
Zugriffsrechten. Lesen Sie mmap(2) für weitere Informationen
über Speichereinblendungen.
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]
The address field is the address space in the process that the
mapping occupies. The perms field is a set of permissions:
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).
The pathname field will usually be the file that is backing the
mapping. For ELF files, you can easily coordinate with the offset
field by looking at the Offset field in the ELF program headers (
readelf -l).
Es gibt zusätzliche, hilfreiche Pseudo-Pfade:
- [stack]
- The initial process's (also known as the main thread's) stack.
- [stack:<tid>] (seit Linux 3.4)
- A thread's stack (where the <tid> is a thread ID). It
corresponds to the /proc/[pid]/task/[tid]/ path.
- [vdso]
- The virtual dynamically linked shared object.
- [heap]
- The process's heap.
- If the pathname field is blank, this is an anonymous mapping as
obtained via the mmap(2) function. There is no easy way to
coordinate this back to a process's source, short of running it through
gdb(1), strace(1), or similar.
Unter Linux 2.0 gibt es kein Feld, das den Pfadnamen angibt.
- /proc/[PID]/mem
- Diese Datei kann genutzt werden, auf die Speicherseiten des Prozesses
mittels open(2), read(2) und lseek(2)
zuzugreifen.
- /proc/[PID]/mountinfo (seit Linux 2.6.26)
- Diese Datei enthält Informationen über Einhängepunkte
(mount points). Sie enthält Zeilen der 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)
- Mount-ID: eindeutige Identifikation für dieses Einhängen
(kann nach umount(2) erneut verwendet werden).
- (2)
- parent ID: ID of parent mount (or of self for the top of the mount
tree).
- (3)
- Major:Minor: Wert von st_dev für Dateien im Dateisystem
(siehe stat(2)).
- (4)
- Wurzel: Wurzel des Mounts innerhalb des Dateisystems.
- (5)
- Einhängepunkt: Einhängepunkt (mount point) relativ zur
Prozesswurzel.
- (6)
- Mount-Optionen: individuelle Mount-Optionen.
- (7)
- Optionale Felder: ein oder mehrere Felder der Form
»Bezeichnung[:Wert]«.
- (8)
- Trennzeichen: markiert das Ende der optionalen Felder.
- (9)
- Dateisystemtyp: Name des Dateisystems im Format
»Typ[.Untertyp]«.
- (10)
- Einhänge-Ursprung: dateisystemspezifische Informationen oder
»none«.
- (11)
- Super-Optionen: individuelle Superblock-Optionen.
- Analyseprogramme sollten alle nicht erkannten optionalen Felder
ignorieren. Derzeit sind die möglichen optionalen Felder:
- shared:X
- Der Mount wird von der Peer-Gruppe X gemeinsam genutzt.
- master:X
- Der Mount ist »Sklave« der Peer-Gruppe X.
- propagate_from:X
- Der Mount ist Sklave und erhält Übertragungen von
Peer-Gruppe X (*).
- unbindable
- Der Mount kann nicht verknüpft (an anderer Stelle
eingehängt) werden.
- (*) X ist die nächste dominante Peer-Gruppe unter der
Prozess-Wurzel. Falls X der unmittelbare Meister des Mounts ist oder wenn
es unter der gleichen Wurzel keine dominante Peer-Gruppe gibt, ist nur das
Feld »Master: X« vorhanden und nicht das
»propagate_from: X«-Feld.
Weitere Informationen zur Übertragung von Mounts finden Sie in
Documentation/filesystems/sharedsubtree.txt im
Linux-Kernel-Quelltext.
- /proc/[PID]/mounts (seit Linux 2.4.19)
- This is a list of all the filesystems currently mounted in the process's
mount namespace. The format of this file is documented in fstab(5).
Since kernel version 2.6.15, this file is pollable: after opening the file
for reading, a change in this file (i.e., a filesystem mount or unmount)
causes select(2) to mark the file descriptor as readable, and
poll(2) and epoll_wait(2) mark the file as having an error
condition. See namespaces(7) for more information.
- /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. Zeilen in dieser Datei haben die folgende
Form:
device /dev/sda7 mounted on /home with fstype ext3 [statistics]
( 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.
Siehe namespaces(7) für weitere Informationen.
- /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 den Wert anzupassen, anhand dessen
Prozesse bei Speichermangel (out-of-memory, OOM) abgebrochen werden. Der
Kernel verwendet diesen Wert für eine Bit-Shift-Operation 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 Speichermangel deaktiviert. Ein positiver Wert
erhöht die Wahrscheinlichkeit, dass der Prozess vom
»OOM-Killer« abgebrochen wird, ein negativer Wert senkt die
Wahrscheinlichkeit.
- Der Standardwert für diese Datei ist 0. Ein neuer Prozess erbt die
Einstellung oom_adj von seinen Eltern. Ein Prozess musss
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 der
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 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)
(+);
- *
- ob der Prozess privilegiert ist (-); 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)
- This file can be used to adjust the badness heuristic used to select which
process gets killed in out-of-memory conditions.
The badness heuristic assigns a value to each candidate task ranging from 0
(never kill) to 1000 (always kill) to determine which process is targeted.
The units are roughly a proportion along that range of allowed memory the
process may allocate from, based on an estimation of its current memory
and swap use. For example, if a task is using all allowed memory, its
badness score will be 1000. If it is using half of its allowed memory, its
score will be 500.
There is an additional factor included in the badness score: root processes
are given 3% extra memory over other tasks.
The amount of "allowed" memory depends on the context in which the
OOM-killer was called. If it is due to the memory assigned to the
allocating task's cpuset being exhausted, the allowed memory represents
the set of mems assigned to that cpuset (see cpuset(7)). If it is
due to a mempolicy's node(s) being exhausted, the allowed memory
represents the set of mempolicy nodes. If it is due to a memory limit (or
swap limit) being reached, the allowed memory is that configured limit.
Finally, if it is due to the entire system being out of memory, the
allowed memory represents all allocatable resources.
The value of oom_score_adj is added to the badness score before it is
used to determine which task to kill. Acceptable values range from -1000
(OOM_SCORE_ADJ_MIN) to +1000 (OOM_SCORE_ADJ_MAX). This allows user space
to control the preference for OOM-killing, ranging from always preferring
a certain task or completely disabling it from OOM killing. The lowest
possible value, -1000, is equivalent to disabling OOM-killing entirely for
that task, since it will always report a badness score of 0.
Consequently, it is very simple for user space to define the amount of
memory to consider for each task. Setting a oom_score_adj value of
+500, for example, is roughly equivalent to allowing the remainder of
tasks sharing the same system, cpuset, mempolicy, or memory controller
resources to use at least 50% more memory. A value of -500, on the other
hand, would be roughly equivalent to discounting 50% of the task's allowed
memory from being considered as scoring against the task.
For backward compatibility with previous kernels, /proc/[pid]/oom_adj
can still be used to tune the badness score. Its value is scaled linearly
with 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.
- /proc/[PID]/pagemap (seit Linux 2.6.25)
- This file shows the mapping of each of the process's virtual pages into
physical page frames or swap area. It contains one 64-bit value for each
virtual page, with the bits set as follows:
- 63
- Falls gesetzt ist die Seite im RAM
- 62
- If set, the page is in swap space
- 61 (seit Linux 3.5)
- The page is a file-mapped page or a shared anonymous page.
- 60-56 (seit Linux 3.11)
- Null
- 55 (seit Linux 3.11)
- PTE is soft-dirty (see the kernel source file
Documentation/vm/soft-dirty.txt).
- 54-0
- If the page is present in RAM (bit 63), then these bits provide the page
frame number, which can be used to index /proc/kpageflags and
/proc/kpagecount. If the page is present in swap (bit 62), then
bits 4-0 give the swap type, and bits 54-5 encode the swap offset.
- Vor Linux 3.11 wurden die Bits 60-55 dazu verwandt, den Logarithmus (in
der Basis 2) der Seitengröße zu halten.
- To employ /proc/[pid]/pagemap efficiently, use
/proc/[pid]/maps to determine which areas of memory are actually
mapped and seek to skip over unmapped regions.
- Die Datei /proc/[PID]/pagemap ist nur vorhanden, wenn die
Kernel-Konfigurationsoption CONFIG_PROC_PAGE_MONITOR aktiviert
ist.
- /proc/[PID]/personality (seit Linux 2.6.28)
- This read-only file exposes the process's execution domain, as set by
personality(2). The value is displayed in hexadecimal
notation.
- /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 Root-Verzeichnis des Prozesses weist, und verhält sich wie
es auch exe und fd/* tun.
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)).
- /proc/[PID]/smaps (seit Linux 2.6.14)
- This file shows memory consumption for each of the process's mappings.
(The pmap(1) command displays similar information, in a form that
may be easier for parsing.) For each mapping there is a series of lines
such as the following:
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
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
The first of these lines shows the same information as is displayed for the
mapping in /proc/[pid]/maps. The remaining lines show the size of
the mapping, the amount of the mapping that is currently resident in RAM
("Rss"), the process' proportional share of this mapping
("Pss"), the number of clean and dirty shared pages in the
mapping, and the number of clean and dirty private pages in the mapping.
"Referenced" indicates the amount of memory currently marked as
referenced or accessed. "Anonymous" shows the amount of memory
that does not belong to any file. "Swap" shows how much
would-be-anonymous memory is also used, but out on swap.
The "KernelPageSize" entry is the page size used by the kernel to
back a VMA. This matches the size used by the MMU in the majority of
cases. However, one counter-example occurs on PPC64 kernels whereby a
kernel using 64K as a base page size may still use 4K pages for the MMU on
older processors. To distinguish, this patch reports
"MMUPageSize" as the page size used by the MMU.
The "Locked" indicates whether the mapping is locked in memory or
not.
"VmFlags" field represents the kernel flags associated with the
particular virtual memory area in two letter encoded manner. The codes are
the following:
rd - readable
wr - writable
ex - executable
sh - shared
mr - may read
mw - may write
me - may execute
ms - may share
gd - stack segment grows down
pf - pure PFN range
dw - disabled write to the mapped file
lo - pages are locked in memory
io - memory mapped I/O area
sr - sequential read advise provided
rr - random read advise provided
dc - do not copy area on fork
de - do not expand area on remapping
ac - area is accountable
nr - swap space is not reserved for the area
ht - area uses huge tlb pages
nl - non-linear mapping
ar - architecture specific flag
dd - do not include area into core dump
sd - soft-dirty flag
mm - mixed map area
hg - huge page advise flag
nh - no-huge page advise flag
mg - mergeable advise flag
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)
- This file provides a symbolic trace of the function calls in this
process's kernel stack. This file is provided only if the kernel was built
with the CONFIG_STACKTRACE configuration option.
- /proc/[PID]/stat
- Statusinformationen des Prozesses. Wird von ps(1) benutzt. Sie
werden in Kernelquelldatei fs/proc/array.c definiert.
Die Felder in ihrer Reihenfolge mit den richtigen
scanf(3)-Formatbezeichnern:
- (1) PID %d
-
Die Prozess-Identifikation.
- (2) comm %s
- Der Name der ausführbaren Datei, in Klammern, sichtbar
unabhängig vom Swap-Status des Programms.
- (3) state %c
- Eines der folgenden Zeichen zur Angabe des Prozesszustandes:
- R
- Laufend
- S
- Sleeping in an interruptible wait
- D
- Waiting in uninterruptible disk sleep
- Z
- Zombie
- T
- Stopped (on a signal) or (before Linux 2.6.33) trace stopped
- t
- Tracing stop (Linux 2.6.33 onward)
- W
- Paging (only before 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
- Waking (Linux 2.6.33 to 3.13 only)
- P
- Parked (Linux 3.9 to 3.13 only)
- (4) ppid %d
- Die Prozess-ID des Elternprozesses dieses Prozesses.
- (5) pgrp %d
- Die Prozess-Gruppen-ID des Prozesses.
- (6) session %d
- Die Sitzungs-ID 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 ID 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.
- (1) minflt %lu
- The number of minor faults the process has made which have not required
loading a memory page from disk.
- (11) cminflt %lu
- The number of minor faults that the process's waited-for children have
made.
- (12) majflt %lu
- The number of major faults the process has made which have required
loading a memory page from disk.
- (13) cmajflt %lu
- The number of major faults that the process's waited-for children have
made.
- (14) utime %lu
- Amount of time that this process has been scheduled in user mode, measured
in clock ticks (divide by sysconf(_SC_CLK_TCK)). This includes
guest time, guest_time (time spent running a virtual CPU, see
below), so that applications that are not aware of the guest time field do
not lose that time from their calculations.
- (15) stime %lu
- Gesamtzeit, die dieser Prozess im Kernel-Modus verbracht hat, gemessen in
»clock ticks« (dividieren Sie durch
sysconf(_SC_CLK_TCK)).
- (16) cutime %ld
- Gesamtzeit, die abgewartete Kindprozesse im User-Modus verbracht haben,
gemessen in »clock 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 »clock 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 das ist 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-Bereich 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 Intervalltimers
ein SIGALRM gesendet wird. Seit Kernel 2.6.17 wird dieses Feld
nicht mehr gewartet und wird mit 0 hartkodiert.
- (22) starttime %llu
- The time the process started after system boot. In kernels before Linux
2.6, this value was expressed in jiffies. Since Linux 2.6, the value is
expressed in clock ticks (divide by 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.
- (25) rsslim %lu
- Aktuelle weiche Grenze für die RSS des Prozesses; siehe die
Beschreibung von RLIMIT_RSS in getrlimit(2).
- (26) startcode %lu
- Die Adresse, oberhalb derer Programmtext ausgeführt werden
kann.
- (27) endcode %lu
- Die Adresse, unterhalb derer Programmtext ausgeführt werden
kann.
- (28) startstack %lu
- Die Startadresse des Stacks (also der »Boden«).
- (29) kstkesp %lu
- Derzeitiger Wert von ESP (Stack Pointer), wie er in der Kernel-Stack-Seite
für diesen Prozess steht.
- (30) kstkeip %lu
- 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
- This is the "channel" in which the process is waiting. It is the
address of a location in the kernel where the process is sleeping. The
corresponding symbolic name can be found in /proc/[pid]/wchan.
- (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 die Eltern 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-Strategie (siehe sched_setscheduler(2)). Dekodieren 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 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
»clock ticks« (dividieren Sie durch
sysconf(_SC_CLK_TCK)).
- (44) cguest_time %ld (seit Linux 2.6.24)
- Gastzeit der Kindprozesse des Prozesses, gemessen in »clock
ticks« (dividieren Sie durch sysconf(_SC_CLK_TCK)).
- (45) start_data %lu (seit Linux 3.3)
- Adresse, oberhalb derer die initialisierten und nicht-initialisierten
Programmdaten (BSS) abgelegt werden.
- (46) end_data %lu (seit Linux 3.3)
- Adresse, unterhalb derer die initialisierten und nicht-initialisierten
Programmdaten (BSS) abgelegt werden.
- (47) start_brk %lu (seit Linux 3.3)
- Address above which program heap can be expanded with brk(2).
- (48) arg_start %lu (seit Linux 3.5)
- Adresse, oberhalb derer die Befehlszeilenargumente (argv) abgelegt
werden.
- (49) arg_end %lu (seit Linux 3.5)
- Adresse, unterhalb derer die Befehlszeilenargumente (argv) abgelegt
werden.
- (50) env_start %lu (seit Linux 3.5)
- Adresse, oberhalb derer die Programmumgebung abgelegt wird.
- (51) env_end %lu (seit Linux 3.5)
- Adresse, unterhalb derer die Programmumgebung abgelegt wird.
- (52) exit_code %d (seit Linux 3.5)
- The thread's exit status in the form reported by waitpid(2).
- /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) gemeinsame Seiten (d.h. dateigestützte)
Text (4) Text (Code)
Bibliothek (5) Bibliothek (in Linux 2.6 nicht verwendet)
Daten (6) Daten + Stack
geändert (7) geänderte Seiten (dirty) (in Linux 2.6
nicht verwendet)
- /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
State: S (sleeping)
Tgid: 3515
Pid: 3515
PPid: 3452
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 100 100 100 100
FDSize: 256
Groups: 16 33 100
VmPeak: 9136 kB
VmSize: 7896 kB
VmLck: 0 kB
VmHWM: 7572 kB
VmRSS: 6316 kB
VmData: 5224 kB
VmStk: 88 kB
VmExe: 572 kB
VmLib: 1708 kB
VmPTE: 20 kB
Threads: 1
SigQ: 0/3067
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
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.
- *
- State: aktueller Prozesszustand; einer der Werte »R
(running)«, »S (sleeping)«, »D (disk
sleep)«, »T (stopped)«, »T (tracing
stop)«, »Z (zombie)« oder »X
(dead)«.
- *
- Tgid: Gruppen-ID des Threads (d.h. die Prozess-ID).
- *
- PID: Thread-ID (siehe gettid(2)).
- *
- PPid: PID des Elternprozesses.
- *
- TracerPid: PID des Prozesses, der diesen Prozess beobachtet (0 ohne
Beobachtung).
- *
- Uid, Gid: Reale, effektive, die gespeicherte und gesicherte
sowie Dateisystem-UIDs (GIDs).
- *
- FDSize: Anzahl der aktuell bereitgestellten
Dateideskriptor-Slots.
- *
- Groups: ergänzende Gruppenliste.
- *
- VmPeak: Maximalwert des genutzten virtuellen Speichers.
- *
- VmSize: Größe des virtuellen Speichers.
- *
- VmLck: Größe des gesperrten Speichers (siehe
mlock(3)).
- *
- VmHWM: Maximalwert der Resident Set Size
(»Hochwassermarke«).
- *
- VmRSS: Resident Set Size.
- *
- VmData, VmStk, VmExe: Größe der Daten-,
Stack und Text-Segmente.
- *
- VmLib: Code-Größe von Laufzeitbibliotheken.
- *
- VmPTE: Größe der Einträge in der Page Table
(seit Linux 2.6.10).
- *
- 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 Benutzer-ID des Prozesses beziehen. Die erste davon ist die Anzahl
der derzeit in der Warteschlange befindlichen Signale für diese
reale Benutzer-ID 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: Anzahl der insgesamt für Thread und
Prozess anstehenden Signale (siehe pthreads(7) und
signal(7)).
- *
- SigBlk, SigIgn, SigCgt: Masken für die Anzeige
blockierter, ignorierter und abgefangener Signale (see
signal(7)).
- *
- CapInh, CapPrm, CapEff: In den veerbbaren, erlaubten
und effektiven Capability-Mengen aktivierte Masken (siehe
capabilities(7)).
- *
- CapBnd: Capability-Begrenzungsmenge (seit Linux 2.6.26, siehe
capabilities(7)).
- *
- Cpus_allowed: 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 Letzte, 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)
- This file exposes the system call number and argument registers for the
system call currently being executed by the process, followed by the
values of the stack pointer and program counter registers. The values of
all six argument registers are exposed, although most system calls use
fewer registers.
If the process is blocked, but not in a system call, then the file displays
-1 in place of the system call number, followed by just the values of the
stack pointer and program counter. If process is not blocked, then file
contains just the string "running".
Diese Datei ist nur vorhanden, falls der Kernel mit
CONFIG_HAVE_ARCH_TRACEHOOK konfiguriert wurde.
- /proc/[PID]/task (seit Linux 2.6.0-test6)
- Dieses Verzeichnis enthält ein Unterverzeichnis für jeden
Thread in dem Prozess. Der Name jedes Unterverzeichnis ist die numerische
Thread-ID ([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 übergeordneten Verzeichnis
/proc/[PID] (z.B. in einem Multithread-Prozess werden
task/[tid]/cwd-Dateien den gleichen Wert wie die Datei
task/pid/cwd im übergeordneten Verzeichnis 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).
In einem Multithread-Prozess ist der Inhalt des Verzeichnisses
/proc/[PID]/task nicht mehr verfügbar, wenn der Haupt-Thread
schon beendet ist (typischerweise durch einen Aufruf von
pthread_exit(3))."
- /proc/[PID]/uid_map, /proc/[PID]/gid_map (seit Linux
3.5)
- These files expose the mappings for user and group IDs inside the user
namespace for the process pid. The description here explains the
details for uid_map; gid_map is exactly the same, but each
instance of "user ID" is replaced by "group ID".
The uid_map file exposes the mapping of user IDs from the user
namespace of the process pid to the user namespace of the process
that opened uid_map (but see a qualification to this point below).
In other words, processes that are in different user namespaces will
potentially see different values when reading from a particular
uid_map file, depending on the user ID mappings for the user
namespaces of the reading processes.
Each line in the file specifies a 1-to-1 mapping of a range of contiguous
between two user namespaces. The specification in each line takes the form
of three numbers delimited by white space. The first two numbers specify
the starting user ID in each user namespace. The third number specifies
the length of the mapped range. In detail, the fields are interpreted as
follows:
- (1)
- The start of the range of user IDs in the user namespace of the process
pid.
- (2)
- The start of the range of user IDs to which the user IDs specified by
field one map. How field two is interpreted depends on whether the process
that opened uid_map and the process pid are in the same user
namespace, as follows:
- a)
- If the two processes are in different user namespaces: field two is the
start of a range of user IDs in the user namespace of the process that
opened uid_map.
- b)
- If the two processes are in the same user namespace: field two is the
start of the range of user IDs in the parent user namespace of the process
pid. (The "parent user namespace" is the user namespace
of the process that created a user namespace via a call to
unshare(2) or clone(2) with the CLONE_NEWUSER flag.)
This case enables the opener of uid_map (the common case here is
opening /proc/self/uid_map) to see the mapping of user IDs into the
user namespace of the process that created this user namespace.
- (3)
- The length of the range of user IDs that is mapped between the two user
namespaces.
- After the creation of a new user namespace, the uid_map file may be
written to exactly once to specify the mapping of user IDs in the new user
namespace. (An attempt to write more than once to the file fails with the
error EPERM.)
- Die in uid_map geschriebenen Zeilen müssen den folgenden
Regeln genügen:
- *
- Die drei Felder müssen gültige Zahlen sein und das letzte
Feld muss größer als 0 sein.
- *
- Zeilen werden durch Zeilenumbruchzeichen beendet.
- *
- Es gibt eine (willkürliche) Begrenzung der Zeilenanzahl in der
Datei. Unter Linux 3.8 beträgt diese Begrenzung fünf
Zeilen.
- *
- The range of user IDs specified in each line cannot overlap with the
ranges in any other lines. In the current implementation (Linux 3.8), this
requirement is satisfied by a simplistic implementation that imposes the
further requirement that the values in both field 1 and field 2 of
successive lines must be in ascending numerical order.
- Schreibversuche, die die obigen Regeln verletzen, schlagen mit
EINVAL fehl.
Damit ein Prozess in die Datei /proc/[PID]/uid_map (
/proc/[PID]/gid_map)) schreiben kann, müssen die folgenden
Anforderungen erfüllt sein:
- *
- Der Prozess muss über die Capability CAP_SETUID
(CAP_SETGID) im Benutzernamensraum des Prozesses PID
verfügen.
- *
- Der Prozess muss über die Capability CAP_SETUID
(CAP_SETGID) im Elternnamensraum verfügen.
- *
- Der Prozess muss sich entweder im Benutzernamensraum des Prozesses
PID oder innerhalb des Eltern-Benutzernamensraums des Prozesses
PID befinden.
Für weitere Details lesen Sie
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.
- /proc/apm
- Version von »advanced power management« und Informationen
zur Batterie, wenn bei der Kompilierung des Kernels CONFIG_APM
definiert wird.
- /proc/buddyinfo
- This file contains information which is used for diagnosing memory
fragmentation issues. Each line starts with the identification of the node
and the name of the zone which together identify a memory region This is
then followed by the count of available chunks of a certain order in which
these zones are split. The size in bytes of a certain order is given by
the formual:
(2^order) * PAGE_SIZE
The binary buddy allocator algorithm inside the kernel will split one chunk
into two chunks of a smaller order (thus with half the size) or combine
two contiguous chunks into one larger chunk of a higher order (thus with
double the size) to satisfy allocation requests and to counter memory
fragmentation. The order matches the column number, when starting to count
at zero.
For example on a x86_64 system:
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 this example, there is one node containing three zones and there are 11
different chunk sizes. If the page size is 4 kilobyteis, then the first
zone called DMA (on x86 the first 16 megabyte of memory) has 1
chunk of 4 kilobytes (order 0) available and has 3 chunks of 4 megabytes
(order 10) available.
If the memory is heavily fragmentated, the counters for higher order chunks
will be zero and allocation of large contiguous areas will fail.
Further information about the zones can be found in
/proc/zoneinfo.
- /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/[PID]/timers (seit Linux 3.10)
- A list of the POSIX timers for this process. Each timer is listed with a
line that started with the string "ID:". For example:
ID: 1
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 0
ID: 0
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 1
The lines shown for each timer have the following meanings:
- ID
- The ID for this timer. This is not the same as the timer ID returned by
timer_create(2); rather, it is the same kernel-internal ID that is
available via the si_timerid field of the siginfo_t
structure (see sigaction(2)).
- signal
- This is the signal number that this timer uses to deliver notifications
followed by a slash, and then the sigev_value.sival_ptr value
supplied to the signal handler. Valid only for timers that notify via a
signal.
- notify
- The part before the slash specifies the mechanism that this timer uses to
deliver notifications, and is one of "thread",
"signal", or "none". Immediately following the slash
is either the string "tid" for timers with
SIGEV_THREAD_ID notification, or "pid" for timers that
notify by other mechanisms. Following the "." is the PID of the
process that will be delivered a signal if the timer delivers
notifications via a signal.
- ClockID
- This field identifies the clock that the timer uses for measuring time.
For most clocks, this is a number that matches one of the user-space
CLOCK_* constants exposed via <time.h>.
CLOCK_PROCESS_CPUTIME_ID timers display with a value of -6 in this
field. CLOCK_THREAD_CPUTIME_ID timers display with a value of -2 in
this field.
- /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/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/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
»disk device«. 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
- List of the execution domains (ABI personalities).
- /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
- Contains subdirectories that in turn contain files with information about
(certain) mounted filesystems.
- /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 Geräteeinstellungen
smart_thresholds hexadezimal
smart_values 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-Speicherbelegung 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 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 Debugsymbolen ( /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 4KB.
- /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/kpagecount (seit Linux 2.6.25)
- This file contains a 64-bit count of the number of times each physical
page frame is mapped, indexed by page frame number (see the discussion of
/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)
- This file contains 64-bit masks corresponding to each physical page frame;
it is indexed by page frame number (see the discussion of
/proc/[pid]/pagemap). The bits are as follows:
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)
16 - 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)
Für weitere Details zur Bedeutung dieser Bits lesen Sie die
Kernelquelldatei Documentation/vm/pagemap.txt. 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 sei 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 aktuell gesperrte (flock(2) und fcntl(2))
sowie freigegebene Dateien an ( fcntl(2)).
- /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
- This file reports statistics about memory usage on the system. It is used
by free(1) to report the amount of free and used memory (both
physical and swap) on the system as well as the shared memory and buffers
used by the kernel. Each line of the file consists of a parameter name,
followed by a colon, the value of the parameter, and an option unit of
measurement (e.g., "kB"). The list below describes the parameter
names and the format specifier required to read the field value. Except as
noted below, all of the fields have been present since at least Linux
2.6.0. Some fields are displayed only if the kernel was configured with
various options; those dependencies are noted in the list.
- 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.
- Buffers %lu
- Relativ temporärer Speicher für rohe Diskblöcke, der
nicht besonders groß werden sollte (20 MB oder so).
- Cached %lu
- In-memory cache for files read from the disk (the page cache). Doesn't
include SwapCached.
- SwapCached %lu
- Memory that once was swapped out, is swapped back in but still also is in
the swap file. (If memory pressure is high, these pages don't need to be
swapped out again because they are already in the swap file. This saves
I/O.)
- Active %lu
- Memory that has been used more recently and usually not reclaimed unless
absolutely necessary.
- Inactive %lu
- Memory which has been less recently used. It is more eligible to be
reclaimed for other purposes.
- 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
- (Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.) Total
amount of highmem. Highmem is all memory above ~860MB of physical memory.
Highmem areas are for use by user-space programs, or for the page cache.
The kernel must use tricks to access this memory, making it slower to
access than lowmem.
- HighFree %lu
- (Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.) Amount of
free highmem.
- LowTotal %lu
- (Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.) Total
amount of lowmem. Lowmem is memory which can be used for everything that
highmem can be used for, but it is also available for the kernel's use for
its own data structures. Among many other things, it is where everything
from Slab is allocated. Bad things happen when you're out of
lowmem.
- LowFree %lu
- (Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.) Amount of
free lowmem.
- MmapCopy %lu (seit Linux 2.6.29)
- (CONFIG_MMU ist notwendig.) [Muss noch dokumentiert werden.]
- SwapTotal %lu
- Total amount of swap space available.
- SwapFree %lu
- Amount of swap space that is currently unused.
- Dirty %lu
- Memory which is waiting to get written back to the disk.
- Writeback %lu
- Memory which is actively being written back to the disk.
- AnonPages %lu (seit Linux 2.6.18)
- Non-file backed pages mapped into user-space page tables.
- Mapped %lu
- Files which have been mapped into memory (with mmap(2)), such as
libraries.
- Shmem %lu (seit Linux 2.6.32)
- [Muss noch dokumentiert werden.]
- Slab %lu
- In-kernel data structures cache.
- SReclaimable %lu (seit Linux 2.6.19)
- Part of Slab, that might be reclaimed, such as caches.
- SUnreclaim %lu (seit Linux 2.6.19)
- Part of Slab, that cannot be reclaimed on memory pressure.
- KernelStack %lu (seit Linux 2.6.32)
- Amount of memory allocated to kernel stacks.
- PageTables %lu (seit Linux 2.6.18)
- Amount of memory dedicated to the lowest level of page tables.
- Quicklists %lu (seit Linux 2.6.27)
- (CONFIG_QUICKLIST ist notwendig.) [Muss noch dokumentiert
werden.]
- NFS_Unstable %lu (seit Linux 2.6.18)
- NFS pages sent to the server, but not yet committed to stable
storage.
- Bounce %lu (seit Linux 2.6.18)
- Memory used for block device "bounce buffers".
- WritebackTmp %lu (seit Linux 2.6.26)
- Memory used by FUSE for temporary writeback buffers.
- 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.
- Committed_AS %lu
- The amount of memory presently allocated on the system. The committed
memory is a sum of all of the memory which has been allocated by
processes, even if it has not been "used" by them as of yet. A
process which allocates 1GB of memory (using malloc(3) or similar),
but touches only 300MB of that memory will show up as using only 300MB of
memory even if it has the address space allocated for the entire 1GB.
This 1GB 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 IR /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
- Total size of vmalloc memory area.
- VmallocUsed %lu
- Amount of vmalloc area which is used.
- VmallocChunk %lu
- Largest contiguous block of vmalloc area which is free.
- HardwareCorrupted %lu (seit Linux 2.6.32)
- (CONFIG_MEMORY_FAILURE ist notwendig.) [Muss noch dokumentiert
werden.]
- AnonHugePages %lu (seit Linux 2.6.38)
- (CONFIG_TRANSPARENT_HUGEPAGE is required.) Non-file backed huge
pages mapped into user-space page tables.
- HugePages_Total %lu
- (CONFIG_HUGETLB_PAGE is required.) The size of the pool of huge
pages.
- HugePages_Free %lu
- (CONFIG_HUGETLB_PAGE is required.) The number of huge pages in the
pool that are not yet allocated.
- HugePages_Rsvd %lu (seit Linux 2.6.17)
- (CONFIG_HUGETLB_PAGE is required.) This is the number of huge pages
for which a commitment to allocate from the pool has been made, but no
allocation has yet been made. These reserved huge pages guarantee that an
application will be able to allocate a huge page from the pool of huge
pages at fault time.
- HugePages_Surp %lu (seit Linux 2.6.24)
- (CONFIG_HUGETLB_PAGE is required.) This is the number of huge pages
in the pool above the value in /proc/sys/vm/nr_hugepages. The
maximum number of surplus huge pages is controlled by
/proc/sys/vm/nr_overcommit_hugepages.
- Hugepagesize %lu
- (CONFIG_HUGETLB_PAGE is required.) The size of huge pages.
- /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 akuell im System
eingehängten Dateisysteme. Mit der Einführung der
prozesseigenen Mount-Namensräume in Linux 2.4.19 wurde diese Datei
ein Link auf /proc/self/mounts, die die Einhängepunkte des
prozesseigenen Mount-Namensraums auflistet. Das Format dieser Datei wird
in fstab(5) dokumentiert.
- /proc/mtrr
- Die Memory Type Range Register, Details siehe die Linux-Kernel-Quelldatei
Documentation/mtrr.txt.
- /proc/net
- Verschiedene Pseudodateien, die alle den Zustand bestimmter Teile der
Netzwerkschicht darstellen. 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.
- /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 nach RFC 826. Die
Flags sind die internen Schalter der ARP-Struktur (siehe
/usr/include/linux/if_arp.h) und »HW address« zeigt
die physikalische Schicht 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« werden verwendet wie
bei RAW (s.w.o.). 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 UPD-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« werden verwendet wie
bei RAW (s.w.o.). 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 Path
0: 00000002 00000000 00000000 0001 03
1: 00000001 00000000 00010000 0001 01 /dev/printer
Darin steht »Num« steht für Slot-Nummer in der
Kernel-Tabelle, »RefCount« ist die Anzahl der Benutzer des
Sockets, »Protocol« ist derzeit immer 0, Flags
repräsentieren die internen Kernel-Flags den Status des Sockets.
»Type« ist zur Zeit immer 1 (Unix Domain Datagram Sockets
werden noch nicht vom Kernel unterstützt). »St« ist
der interne Zustand des Sockets und »Path« ist (wenn
vorhanden) der zugehörige Pfad.
- /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)
- This file is present only if the kernel was booted with the
profile=1 command-line option. It exposes kernel profiling
information in a binary format for use by readprofile(1). Writing
(e.g., an empty string) to this file resets the profiling counters; on
some architectures, writing a binary integer "profiling
multiplier" of size sizeof(int) sets the profiling interrupt
frequency.
- /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
aus-zuschalten.
- /proc/scsi/scsi
- Dies ist eine Liste aller SCSI-Geräte, die dem Kernel bekannt sind.
Sie ähnelt der, die man beim Hochfahren des Rechners sieht. 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 können Bus-Sperren (bus lockups) kontrolliert werden,
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 zu Kernel-Caches. Seit Linux 2.6.16 existiert diese Datei
nur, wenn die Kernel-Konfigurationsoption CONFIG_SLAB gesetzt wird.
Die Spalten in /proc/slabinfo sind:
cache-name
num-active-objs
total-objs
object-size
num-active-slabs
total-slabs
num-pages-per-slab
Siehe slabinfo(5) für Details.
- /proc/stat
- Von der Architektur abhängige Kernel- und Systemstatistiken.
Gebräuchliche Einträge sind:
- cpu 3357 0 4313 1362393
- Die Zeitdauer (gemessen in USER_HZ, auf den meisten Architekturen
Hundertstelsekunden, ermitteln Sie den richtigen Wert mit
sysconf(_SC_CLK_TCK)), die das System in verschiedenen Stati
verbracht hat:
- user
- (1) Time spent in user mode.
- nice
- (2) Time spent in user mode with low priority (nice).
- system
- (3) Time spent in system mode.
- idle
- (4) Time spent in the idle task. This value should be USER_HZ times the
second entry in the /proc/uptime pseudo-file.
- iowait (seit Linux 2.5.41)
- (5) Time waiting for I/O to complete.
- irq (seit Linux 2.6.0-test4)
- (6) Time servicing interrupts.
- softirq (seit Linux 2.6.0-test4)
- (7) Time servicing softirqs.
- 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) Time spent running a niced guest (virtual CPU for guest operating
systems under the control of the Linux kernel).
- 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 Auslagerungs-Seiten, die hereingeholt und herausgebracht
wurden.
- intr 1462898
- This line shows counts of interrupts serviced since boot time, for each of
the possible system interrupts. The first column is the total of all
interrupts serviced including unnumbered architecture specific interrupts;
each subsequent column is the total for that particular numbered
interrupt. Unnumbered interrupts are not shown, only summed into the
total.
- 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 Systemstart, 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).
- /proc/swaps
- Genutzte Swap-Bereiche; 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 manchmal auch mittels des
/proc-Dateisystems oder des (missbilligten) Systemaufrufs
sysctl(2) geändert werden.
- /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/binfmt_misc
- Dokumentation für Dateien in diesem Verzeichnis kann in den
Linux-Kernelquellen in Documentation/binfmt_misc.txt 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 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
Quota-Einträgen für die Festplatte. Auf einigen
(2.4)-Systemen ist sie nicht vorhanden. Wenn die Anzahl der freien
Festplatten-Quota-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
Disk-Quota-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 Anzahl offener Dateien
für alle Prozesse fest. (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 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
Die Kernel-Konstante NR_OPEN bestimmt eine obere Grenze für
den Wert, der in file-max geschrieben werden darf.
Ein privilegierter Prozess ( CAP_SYS_ADMIN) kann die Begrenzung
file-max außer Kraft setzen.
- /proc/sys/fs/file-nr
- This (read-only) file contains three numbers: the number of allocated file
handles (i.e., the number of files presently opened); the number of free
file handles; and the maximum number of file handles (i.e., the same value
as /proc/sys/fs/file-max). If the number of allocated file handles
is close to the maximum, you should consider increasing the maximum.
Before Linux 2.6, the kernel allocated file handles dynamically, but it
didn't free them again. Instead the free file handles were kept in a list
for reallocation; the "free file handles" value indicates the
size of that list. A large number of free file handles indicates that
there was a past peak in the usage of open file handles. Since Linux 2.6,
the kernel does deallocate freed file handles, and the "free file
handles" value is always zero.
- /proc/sys/fs/inode-max (nur vorhanden bis Linux 2.2)
- 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
- This file contains seven numbers: nr_inodes, nr_free_inodes,
preshrink, and four dummy values (always zero).
nr_inodes is the number of inodes the system has allocated.
nr_free_inodes represents the number of free inodes.
preshrink is nonzero when the nr_inodes > inode-max
and the system needs to prune the inode list instead of allocating more;
since Linux 2.4, this field is a dummy value (always zero).
- /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 »file lease« (
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 den Lease nicht entfernt oder
herabstuft, wird der Kernel das Lease zwangsweise
zurückziehen.
- /proc/sys/fs/leases-enable
- Mit dieser Datei können »file leases«
(fcntl(2)) systemweit aktiviert oder deaktiviert werden. Wenn diese
Datei den Wert 0 enthällt, werden Leases deaktiviert. Ein Wert
ungleich null aktiviert leases.
- /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/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)
- Der Wert in dieser Datei definiert eine obere Grenze für die
Anhebung der Kapazität einer Pipeline mit der
fcntl(2)-Operation F_SETPIPE_SZ Betrieb. Diese Grenze gilt
nur für nicht privilegierte Prozesse. Der Standardwert für
diese Datei ist 1.048.576. Der an dieser Datei zugewiesene Wert kann nach
oben gerundet werden, um den tatsächlich für eine bequeme
Implementierung genutzten Wert zu reflektieren. Um den aufgerundeten Wert
zu bestimmen, geben Sie den Inhalt dieser Datei aus, nachdem Sie ihr einen
Wert zugewiesen haben. Der kleinste Wert, der dieser Datei zugeordnet
werden kann, ist die Seitengröße des Systems.
- /proc/sys/fs/protected_hardlinks (seit Linux 3.6)
- When the value in this file is 0, no restrictions are placed on the
creation of hard links (i.e., this is the historical behavior before Linux
3.6). When the value in this file is 1, a hard link can be created to a
target file only if one of the following conditions is true:
- *
- Der Aufrufende hat die Capability CAP_FOWNER.
- *
- The filesystem UID of the process creating the link matches the owner
(UID) of the target file (as described in credentials(7), a
process's filesystem UID is normally the same as its effective UID).
- *
- Alle der folgenden Bedingungen sind wahr:
- •
- das Ziel ist eine reguläre Datei;
- •
- the target file does not have its set-user-ID permission bit enabled;
- •
- the target file does not have both its set-group-ID and group-executable
permission bits enabled; and
- •
- the caller has permission to read and write the target file (either via
the file's permissions mask or because it has suitable capabilities).
- The default value in this file is 0. Setting the value to 1 prevents a
longstanding class of security issues caused by hard-link-based
time-of-check, time-of-use races, most commonly seen in world-writable
directories such as /tmp. The common method of exploiting this flaw
is to cross privilege boundaries when following a given hard link (i.e., a
root process follows a hard link created by another user). Additionally,
on systems without separated partitions, this stops unauthorized users
from "pinning" vulnerable set-user-ID and set-group-ID files
against being upgraded by the administrator, or linking to special
files.
- /proc/sys/fs/protected_symlinks (seit Linux 3.6)
- When the value in this file is 0, no restrictions are placed on following
symbolic links (i.e., this is the historical behavior before Linux 3.6).
When the value in this file is 1, symbolic links are followed only in the
following circumstances:
- *
- the filesystem UID of the process following the link matches the owner
(UID) of the symbolic link (as described in credentials(7), a
process's filesystem UID is normally the same as its effective UID);
- *
- the link is not in a sticky world-writable directory; or
- *
- the symbolic link and its parent directory have the same owner (UID)
- A system call that fails to follow a symbolic link because of the above
restrictions returns the error EACCES in errno.
- The default value in this file is 0. Setting the value to 1 avoids a
longstanding class of security issues based on time-of-check, time-of-use
races when accessing symbolic links.
- /proc/sys/fs/suid_dumpable (seit Linux 2.6.13)
- Der Wert in dieser Datei legt fest, ob Kernspeicherabzüge
(Core-Dump-Dateien) für Set-User-ID-Programme oder anderweitig
geschützte/besondere Binärprogramme erzeugt werden. Drei
verschiedene Integer-Werte können angegeben werden:
- 0 (Standard)
- 0 (Standard) Das bewirkt das traditionelle Verhalten (vor
Linux 2.6.13). Ein Core-Dump wird nicht erzeugt für Prozesse, 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 Core-Dump aus, wenn möglich. Der
Core-Dump trägt die Benutzer-Kennung (UID) des erzeugenden Prozess,
es gibt keine Sicherheitsprüfungen. Dies ist nur für die
Fehlersuche im System gedacht. Ptrace ist deaktiviert.
- 2 (»suidsafe«)
- 2 (»suidsafe«) Für alle Programme,
für die normalerweise kein Dump erzeugt würde (siehe
»0« oben), wird ein nur für root lesbarer Dump
erzeugt. Dadurch kann der Benutzer die Core-Dump-Datei entfernen, sie aber
nicht lesen. Aus Sicherheitsgründen überschreiben Core-Dumps
in diesem Modus keine anderen Dumps oder Dateien. Dieser Modus eignet
sich, wenn Administratoeren Probleme in einer normalen Umgebung
untersuchen.
- Additionally, since Linux 3.6, /proc/sys/kernel/core_pattern must
either be an absolute pathname or a pipe command, as detailed in
core(5). Warnings will be written to the kernel log if
core_pattern does not follow these rules, and no core dump will be
produced.
- /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
- Diese Date 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 Percent 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/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_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(8)-Programm weitergeleitet, um einen
ordnungsgemäßen Neustart auszulösen. Wenn der Wert
größer als Null ist, wird Linux' Reaktion auf einen
vulkanischen Nervengriff™ ein sofortiger Neustart sein, ohne auch
nur seine schmutzige 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)
- The value in this file determines who can see kernel syslog contents. A
value of 0 in this file imposes no restrictions. If the value is 1, only
privileged users can read the kernel syslog. (See syslog(2) for
more details.) Since Linux 3.4, only users with the CAP_SYS_ADMIN
capability may change the value in this file.
- /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 hat den
Rechnernamen »darkstar« und den DNS-Domainnamen (Internet
Domain Name Server) »frop.org«, der nicht mit den
Domainnamen von NIS (Network Information Service) oder YP (Gelbe Seiten)
verwechselt werden dürfen.. Diese beiden Domainnamen sind in der
Regel anders aus. Für eine ausführliche Diskussion siehe die
Handbuchseite hostname(1).
- /proc/sys/kernel/hotplug
- Diese Datei enthält den Pfad für das Programm zur Umsetzung
der »Hotplug«-Richtlinie. Der Standardwert in dieser Datei
ist /sbin/hotplug.
- /proc/sys/kernel/htab-reclaim
- (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/kptr_restrict (seit Linux 2.6.38)
- The value in this file determines whether kernel addresses are exposed via
/proc files and other interfaces. A value of 0 in this file imposes
no restrictions. If the value is 1, kernel pointers printed using the
%pK format specifier will be replaced with zeros unless the user
has the CAP_SYSLOG capability. If the value is 2, kernel pointers
printed using the %pK format specifier will be replaced with zeros
regardless of the user's capabilities. The initial default value for this
file was 1, but the default was changed to 0 in Linux 2.6.39. Since Linux
3.4, only users with the CAP_SYS_ADMIN capability can change the
value in this file.
- /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 Pfad zum Programm, dass 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).
- /proc/sys/kernel/modules_disabled (seit Linux 2.6.31)
- A toggle value indicating if modules are allowed to be loaded in an
otherwise modular kernel. This toggle defaults to off (0), but can be set
true (1). Once true, modules can be neither loaded nor unloaded, and the
toggle cannot be set back to false. The file is present only if the kernel
is built with the CONFIG_MODULES option enabled.
- /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.
- /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)
- This is a read-only file that displays the upper limit on the number of a
process's group memberships.
- /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)
- This file specifies the value at which PIDs wrap around (i.e., the value
in this file is one greater than the maximum PID). PIDs greater than this
value are not allocated; thus, the value in this file also acts as a
system-wide limit on the total number of processes and threads. The
default value for this file, 32768, results in the same range of PIDs as
on earlier kernels. On 32-bit platforms, 32768 is the maximum value for
pid_max. On 64-bit systems, pid_max can be set to any value
up to 2^22 ( PID_MAX_LIMIT, approximately 4 million).
- /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/real-root-dev
- Diese Datei wird in der Linux-Kernel-Quelldatei
Documentation/initrd.txt beschrieben.
- /proc/sys/kernel/reboot-cmd (nur Sparc)
- Diese Datei scheint ein 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/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/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 optimieren, 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)
- If this file is set to 1, all System V shared memory segments will be
marked for destruction as soon as the number of attached processes falls
to zero; in other words, it is no longer possible to create shared memory
segments that exist independently of any attached process.
- The effect is as though a shmctl(2) IPC_RMID is performed on
all existing segments as well as all segments created in the future (until
this file is reset to 0). Note that existing segments that are attached to
no process will be immediately destroyed when this file is set to 1.
Setting this option will also destroy segments that were created, but
never attached, upon termination of the process that created the segment
with shmget(2).
- Setting this file to 1 provides a way of ensuring that all System V shared
memory segments are counted against the resource usage and resource limits
(see the description of RLIMIT_AS in getrlimit(2)) of at
least one process.
- Because setting this file to 1 produces behavior that is nonstandard and
could also break existing applications, the default value in this file is
0. Only set this file to 1 if you have a good understanding of the
semantics of the applications using System V shared memory on your
system.
- /proc/sys/kernel/shmall (seit Linux 2.2)
- Diese Datei enthält die systemweite Grenze für die
Gesamtzahl der Seiten im »System V shared memory«.
- /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 1GB unterstützt. Dieser Wert ist per
Vorgabe SHMMAX.
- /proc/sys/kernel/shmmni (seit Linux 2.4)
- Diese Datei spezifiert die systemweite maximale Anzahl von gemeinsam
genutzten System-V-Speichersegmenten, die erzeugt werden
können.
- /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 der notwendig).
Mögliche Werte in dieser Datei sind:
0 - sysrqvollständig deaktivieren
1 - alle Funktionen von sysrq aktivieren
>1 - Maske erlaubter sysrq-Funktionen, im Einzelnen:
2 - aktiviert die Steuerung der Konsolen-
Protokollierung
4 - aktiviert die Steuerung der Tastatur (SAK, »unraw«)
8 - aktiviert Speicherauszüge (dumps) von Prozessen
zur Fehlersuche
16 - aktiviert den sync-Befehl
32 - aktiviert nur lesbares, erneutes Einhängen
64 - aktiviert den Versand von Signalen an Prozesse
(term, kill, oom-kill)
128 - erlaubt Neustart/Ausschalten
256 - erlaubt den Zugriff von nice auf alle Echtzeit-Tasks
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/sysrq.txt.
- /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. Die anschließende Zeit 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 (Tasks) fest, die erstellt werden dürfen.
- /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 Netzwerkkrams. Erkärungen
für einige der Dateien in diesem Verzeichnis finden Sie in
tcp(7) and ip(7).
- /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/vm
- Dieses Verzeichnis enthält Dateien für die Optimierung der
Speicherverwaltung und die Verwaltung der Puffer und Caches
(Zwischenspeicher).
- /proc/sys/vm/drop_caches (seit Linux 2.6.16)
- Writing to this file causes the kernel to drop clean caches, dentries, and
inodes from memory, causing that memory to become free. This can be useful
for memory management testing and performing reproducible filesystem
benchmarks. Because writing to this file causes the benefits of caching to
be lost, it can degrade overall system performance.
To free pagecache, use:
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes, use:
echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes, use:
echo 3 > /proc/sys/vm/drop_caches
Because writing to this file is a nondestructive operation and dirty objects
are not freeable, the user should run sync(1) first.
- /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 eingeblendet ist, sobald der Fehler erkannt
wird. Beachten Sie, dass dies nicht für ein einige spezielle Seiten
wie kernel-intern zugewiesene Daten oder der Swap-Zwischenspeicher
unterstützt wird, es funktioniert aber für die Mehrheit der
Anwenderseiten.
- 0:
- Nur die beschädigte Seite aus allen Prozesse ausblenden und nur
Prozesse töten, die darauf zugreifen wollen.
- 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 Möglichkeit ist nur auf Archtitekturen/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 eine systemweiten Dump der Tasks (ohne Kernel-Threads),
wenn der Kernel bei Speicherknappheit Prozesse abbricht (OOM-killing). Der
Dump enthält die folgenden Informationen für jede Task
(Thread, Prozess): Thread-ID, reale Benutzer-ID, Thread-Gruppen-ID
(Prozess-ID), Größe des virtuellen Speichers,
Größe des Resident Set, die CPU, auf der die Task 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 ausgeschickt wurde und um die
schurkische Task zu identifizieren.
Ist der Wert in der Datei Null, wird diese Information unterdrückt.
Auf sehr großen Systemen mit Tausenden von Tasks wird es kaum
praktikabel sein, für alle Tasks den Speicherstatus auszugeben.
Solche Systeme sollten nicht gezwungen werden, bei Speicherknappheit
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 ein speichergierige Task ins Jenseits
schickt.
Der Standardwert ist 0.
- /proc/sys/vm/oom_kill_allocating_task (seit Linux 2.6.24)
- Dies aktiviert oder deaktiviert bei Speicherknappheit die
OOM-auslösende Task.
Ist der Wert null, wertet der OOM-Killer die gesamte Taskliste aus und
wählt heuristisch eine Task als Opfer aus. Normalerweise
wählt er einen speichergierigen Schurken aus, dessen Tod sehr viel
Speicher freigibt.
Ist der Wert ungleich Null, beseitigt der OOM-Killer die Task, die 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.
Only one of overcommit_kbytes or overcommit_ratio can have an
effect: if overcommit_kbytes has a nonzero value, then it is used
to calculate CommitLimit, otherwise overcommit_ratio is
used. Writing a value to either of these files causes the value in the
other file to be set to zero.
- /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: immer Overcommit, niemals prüfen
2: immer prüfen, niemals 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. Unter Linux 2.4 impliziert jeder Wert ungleich null Modus 1.
In Modus 2 (verfügbar seit Linux 2.6) wid der allozierbare 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 is the amount of memory set aside for huge
pages;
- *
- overcommit_ratio ist der Wert aus
/proc/sys/vm/overcommit_ratio
- *
- total_swap is the amount of swap space.
- For example, on a system with 16GB of physical RAM, 16GB of swap, no space
dedicated to huge pages, and an overcommit_ratio of 50, this
formula yields a CommitLimit of 24GB.
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
- /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 Panic bei Speicherknappheit
Wenn diese Datei auf den Wert 0 gesetzt wird, wird der OOM-Killer des
Kernels sich einen Schurken schnappen und liquidieren. Normalerweise
findet er ein geeignetes Opfer 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
erreichen einen Speichererschöpfungs-Zustand, 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 Speichermangel leiden.
Wenn diese Datei schon auf den Wert 2 gesetzt ist, wird bei
Speicherknappheit immer eine Kernel Panic 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/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 gibt die
Linux-Kernel-Quelltextdatei Documentation/sysrq.txt.
- /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). svipc(7) bietet weiteren Hintergrund zu den von diesen
Dateien bereitgestellten Informationen.
- /proc/timer_list (seit Linux 2.6.21)
- This read-only file exposes a list of all currently pending
(high-resolution) timers, all clock-event sources, and their parameters in
a human-readable form.
- /proc/timer_stats (seit Linux 2.6.21)
- This is a debugging facility to make timer (ab)use in a Linux system
visible to kernel and user-space developers. It can be used by kernel and
user-space developers to verify that their code does not make undue use of
timers. The goal is to avoid unnecessary wakeups, thereby optimizing power
consumption.
If enabled in the kernel ( CONFIG_TIMER_STATS), but not used, it has
almost zero runtime overhead and a relatively small data-structure
overhead. Even if collection is enabled at runtime, overhead is low: all
the locking is per-CPU and lookup is hashed.
The /proc/timer_stats file is used both to control sampling facility
and to read out the sampled information.
The timer_stats functionality is inactive on bootup. A sampling period can
be started using the following command:
# echo 1 > /proc/timer_stats
The following command stops a sampling period:
# echo 0 > /proc/timer_stats
Die Statistiken können wie folgt ermittelt werden:
$ cat /proc/timer_stats
While sampling is enabled, each readout from /proc/timer_stats will
see newly updated statistics. Once sampling is disabled, the sampled
information is kept until a new sample period is started. This allows
multiple readouts.
Sample output from /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:
- *
- a count of the number of events, optionally (since Linux 2.6.23) followed
by the letter 'D' if this is a deferrable timer;
- *
- the PID of the process that initialized the timer;
- *
- the name of the process that initialized the timer;
- *
- the function where the timer was initialized; and
- *
- (in parentheses) the callback function that is associated with the
timer.
- /proc/tty
- Unterverzeichnis mit Pseudodateien und -Unterverzeichnissen für
tty-Treiber und »line disciplines«.
- /proc/uptime
- This file contains two numbers: the uptime of the system (seconds), and
the amount of time spent in idle process (seconds).
- /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)
- Diese Datei zeigt verschiedene Statistiken zum virtuellen Speicher.
- /proc/zoneinfo (since Linux 2.6.13)
- Diese Datei enthält Informationen über Speicherbereiche. Sie
ist nützlich für die Analyse des Verhaltens des virtuellen
Speichers.
ANMERKUNGEN¶
Viele Zeichenketten (z. B. die Umgebung und die Befehlszeile) sind im internen
Format dargestellt, Unterfelder werden mit Null-Bytes ('\0') begrenzt. Sie
werden diese vielleicht besser lesbar finden, wenn Sie
od -c
oder
tr "\000" "\n" benutzen. Alternativ erhalten
Sie mit
echo `cat <file>` gute Ergebnisse.
Diese Handbuchseite ist unvollständig, möglicherweise stellenweise
ungenau und ein Beispiel für etwas, das ständig
überarbeitet werden muss.
SIEHE AUCH¶
cat(1),
dmesg(1),
find(1),
free(1),
ps(1),
tr(1),
uptime(1),
chroot(2),
mmap(2),
readlink(2),
syslog(2),
slabinfo(5),
hier(7),
namespaces(7),
time(7),
arp(8),
hdparm(8),
ifconfig(8),
init(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.
KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.74 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
http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann
<debian@helgefjell.de> und Martin Eberhard Schauer
<Martin.E.Schauer@gmx.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 <debian-l10n-german@lists.debian.org>.