proc - pseudosystem plików z informacjami o procesach
The proc filesystem is a pseudo-filesystem which provides
an interface to kernel data structures. It is commonly mounted at
/proc. Typically, it is mounted automatically by the system, but it
can also be mounted manually using a command such as:
mount -t proc proc /proc
Most of the files in the proc filesystem are read-only, but
some files are writable, allowing kernel variables to be changed.
System plików proc obsługuje
następujące opcje montowania:
- hidepid=n
(od Linuksa 3.3)
- Opcja kontroluje kto może uzyskać dostęp do
informacji w katalogach /proc/[pid]. Argument n przyjmuje
jedną z następujących wartości:
- 0
- Wszyscy mają dostęp do katalogów /proc/[pid].
Jest to tradycyjne zachowanie i domyślne, jeśli nie
użyje się tej opcji montowania.
- 1
- Użytkownicy nie mogą uzyskać dostępu do
plików i podkatalogów w katalogach /proc/[pid] innych
niż ich własne (same katalogi /proc/[pid]
pozostają widoczne). Wrażliwe pliki, takie jak
/proc/[pid]/cmdline i /proc/[pid]/status są chronione
przed innymi użytkownikami. Dzięki temu niemożliwe
staje się dowiedzenie się, czy jakiś
użytkownik uruchomił konkretny program (tak długo,
jak sam program nie ujawnia tego swoim zachowaniem).
- 2
- Jak w trybie 1, lecz dodatkowo katalogi /proc/[pid]
przynależne innym użytkownikom
pozostają niewidoczne. Oznacza to, że wpisy
/proc/[pid] nie mogą dłużej
służyć do poznania PID-ów w systemie. Nie
ukrywa to faktu, że proces o określonym PID istnieje
(można się tego dowiedzieć innymi sposobami,
np. poprzez "kill -0 $PID"), ale ukrywa UID i GID procesu,
które w innym przypadku można by było poznać
wykonując stat(2) na katalogu /proc/[pid]. To
znacznie utrudnia zadanie atakującego polegające na
pozyskaniu informacji o działających procesach (np. odkrycie
czy jakiś demon działa z większymi uprawnieniami, czy
jakiś użytkownik ma uruchomiony jakiś wrażliwy
program, czy inni użytkownicy w ogóle mają
coś uruchomione itd.).
- gid=gid (od
Linuksa 3.3)
- Określa ID grupy, której członkowie są
uprawnieni do dostępu do informacji zablokowanych innym przez
hidepid (tzn. użytkownicy w tej grupie zachowują
się tak, jakby /proc zostało zamontowane z
hidepid=0). Powinno się używać tej grupy,
zamiast innych rozwiązań, takich jak umieszczanie
użytkowników nie-root w pliku sudoers(5).
Underneath /proc, there are the following general groups of
files and subdirectories:
- /proc/[pid] subdirectories
- Each one of these subdirectories contains files and subdirectories
exposing information about the process with the corresponding process
ID.
- Underneath each of the /proc/[pid] directories, a task
subdirectory contains subdirectories of the form task/[tid], which
contain corresponding information about each of the threads in the
process, where tid is the kernel thread ID of the thread.
- The /proc/[pid] subdirectories are visible when iterating through
/proc with getdents(2) (and thus are visible when one uses
ls(1) to view the contents of /proc).
- /proc/[tid] subdirectories
- Each one of these subdirectories contains files and subdirectories
exposing information about the thread with the corresponding thread ID.
The contents of these directories are the same as the corresponding
/proc/[pid]/task/[tid] directories.
- The /proc/[tid] subdirectories are not visible when
iterating through /proc with getdents(2) (and thus are
not visible when one uses ls(1) to view the contents of
/proc).
- /proc/self
- When a process accesses this magic symbolic link, it resolves to the
process's own /proc/[pid] directory.
- /proc/thread-self
- When a thread accesses this magic symbolic link, it resolves to the
process's own /proc/self/task/[tid] directory.
- /proc/[a-z]*
- Various other files and subdirectories under /proc expose
system-wide information.
All of the above are described in more detail below.
The following list provides details of many of the files and
directories under the /proc hierarchy.
- /proc/[pid]
- There is a numerical subdirectory for each running process; the
subdirectory is named by the process ID. Each /proc/[pid]
subdirectory contains the pseudo-files and directories described
below.
- The files inside each /proc/[pid] directory are normally owned by
the effective user and effective group ID of the process. However, as a
security measure, the ownership is made root:root if the process's
"dumpable" attribute is set to a value other than 1.
- Before Linux 4.11, root:root meant the "global" root user
ID and group ID (i.e., UID 0 and GID 0 in the initial user namespace).
Since Linux 4.11, if the process is in a noninitial user namespace that
has a valid mapping for user (group) ID 0 inside the namespace, then the
user (group) ownership of the files under /proc/[pid] is instead
made the same as the root user (group) ID of the namespace. This means
that inside a container, things work as expected for the container
"root" user.
- The process's "dumpable" attribute may change for the following
reasons:
- The attribute was explicitly set via the prctl(2)
PR_SET_DUMPABLE operation.
- The attribute was reset to the value in the file
/proc/sys/fs/suid_dumpable (described below), for the reasons
described in prctl(2).
- Resetting the "dumpable" attribute to 1 reverts the ownership of
the /proc/[pid]/* files to the process's effective UID and GID.
Note, however, that if the effective UID or GID is subsequently modified,
then the "dumpable" attribute may be reset, as described in
prctl(2). Therefore, it may be desirable to reset the
"dumpable" attribute after making any desired changes to
the process's effective UID or GID.
- /proc/[pid]/attr
- Pliki w tym katalogu udostępniają API do
modułów bezpieczeństwa.
Zawartością katalogu są pliki, które
mogą być odczytywane i zapisywane, aby ustawić
atrybuty związane z bezpieczeństwem. Ten katalog
został dodany do obsługi SELinux, ale intencją
było to, aby API było na tyle ogóle, aby
obsługiwać również inne moduły
bezpieczeństwa. Dla wyjaśnienia, poniżej
przedstawiono przykłady jak SELinux używa tych
plików.
- Obecne tylko, jeśli jądro zostało skonfigurowane z
CONFIG_SECURITY.
- /proc/[pid]/attr/current (od Linuksa 2.6.0)
- Zawartość tego pliku reprezentuje aktualne atrybuty
bezpieczeństwa procesu.
- W SELinuksie plik ten służy do pozyskania kontekstu
bezpieczeństwa procesu. Do Linuksa 2.6.11 plik nie
mógł służyć do ustawienia kontekstu
bezpieczeństwa (zapis był zawsze zabroniony), odkąd
SELinux ograniczyć przejścia bezpieczeństwa procesu
do execve(2) (zob. opis /proc/[pid]/attr/exec,
poniżej). Od Linuksa 2.6.11 SELinux poluzował to
ograniczenie i zaczął obsługiwać operacje
"ustawiania" poprzez zapis do tego węzła,
jeśli jest on autoryzowany przez politykę, choć
użycie tej operacji jest odpowiednie jedynie dla aplikacji
zaufanych do zarządzania
pożądaną separacją pomiędzy
starymi a nowymi kontekstami bezpieczeństwa.
- Prior to Linux 2.6.28, SELinux did not allow threads within a
multithreaded process to set their security context via this node as it
would yield an inconsistency among the security contexts of the threads
sharing the same memory space. Since Linux 2.6.28, SELinux lifted this
restriction and began supporting "set" operations for threads
within a multithreaded process if the new security context is bounded by
the old security context, where the bounded relation is defined in policy
and guarantees that the new security context has a subset of the
permissions of the old security context.
- Other security modules may choose to support "set" operations
via writes to this node.
- /proc/[pid]/attr/exec (od Linuksa 2.6.0)
- Ten plik reprezentuje atrybuty przypisane do procesu przez kolejne
execve(2).
- W SELinuksie jest to potrzebne do obsługi przejść
roli/domeny, a execve(2) jest preferowanym punktem do takich
przekształceń, ponieważ oferuje on
lepszą kontrolę nad inicjalizacją procesu w
nowej etykiecie bezpieczeństwa i nienaruszalności stanu. W
SELinuksie ten atrybut jest resetowany przy execve(2), tak
więc nowy program powraca do domyślnego zachowania przy
każdym wywołaniu execve(2) jakie może
utworzyć. W SELinuksie proces może
ustawić tylko swój atrybut
/proc/[pid]/attr/exec.
- /proc/[pid]/attr/fscreate (od Linuksa 2.6.0)
- Plik ten reprezentuje atrybuty do przypisania do plików utworzone
przez kolejne wywołania do open(2), mkdir(2),
symlink(2) i mknod(2)
- SELinux wykorzystuje ten plik do obsługi tworzenia pliku (za
pomocą wspomnianych wcześniej wywołań
systemowych) w stanie bezpieczeństwa, co nie daje ryzyka
niepoprawnego dostępu uzyskanego podczas tworzenia pliku i
ustawiania atrybutów. W SELinuksie atrybut ten jest resetowany przy
execve(2), tak więc nowy program powraca do
domyślnego zachowania przy każdym wywołaniu
tworzącym plik jakie może on wykonać, ale atrybut
jest zachowywany podczas wielu wywołań tworzących
plik przez jeden program, chyba że jest jawnie resetowany. W
SELinuksie proces może ustawić tylko swój atrybut
/proc/[pid]/attr/fscreate.
- /proc/[pid]/attr/keycreate (od Linuksa 2.6.18)
- If a process writes a security context into this file, all subsequently
created keys (add_key(2)) will be labeled with this context. For
further information, see the kernel source file
Documentation/security/keys/core.rst (or file
Documentation/security/keys.txt on Linux between 3.0 and 4.13, or
Documentation/keys.txt before Linux 3.0).
- /proc/[pid]/attr/prev (od Linuksa 2.6.0)
- Plik ten zawiera kontekst bezpieczeństwa procesu przed ostatnim
execve(2); tj. poprzednią wartość
/proc/[pid]/attr/current.
- /proc/[pid]/attr/socketcreate (od Linuksa 2.6.18)
- Jeśli proces zapisuje kontekst bezpieczeństwa do tego pliku,
wszystkie kolejno utworzone gniazda będą oznaczone tym
kontekstem.
- /proc/[pid]/autogroup (od Linuksa 2.6.38)
- Patrz sched(7).
- /proc/[pid]/auxv (od wersji j◈dra 2.6.0)
- Zawartość informacji ELF przekazanej do procesu podczas
uruchomienia. Formatem jest jeden identyfikator w postaci unsigned
long plus jedna wartość unsigned long dla
każdego wpisu. Ostatni wpis zawiera dwa zera. Zob. też
getauxval(3).
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
- /proc/[pid]/cgroup (od Linuksa 2.6.24)
- Patrz cgroups(7).
- /proc/[pid]/clear_refs (od Linuksa 2.6.22)
- Plik jest tylko do odczytu, zapisywalny wyłącznie dla
właściciela procesu.
- Do pliku można zapisać następujące
wartości:
- 1 (od Linuksa 2.6.22)
- Resetuje bity PG_Referenced i ACCESSED/YOUNG dla wszystkich stron
związanych z procesem (przed jądrem 2.6.32 taki efekt
powodowało zapisanie dowolnej wartości niezerowej).
- 2 (od Linuksa 2.6.32)
- Resetuje bity PG_Referenced i ACCESSED/YOUNG dla wszystkich stron
anonimowych związanych z procesem.
- 3 (od Linuksa 2.6.32)
- Resetuje bity PG_Referenced i ACCESSED/YOUNG dla wszystkich stron
przypisanych do plików, związanych z procesem.
- Czyszczenie bitów PG_Referenced i ACCESSED/YOUNG zapewnia
metodę zmierzenia przybliżonej wartości
pamięci używanej przez proces. Najpierw należy
sprawdzić wartość w polu "Referenced" dla
wartości VMA pokazanych w /proc/[pid]/smaps aby
sprawdzić użycie pamięci przez proces.
Następnie czyści się bity PG_Referenced i
ACCESSED/YOUNG i po jakimś zmierzonym czasie ponownie sprawdza
się wartości pól "Referenced" aby
dowiedzieć się jak zmieniło się użycie
pamięci procesu podczas zmierzonego interwału. Jeśli
jest się zainteresowanym wyłącznie pewnymi typami
przypisania, można skorzystać z wartości 2 lub 3,
zamiast 1.
- Further values can be written to affect different properties:
- 4 (od Linuksa 3.11)
- Czyści bit soft-dirty dla wszystkich stron związanych z
procesem. Używa się tego (razem z
/proc/[pid]/pagemap) przez system przywracania check-point do
wykrycia które strony procesu zostały "zabrudzone"
od czasu zapisu do pliku /proc/[pid]/clear_refs.
- 5 (od Linuksa 4.0)
- Reset the peak resident set size ("high water mark") to the
process's current resident set size value.
- Zapis innej wartości niż wypisane powyżej do
/proc/[pid]/clear_refs nie daje żadnego efektu.
- Plik /proc/[pid]/clear_refs istnieje tylko jeśli podczas
kompilacji jądra włączono opcję
CONFIG_PROC_PAGE_MONITOR.
- /proc/[pid]/cmdline
- Ten plik tylko do odczytu zawiera pełną linię
polecenia wydanego przy uruchamianiu procesu, chyba że jest to
proces-duch (zombie). Wówczas plik będzie pusty, tzn. odczyt
tego pliku zwróci zawsze 0 znaków. Argumenty linii
poleceń występują w tym pliku rozdzielone znakami NUL
('\0'), z dodatkowym znakiem NUL po ostatnim łańcuchu.
- If, after an execve(2), the process modifies its argv
strings, those changes will show up here. This is not the same thing as
modifying the argv array.
- Furthermore, a process may change the memory location that this file
refers via prctl(2) operations such as
PR_SET_MM_ARG_START.
- Think of this file as the command line that the process wants you to
see.
- /proc/[pid]/comm (od Linuksa 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 (including the terminating null byte)
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. The value in this file is used for the %e specifier in
/proc/sys/kernel/core_pattern; see core(5).
- /proc/[pid]/coredump_filter (od Linuksa 2.6.23)
- Patrz core(5).
- /proc/[pid]/cpuset (od Linuksa 2.6.12)
- Patrz cpuset(7).
- /proc/[pid]/cwd
- Jest dowiązaniem do bieżącego katalogu roboczego
procesu. Aby dowiedzieć się, jaki jest katalog roboczy
procesu, na przykład o identyfikatorze 20, można
wydać następujące polecenie:
-
$ cd /proc/20/cwd; pwd -P
- W procesie wielowątkowym zawartość tego linku
symbolicznego nie jest dostępna, jeżeli wątek
główny już się zakończył
(zazwyczaj przez wywołanie pthread_exit(3)).
- Permission to dereference or read (readlink(2)) this symbolic link
is governed by a ptrace access mode PTRACE_MODE_READ_FSCREDS check;
see ptrace(2).
- /proc/[pid]/environ
- This file contains the initial environment that was set when the currently
executing program was started via execve(2). The entries are
separated by null bytes ('\0'), and there may be a null byte at the end.
Thus, to print out the environment of process 1, you would do:
-
$ cat /proc/1/environ | tr '\000' '\n'
- If, after an execve(2), the process modifies its environment (e.g.,
by calling functions such as putenv(3) or modifying the
environ(7) variable directly), this file will not reflect
those changes.
- Furthermore, a process may change the memory location that this file
refers via prctl(2) operations such as
PR_SET_MM_ENV_START.
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
- /proc/[pid]/exe
- W Linuksie 2.2 i wersjach późniejszych plik ten jest
dowiązaniem symbolicznym zawierającym rzeczywistą
nazwę ścieżki działającego polecenia.
Dowiązaniem symbolicznym można się normalnie
posługiwać - próba jego otwarcia otworzy plik
programu. Można nawet wydać polecenie
/proc/[pid]/exe, aby uruchomić kolejną kopię
tego samego pliku wykonywalnego, co uruchomiony przez [pid]. Jeśli
ścieżka została odlinkowana, dowiązanie
symboliczne będzie zawierało łańcuch
'(deleted)' dodany do oryginalnej ścieżki. W procesie
wielowątkowym zawartość tego linku symbolicznego nie
jest dostępna, jeżeli główny wątek
już się zakończył (wywołując
zapewne pthread_exit(3)).
- Permission to dereference or read (readlink(2)) this symbolic link
is governed by a ptrace access mode PTRACE_MODE_READ_FSCREDS check;
see ptrace(2).
- W Linuksie 2.0 i wcześniejszych wersjach, /proc/[pid]/exe
jest wskaźnikiem do uruchomionego pliku binarnego i ma
postać dowiązania symbolicznego. Wywołanie
readlink(2) na tym pliku zwróci w Linuksie 2.0
łańcuch znakowy postaci:
-
[urządzenie]:i-węzeł
- Na przykład, [0301]:1502 będzie 1502 i-węzłem
na urządzeniu o numerze głównym 03 (IDE, MFM itp.) i
pobocznym 01 (pierwsza partycja pierwszego dysku).
- Do zlokalizowania pliku, można posłużyć
się poleceniem find(1) z opcją -inum.
- /proc/[pid]/fd/
- Jest to podkatalog zawierający po jednym wpisie dla każdego
otwartego przez proces pliku; nazwą tego wpisu jest deskryptor
pliku i jest on dowiązaniem symbolicznym do rzeczywistego pliku.
Dlatego 0 jest standardowym wejściem, 1 jest standardowym
wyjściem, 2 jest standardową diagnostyką, itd.
- W przypadku deskryptorów plików potoków gniazd wpisy
będą dowiązaniami symbolicznymi, których
zawartością jest typ pliku z i-węzłem.
Wywołanie readlink(2) na takim pliku zwróci
ciąg w postaci:
-
typ:[i-węzeł]
- Przykładowo socket:[2248868] będzie gniazdem z
i-węzłem 2248868. W przypadku gniazd, i-węzeł
można wykorzystać do pozyskania większej liczby
informacji z jednego z plików z katalogu /proc/net/.
- W przypadku deskryptorów plików, które nie
mają odpowiadającego i-węzła (np.
deskryptorów plików tworzonych za pomocą
bpf(2), epoll_create(2), eventfd(2),
inotify_init(2), perf_event_open(2), signalfd(2),
timerfd_create(2) i userfaultfd(2)), wpis będzie
dowiązaniem symbolicznym z zawartością w postaci
-
anon_inode:<typ-pliku>
- In many cases (but not all), the file-type is surrounded by square
brackets.
- Przykładowo dowiązanie symboliczne deskryptora pliku epoll
będzie dowiązaniem symbolicznym, którego
zawartością jest łańcuch
anon_inode:[eventpoll].
- W procesie wielowątkowym zawartość tego katalogu nie
jest dostępna, jeżeli wątek główny
już się zakończył (zazwyczaj przez
wywołanie pthread_exit(3)).
- Programs that take a filename as a command-line argument, but don't take
input from standard input if no argument is supplied, and programs that
write to a file named as a command-line argument, but don't send their
output to standard output if no argument is supplied, can nevertheless be
made to use standard input or standard output by using
/proc/[pid]/fd files as command-line arguments. For example,
assuming that -i is the flag designating an input file and
-o is the flag designating an output file:
-
$ foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
- co daje działający filtr.
- /proc/self/fd/N jest w przybliżeniu tym samym co
/dev/fd/N na niektórych systemach uniksowych i
uniksopodobnych. Większość linuksowych
skryptów MAKEDEV tworzy dowiązania symboliczne
/dev/fd do /proc/self/fd.
- Większość systemów udostępnia
dowiązania symboliczne /dev/stdin, /dev/stdout i
dev/stderr, które linkują odpowiednio do
plików 0, 1 i 2 w /proc/self/fd.
Powyższe, przykładowe polecenie może być
więc zapisane również tak:
-
$ foobar -i /dev/stdin -o /dev/stdout ...
- Permission to dereference or read (readlink(2)) the symbolic links
in this directory is governed by a ptrace access mode
PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
- Note that for file descriptors referring to inodes (pipes and sockets, see
above), those inodes still have permission bits and ownership information
distinct from those of the /proc/[pid]/fd entry, and that the owner
may differ from the user and group IDs of the process. An unprivileged
process may lack permissions to open them, as in this example:
-
$ echo test | sudo -u nobody cat
test
$ echo test | sudo -u nobody cat /proc/self/fd/0
cat: /proc/self/fd/0: Permission denied
- File descriptor 0 refers to the pipe created by the shell and owned by
that shell's user, which is not nobody, so cat does not have
permission to create a new file descriptor to read from that inode, even
though it can still read from its existing file descriptor 0.
- /proc/[pid]/fdinfo/ (od Linuksa 2.6.22)
- Jest to podkatalog zawierający po jednym wpisie dla każdego
pliku otwartego przez proces; nazwą tego wpisu jest deskryptor
pliku. Pliki w tym katalogu są odczytywalne tylko dla
właściciela procesu. Zawartość pliku
można odczytać, aby uzyskać informacje o
odpowiadającym mu deskryptorze pliku. Zawartość
zależy od typu pliku odpowiadającego odpowiedniemu
deskryptorowi pliku.
- Dla zwykłych plików i katalogów wygląda to
zwykle tak:
-
$ cat /proc/12015/fdinfo/4
pos: 1000
flags: 01002002
mnt_id: 21
- Występują następujące pola:
- pos
- Jest to liczba dziesiętna pokazująca przesunięcie
pliku.
- flags
- Jest to liczba ósemkowa wyświetlająca tryb
dostępu pliku i flagi statusu pliku (zob. open(2)).
JEśli ustawiona jest flaga deskryptora pliku close-on-exec, to
flags będzie zawierało również
wartość O_CLOEXEC.
- Przed Linuksem 3.1 to pole nieprawidłowo wyświetlało
ustawienie O_CLOEXEC w trakcie otwierania pliku, zamiast aktualnego
ustawienia flagi close-on-exec.
- mnt_id
- To pole, obecne od Linuksa 3.15 jest identyfikatorem punktu montowania
zawierającego ten plik. Zob. opis
/proc/[pid]/mountinfo.
- Dla deskryptorów plików eventfd (zob. eventfd(2)),
wyświetlane są (od Linuksa 3.8) następujące
pola:
-
pos: 0
flags: 02
mnt_id: 10
eventfd-count: 40
- eventfd-count jest
bieżącą wartością licznika
eventfd, szesnastkowo.
- Dla deskryptorów plików epoll (zob. epoll(7)),
wyświetlane są (od Linuksa 3.8) następujące
pola:
-
pos: 0
flags: 02
mnt_id: 10
tfd: 9 events: 19 data: 74253d2500000009
tfd: 7 events: 19 data: 74253d2500000007
- Każdy wiersz zaczynający się od tfd opisuje
jeden z deskryptorów pliku monitorowany za
pomocą deskryptora pliku epool (zob. epoll_ctl(2) aby
zapoznać się z niektórymi szczegółami).
Pole tfd jest numerem deskryptora pliku. Pole events jest
szesnastkową maską zdarzeń monitorowanych dla tego
deskryptora pliku. Pole data jest
wartością danych powiązanych z tym
deskryptorem pliku.
- Dla deskryptorów plików signalfd (zob. signalfd(2)),
wyświetlane są (od Linuksa 3.8) następujące
pola:
-
pos: 0
flags: 02
mnt_id: 10
sigmask: 0000000000000006
- sigmask jest
szesnastkową maską sygnałów
akceptowanych poprzez ten deskryptor pliku signalfd (w tym
przykładzie ustawione są bity 2 i 3 odpowiadające
sygnałom SIGINT i SIGQUIT; zob.
signal(7)).
- Dla deskryptorów plików inotify (zob. inotify(7)),
wyświetlane są (od Linuksa 3.8) następujące
pola:
-
pos: 0
flags: 00
mnt_id: 11
inotify wd:2 ino:7ef82a sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:2af87e00220ffd73
inotify wd:1 ino:192627 sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:27261900802dfd73
- Każdy z wierszy zaczynający się od
"inotify" wyświetla informacje o jednym z monitorowanych
plików lub katalogów. W wierszu występują
następujące pola:
- wd
- Numer obserwowanego deskryptora (dziesiętnie). (od ang.
watch descriptor)
- ino
- Numer i-węzła pliku docelowego (szesnastkowo).
- sdev
- ID urządzenia, na którym znajduje się plik docelowy
(szesnastkowo).
- mask
- Maska monitorowanych zdarzeń pliku docelowego (szesnastkowo).
- Jeśli jądro zbudowano z obsługą exportfs,
ścieżka do pliku docelowego jest wyświetlona jako
uchwyt pliku, przez trzy pola szesnastkowe: fhandle-bytes,
fhandle-type i f_handle.
- Dla deskryptorów plików fanotify (zob. fanotify(7)),
wyświetlane są (od Linuksa 3.8) następujące
pola:
-
pos: 0
flags: 02
mnt_id: 11
fanotify flags:0 event-flags:88002
fanotify ino:19264f sdev:800001 mflags:0 mask:1 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:4f261900a82dfd73
- Czwarty wiersz wyświetla informacje zdefiniowane przy tworzeniu
grupy fanotify poprzez fanotify_init(2):
- Każdy dodatkowy wiersz pokazany w pliku zawiera informacje o jednym
znaku (ang. mark) grupy fanotify. Większość z tych
pól jest takich jak do inotify z wyjątkiem:
- mflags
- Flagi powiązane ze znakiem (wyrażone szesnastkowo).
- mask
- Maski zdarzeń dla tego znaku (wyrażone szesnastkowo).
- ignored_mask
- Maski zdarzeń ignorowanych dla tego znaku (wyrażone
szesnastkowo).
- Więcej informacji o tych polach znajduje się w
podręczniku fanotify_mark(2).
- Dla deskryptorów plików timerfd (zob. timerfd(2)),
wyświetlane są (od Linuksa 3.17) następujące
pola:
-
pos: 0
flags: 02004002
mnt_id: 13
clockid: 0
ticks: 0
settime flags: 03
it_value: (7695568592, 640020877)
it_interval: (0, 0)
- clockid
- This is the numeric value of the clock ID (corresponding to one of the
CLOCK_* constants defined via <time.h>) that is used
to mark the progress of the timer (in this example, 0 is
CLOCK_REALTIME).
- ticks
- This is the number of timer expirations that have occurred, (i.e., the
value that read(2) on it would return).
- settime
flags
- This field lists the flags with which the timerfd was last armed (see
timerfd_settime(2)), in octal (in this example, both
TFD_TIMER_ABSTIME and TFD_TIMER_CANCEL_ON_SET are set).
- it_value
- This field contains the amount of time until the timer will next expire,
expressed in seconds and nanoseconds. This is always expressed as a
relative value, regardless of whether the timer was created using the
TFD_TIMER_ABSTIME flag.
- it_interval
- This field contains the interval of the timer, in seconds and nanoseconds.
(The it_value and it_interval fields contain the values that
timerfd_gettime(2) on this file descriptor would return.)
- /proc/[pid]/gid_map (od Linuksa 3.5)
- Zob. user_namespaces(7).
- /proc/[pid]/io (od wersji jądra 2.6.20)
- Plik zawiera statystyki wejścia/wyjścia dla procesu
np.:
-
# cat /proc/3828/io
rchar: 323934931
wchar: 323929600
syscr: 632687
syscw: 632675
read_bytes: 0
write_bytes: 323932160
cancelled_write_bytes: 0
- Występują następujące pola:
- rchar: odczytane
znaki
- Liczba bajtów, które zostały odczytane ze
względu na dane zadanie. Jest to suma bajtów z
read(2) i podobnych wywołań systemowych. Obejmuje
takie działania jak wejście/wyjście terminala. To,
czy konieczny był faktyczny dostęp do
wejścia/wyjściu fizycznego dysku nie ma wpływu na
wartość (odczyt mógł nastąpić
wyłącznie z bufora stronicowania).
- wchar: zapisane
znaki
- Liczba bajtów, które zostały zapisane lub powinny
być zapisane przez dane zadania. Tego pola tyczą się
podobne zastrzeżenia jak rchar.
- syscr: odczytane
wywołania systemowe
- Próba policzenia operacji odczytu wejścia/wyjścia tj.
wywołań systemowych takich jak read(2) i
pread(2).
- syscw: zapisane
wywołania systemowe
- Próba policzenia operacji zapisu wejścia/wyjścia tj.
wywołań systemowych takich jak write(2) i
pwrite(2).
- read_bytes:
odczytane bajty
- Próba policzenia bajtów, które faktycznie
musiały być pobrane z poziomu nośnika. Jest
dokładna dla systemów plików korzystających z
bloków.
- write_bytes:
zapisane bajty
- Próba policzenia bajtów, które faktycznie
musiały być wysłane na poziom nośnika.
- cancelled_write_bytes:
- Dużą niedokładność powoduje
przycinanie. Jeśli proces zapisze do pliku 1 MB i
później skasuje go, de facto nie nastąpi żaden
zapis. Zostanie to jednak odnotowane jako powodujące zapis 1 MB.
Innymi słowy: pole to reprezentuje liczbę bajtów,
które dzięki temu procesowi nie wystąpiły
przez przycięcie bufora strony. Część
zadań może spowodować również
"ujemne" wejście/wyjście. Jeśli to zadanie
przytnie "brudny" bufor strony, część
wejścia/wyjście, które inne zadanie już
policzyło (jest w jego write_bytes) nie nastąpi.
- Uwaga: W obecnej implementacji ma miejsce wyścig bitowy na
32-bitowych systemach: jeśli proces A odczyta /proc/[pid]/io
procesu B, gdy proces B aktualizuje jeden ze swoich 64-bitowych
liczników, proces A zobaczy wynik pośredni.
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
- /proc/[pid]/limits (od Linuksa 2.6.24)
- Plik zawiera informacje o miękkim limicie, twardym limicie i
jednostkach, w których mierzone są limity zasobów
procesów (patrz getrlimit(2)). Do Linuksa 2.6.35
(włącznie) plik jest zabezpieczony, aby pozwolić na
odczyt jedynie przez realny identyfikator UID procesu. Od wersji 2.6.36
plik jest odczytywalny dla wszystkich użytkowników
systemu.
- /proc/[pid]/map_files/ (od jądra 3.3)
- Podkatalog zawiera wpisy odnoszące się do plików
zmapowanych do pamięci (patrz mmap(2)). Wpisy są
nazwane jako pary adresów: początku i końca obszaru
pamięci (jako liczby szesnastkowe) i są dowiązaniami
symbolicznymi do samych zmapowanych plików. Oto przykład,
zmodyfikowany aby zmieścić się w 80 kolumnowym
terminalu:
-
# ls -l /proc/self/map_files/
lr--------. 1 root root 64 Apr 16 21:31
3252e00000-3252e20000 -> /usr/lib64/ld-2.15.so
...
- Choć te wpisy są dostępne dla obszarów
pamięci przydzielonych flagą MAP_FILE, to
sposób w jaki zaimplementowane jest anonimowe dzielenie
pamięci (obszary utworzone flagami MAP_ANON | MAP_SHARED)
oznaczają że tego typu obszary również
pojawią się w tym katalogu. Oto przykład, gdzie
plikiem docelowym jest usunięty /dev/zero:
-
lrw-------. 1 root root 64 Apr 16 21:33
7fc075d2f000-7fc075e6f000 -> /dev/zero (deleted)
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
- Until kernel version 4.3, this directory appeared only if the
CONFIG_CHECKPOINT_RESTORE kernel configuration option was
enabled.
- Capabilities are required to read the contents of the symbolic links in
this directory: before Linux 5.9, the reading process requires
CAP_SYS_ADMIN in the initial user namespace; since Linux 5.9, the
reading process must have either CAP_SYS_ADMIN or
CAP_CHECKPOINT_RESTORE in the user namespace where it resides.
- /proc/[pid]/maps
- Plik zawierający aktualnie zmapowane obszary pamięci wraz z
prawami dostępu do nich. Więcej informacji o mapowaniu
pamięci zawiera podręcznik systemowy mmap(2).
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
- Format pliku jest następujący:
-
adres uprawn przesun urządz i-węzeł ścieżka
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]
- Pole adres jest przestrzenią adresową procesu,
który ją zajmuje, a uprawn jest zbiorem
uprawnień:
-
r = odczyt
w = zapis
x = wykonywanie
s = wspólne
p = prywatne (kopiowane przy zapisie)
- Przesun jest przesunięciem w pliku lub w czymś innym,
urządz zawiera numery (główny:poboczny)
urządzenia, a i-węzeł jest
i-węzłem na tym urządzeniu. 0 wskazuje, że nie
istnieje i-węzeł związany z tym obszarem
pamięci, jak to na przykład ma miejsce w przypadku segmentu
BSS (niezainicjowanych danych).
- Ścieżka to zwykle plik zabezpieczający
mapowanie. Koordynacja jest łatwa w przypadku plików ELF za
pomocą pola przesun, poprzez sprawdzenie pola Offset w
nagłówkach programu ELF (readelf -l).
- Istnieją dodatkowe, pomocne pseudościeżki:
- [stack]
- Stos pierwotnego procesu (zwanego też głównym
wątkiem)
- [stack:<tid>] (Linux w wersji od 3.4 do 4.4)
- A thread's stack (where the <tid> is a thread ID). It
corresponds to the /proc/[pid]/task/[tid]/ path. This field was
removed in Linux 4.5, since providing this information for a process with
large numbers of threads is expensive.
- [vdso]
- Wirtualny, dynamicznie linkowany obiekt współdzielony. Patrz
vdso(7).
- [heap]
- Stos wątku.
- If the pathname field is blank, this is an anonymous mapping as
obtained via mmap(2). 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.
- pathname is shown unescaped except for newline characters, which
are replaced with an octal escape sequence. As a result, it is not
possible to determine whether the original pathname contained a newline
character or the literal \012 character sequence.
- If the mapping is file-backed and the file has been deleted, the string
" (deleted)" is appended to the pathname. Note that this is
ambiguous too.
- W Linuksie 2.0 nie ma pola podającego nazwę
ścieżki.
- /proc/[pid]/mem
- Za pośrednictwem tego pliku można, korzystając z
open(2), read(2) i lseek(2), uzyskać
dostęp do stron pamięci procesu.
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_ATTACH_FSCREDS check; see ptrace(2).
- /proc/[pid]/mountinfo (od wersji jądra 2.6.26)
- This file contains information about mount points in the process's mount
namespace (see mount_namespaces(7)). It supplies various
information (e.g., propagation state, root of mount for bind mounts,
identifier for each mount and its parent) that is missing from the (older)
/proc/[pid]/mounts file, and fixes various other problems with that
file (e.g., nonextensibility, failure to distinguish per-mount versus
per-superblock options).
- The file contains lines of the 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)
- Liczby w nawiasach są etykietami poniższych
opisów:
- (1)
- ID montowania: unikatowy identyfikator montowania (może
zostać użyty ponownie po wykonaniu umount(2)).
- (2)
- parent ID: the ID of the parent mount (or of self for the root of this
mount namespace's mount tree).
- If a new mount is stacked on top of a previous existing mount (so that it
hides the existing mount) at pathname P, then the parent of the new mount
is the previous mount at that location. Thus, when looking at all the
mounts stacked at a particular location, the top-most mount is the one
that is not the parent of any other mount at the same location. (Note,
however, that this top-most mount will be accessible only if the longest
path subprefix of P that is a mount point is not itself hidden by a
stacked mount.)
- If the parent mount point lies outside the process's root directory (see
chroot(2)), the ID shown here won't have a corresponding record in
mountinfo whose mount ID (field 1) matches this parent mount ID
(because mount points that lie outside the process's root directory are
not shown in mountinfo). As a special case of this point, the
process's root mount point may have a parent mount (for the initramfs
filesystem) that lies outside the process's root directory, and an entry
for that mount point will not appear in mountinfo.
- (3)
- główny:poboczny: wartość pola st_dev
(patrz stat(2)) dla plików w systemie plików.
- (4)
- root: the pathname of the directory in the filesystem which forms the root
of this mount.
- (5)
- mount point: the pathname of the mount point relative to the process's
root directory.
- (6)
- opcje montowania: opcje montowania dla każdego montowania (patrz
mount(2)).
- (7)
- optional fields: zero or more fields of the form "tag[:value]";
see below.
- (8)
- separator: the end of the optional fields is marked by a single
hyphen.
- (9)
- filesystem type: the filesystem type in the form
"type[.subtype]".
- (10)
- źródło montowania: informacja zależna od
systemu plików lub "none".
- (11)
- super opcje: opcje dla superbloku (patrz mount(2)).
- Currently, the possible optional fields are shared, master,
propagate_from, and unbindable. See
mount_namespaces(7) for a description of these fields. Parsers
should ignore all unrecognized optional fields.
- Aby dowiedzieć się więcej o propagacji
montowań, proszę zapoznać się z
Documentation/filesystems/sharedsubtree.txt w drzewie
źródeł jądra Linux.
- /proc/[pid]/mounts (od wersji Linuksa 2.4.19)
- This file lists all the filesystems currently mounted in the process's
mount namespace (see mount_namespaces(7)). 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 having an
exceptional condition, and poll(2) and epoll_wait(2) mark
the file as having a priority event (POLLPRI). (Before Linux
2.6.30, a change in this file was indicated by the file descriptor being
marked as readable for select(2), and being marked as having an
error condition for poll(2) and epoll_wait(2).)
- /proc/[pid]/mountstats (Od wersji Linuksa 2.6.17)
- Plik eksportuje informacje (statystyki, informacje konfiguracyjne) o
punktach montowań w przestrzeni montowań procesów
(patrz mount_namespaces(7)). Wiersze pliku mają
następującą postać:
-
device /dev/sda7 mounted on /home with fstype ext3 [stats]
( 1 ) ( 2 ) (3 ) ( 4 )
- Pola w każdym wierszu są następujące:
- (1)
- Nazwa zamontowanego urządzenia (lub "nodevice",
jeśli nie ma odpowiadającego urządzenia).
- (2)
- Punkt montowania w drzewie systemu plików.
- (3)
- Typ systemu plików.
- (4)
- Opcjonalne statystyki i informacje konfiguracyjne. Obecnie (Linux 2.6.26)
tylko system plików NFS eksportuje opcje za pomocą tego
pola.
- Plik jest odczytywalny wyłącznie dla
właściciela procesu.
- /proc/[pid]/net (od Linuksa 2.6.25)
- Zobacz opis /proc/net.
- /proc/[pid]/ns/ (od Linuksa 3.0)
- Jest to podkatalog zawierający po jednym wpisie dla każdej
przestrzeni nazw, która obsługuje manipulację za
pomocą setns(2). Aby dowiedzieć się
więcej, proszę zapoznać się z
namespaces(7).
- /proc/[pid]/numa_maps (od Linuksa 2.6.14)
- Patrz numa(7).
- /proc/[pid]/oom_adj (od Linuksa 2.6.11)
- Plik może być użyty do dostosowania wyniku,
używanego do wybrania procesów do zabicia, w przypadku
sytuacji braku pamięci (out-of-memory - OOM). Jądro
używa tej wartości do operacji przesunięcia bitowego
wartości oom_score procesu: poprawne wartości
mieszczą się w zakresie od -16 do +15, wraz ze
specjalną wartością -17, która
całkowicie wyłącza zabijanie przy OOM danego procesu.
Dodatni wynik zwiększa prawdopodobieństwo, że proces
zostanie zabity przez OOM-killer, ujemny zmniejsza je.
- Domyślną wartością tego pliku jest 0, nowy
proces dziedziczy ustawienie oom_adj swojego rodzica. Proces musi
być uprzywilejowany (CAP_SYS_RESOURCE) aby móc
zaktualizować ten plik.
- Od Linuksa 2.6.36 używanie tego pliku jest przestarzałe,
powinno się korzystać z
/proc/[pid]/oom_score_adj.
- /proc/[pid]/oom_score (od Linuksa 2.6.11)
- Plik wyświetla bieżący wynik, jaki jądro
przydziela temu procesowi w celu wybrania procesu do zabicia przez
OOM-killer. Wyższy wynik oznacza, że proces ma
większe prawdopodobieństwo zostania wybranym przez
OOM-killer. Podstawą wyniku jest liczba pamięci
użytej przez proces, a jest on zwiększany (+) lub
zmniejszany (-) przez następujące czynniki:
- *
- whether the process is privileged (-).
- Before kernel 2.6.36 the following factors were also used in the
calculation of oom_score:
- czy proces tworzy wiele potomków przy użyciu fork(2)
(+),
- czy proces jest używany przez długi czas lub używa
dużo czasu procesora (-),
- whether the process has a low nice value (i.e., > 0) (+); and
- czy proces wykonuje bezpośredni dostęp do sprzętu
(-).
- Wartość oom_score uwzględnia
również przesunięcie określone przez
ustawienie procesu oom_score_adj lub oom_adj.
- /proc/[pid]/oom_score_adj (od Linuksa 2.6.36)
- Plik może być użyty do dostosowania heurystyki zwanej
"badness", używanej do wybrania procesu który
zostanie zabity w sytuacji braku pamięci.
- Przypisuje ona do każdego potencjalnego zadania
wartość od 0 (nigdy nie zabija) do 1000 (zawsze zabija) aby
określić docelowy proces do zabicia. Jednostki są z
grubsza proporcjonalne do pamięci, którą proces
może przydzielić, obliczaną w oparciu do
bieżącego użycia pamięci i pamięci
wymiany. Na przykład zadanie używające
całą dozwoloną pamięć otrzyma wynik
1000, a jeśli użyje połowę dozwolonej
pamięci, otrzyma wynik 500.
- Dodatkowym czynnikiem w wyniku "badness" jest fakt, że
procesy roota mają dodatkowe 3% pamięci w stosunku do
pozostałych procesów.
- Wielkość "dozwolonej" pamięci zależy
od kontekstu w jakim wywołano OOM-killera. Jeśli wynika to z
faktu, że pamięć przeznaczona dla zadania
alokującego cpuset została wyczerpany, to dozwolona
pamięć odpowiada zestawowi pamięci przypisanego do
tego cpuset (zobacz cpuset(7)). Jeśli jest to skutek zasad
dot. pamięci węzła (lub węzłów),
to dozwolona pamięć odpowiada zestawowi tych zasad.
Jeśli wynika to z faktu, że osiągnięto limit
pamięci (lub pamięci wymiany) to dozwolona
pamięć jest tak ustawionym limitem. Gdy wynika to z sytuacji
braku pamięci, to dozwolona pamięć odpowiada
wszystkich zaalokowanych zasobom.
- Wartość oom_score_adj jest dodawana do wyniku
"badness" przed użyciem jej do wybrania procesu
przeznaczonego do zabicia. Dozwolone wartości wynoszą od
-1000 (OOM_SCORE_ADJ_MIN) do +1000 (OOM_SCORE_ADJ_MAX). Pozwala to
przestrzeni użytkownika na kontrolę preferencji OOM-killing.
Można w ten sposób zawsze preferować dane zadanie lub
całkowicie wyłączyć je z procesu OOM-killing.
Najniższa dostępna wartość (-1000) jest
równoznaczna z całkowitym wyłączeniem
OOM-killing dla danego zadania, ponieważ zawsze zwróci ono
wynik "badness" równy 0.
- Z tego względu łatwo jest zdefiniować
wielkość pamięci dla każdego zadania przez
przestrzeń użytkownika. Ustawienie wartości
oom_score_adj np. na +500 jest w przybliżeniu odpowiednikiem
pozwolenia pozostałym zadaniom w tym samym systemie, cpuset,
zasadom dot. pamięci i zasobom kontrolera pamięci na
użycie co najmniej 50% pamięci więcej. Z kolei
wartość -500 odpowiada mniej więcej zmniejszeniu o
50% dozwolonej pamięci.
- Z powodu zgodności wstecznej ze starszymi jądrami do
modyfikacji wyniku "badness" wciąż można
używać /proc/[pid]/oom_adj. Jego
wartość skaluje się liniowo z
oom_score_adj.
- Zapis do /proc/[pid]/oom_score_adj lub /proc/[pid]/oom_adj
zmieni zapis w drugim pseudopliku na przeskalowaną odpowiednio
wartość.
- The choom(1) program provides a command-line interface for
adjusting the oom_score_adj value of a running process or a newly
executed command.
- /proc/[pid]/pagemap (od Linuksa 2.6.25)
- Plik pokazuje przypisanie każdej z wirtualnych stron procesu do
ramki fizycznej strony lub przestrzeni wymiany. Zawiera jedną
wartość 64-bitową na każdą
stronę wirtualną, bity oznaczają:
- 63
- Jeśli jest ustawione, strona jest obecna w pamięci RAM.
- 62
- Jeśli jest ustawione, strona jest obecne w pamięci wymiany
(swap)
- 61 (od Linuksa 3.5)
- Strona jest stroną przypisaną do pliku lub
dzieloną stroną anonimową.
- 60–57 (od Linuksa 3.11)
- Zero
- 56 (od Linuksa 4.2)
- The page is exclusively mapped.
- 55 (od Linuksa 3.11)
- PTE jest soft-dirty (więcej informacji w pliku w
źródłach jądra:
Documentation/admin-guide/mm/soft-dirty.rst).
- 54–0
- Jeśli strona jest obecna w pamięci RAM (bit 63), to te bity
udostępniają numer ramki strony, który można
użyć z indeksem /proc/kpageflags i
/proc/kpagecount. Jeśli strona jest obecna w pamięci
wymiany (bit 62), to bity 4–0 informują o typie
pamięci wymiany, a bity 54–5 kodują
przesunięcie pamięci wymiany.
- Przed Linuksem 3.11 bity 60–55 kodowały logarytm
dwójkowy informujący o rozmiarze strony.
- Aby efektywnie wykorzystać /proc/[pid]/pagemap należy
użyć /proc/[pid]/maps do określenia
które obszary pamięci zostały rzeczywiście
przypisane i móc przejść między
nieprzypisanymi obszarami.
- Plik /proc/[pid]pagemap istnieje tylko jeśli podczas
kompilacji jądra włączono opcję
CONFIG_PROC_PAGE_MONITOR.
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
- /proc/[pid]/personality (od Linuksa 2.6.28)
- Plik tylko do odczytu pokazuje domenę uruchamiania procesu
ustawioną przez personality(2). Wartość
wyświetlana jest w zapisie szesnastkowym.
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_ATTACH_FSCREDS check; see ptrace(2).
- /proc/[pid]/root
- UNIX i Linux wspierają pomysł określonego dla
każdego procesu osobno katalogu głównego systemu
plików, ustawianego przez wywołanie systemowe
chroot(2). Plik ten wskazuje na katalog główny
systemu plików i zachowuje się w ten sam sposób jak
exe, fd/*, itp.
- Note however that this file is not merely a symbolic link. It provides the
same view of the filesystem (including namespaces and the set of
per-process mounts) as the process itself. An example illustrates this
point. In one terminal, we start a shell in new user and mount namespaces,
and in that shell we create some new mount points:
-
$ PS1='sh1# ' unshare -Urnm
sh1# mount -t tmpfs tmpfs /etc # Mount empty tmpfs at /etc
sh1# mount --bind /usr /dev # Mount /usr at /dev
sh1# echo $$
27123
- In a second terminal window, in the initial mount namespace, we look at
the contents of the corresponding mounts in the initial and new
namespaces:
-
$ PS1='sh2# ' sudo sh
sh2# ls /etc | wc -l # In initial NS
309
sh2# ls /proc/27123/root/etc | wc -l # /etc in other NS
0 # The empty tmpfs dir
sh2# ls /dev | wc -l # In initial NS
205
sh2# ls /proc/27123/root/dev | wc -l # /dev in other NS
11 # Actually bind
# mounted to /usr
sh2# ls /usr | wc -l # /usr in initial NS
11
- In a multithreaded process, the contents of the /proc/[pid]/root
symbolic link are not available if the main thread has already terminated
(typically by calling pthread_exit(3)).
- Permission to dereference or read (readlink(2)) this symbolic link
is governed by a ptrace access mode PTRACE_MODE_READ_FSCREDS check;
see ptrace(2).
- /proc/[pid]/seccomp (Linux w wersji od 2.6.12 do 2.6.22)
- This file can be used to read and change the process's secure computing
(seccomp) mode setting. It contains the value 0 if the process is not in
seccomp mode, and 1 if the process is in strict seccomp mode (see
seccomp(2)). Writing 1 to this file places the process irreversibly
in strict seccomp mode. (Further attempts to write to the file fail with
the EPERM error.)
- In Linux 2.6.23, this file went away, to be replaced by the
prctl(2) PR_GET_SECCOMP and PR_SET_SECCOMP operations
(and later by seccomp(2) and the Seccomp field in
/proc/[pid]/status).
- /proc/[pid]/setgroups (od Linuksa 3.19)
- Zob. user_namespaces(7).
- /proc/[pid]/smaps (od Linuksa 2.6.14)
- Plik ten pokazuje zużycie pamięci dla każdego
mapowania procesu (polecenie pmap(1) wyświetla podobne
informacje, w postaci która może
być łatwiejsza do przetwarzania). Dla każdego
takiego mapowania pokazana jest lista następujących
linii:
-
00400000-0048a000 r-xp 00000000 fd:03 960637 /bin/bash
Size: 552 kB
Rss: 460 kB
Pss: 100 kB
Shared_Clean: 452 kB
Shared_Dirty: 0 kB
Private_Clean: 8 kB
Private_Dirty: 0 kB
Referenced: 460 kB
Anonymous: 0 kB
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
ShmemPmdMapped: 0 kB
Swap: 0 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
KernelPageSize: 4 kB
MMUPageSize: 4 kB
Locked: 0 kB
ProtectionKey: 0
VmFlags: rd ex mr mw me dw
- The first of these lines shows the same information as is displayed for
the mapping in /proc/[pid]/maps. The following lines show the size
of the mapping, the amount of the mapping that is currently resident in
RAM ("Rss"), the process's 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" line (available since Linux 2.6.29) is the
page size used by the kernel to back the virtual memory area. 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 64 kB as a
base page size may still use 4 kB pages for the MMU on older processors.
To distinguish the two attributes, the "MMUPageSize" line (also
available since Linux 2.6.29) reports the page size used by the MMU.
- "Locked" wskazuje, czy mapowanie jest zablokowane w
pamięci czy nie.
- The "ProtectionKey" line (available since Linux 4.9, on x86
only) contains the memory protection key (see pkeys(7)) associated
with the virtual memory area. This entry is present only if the kernel was
built with the CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
configuration option (since Linux 4.6).
- The "VmFlags" line (available since Linux 3.8) represents the
kernel flags associated with the virtual memory area, encoded using the
following two-letter codes:
-
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
sf - perform synchronous page faults (since Linux 4.15)
nl - non-linear mapping (removed in Linux 4.0)
ar - architecture specific flag
wf - wipe on fork (since Linux 4.14)
dd - do not include area into core dump
sd - soft-dirty flag (since Linux 3.13)
mm - mixed map area
hg - huge page advise flag
nh - no-huge page advise flag
mg - mergeable advise flag
um - userfaultfd missing pages tracking (since Linux 4.3)
uw - userfaultfd wprotect pages tracking (since Linux 4.3)
- Plik /proc/[pid]/smaps istnieje tylko jeśli podczas
kompilacji jądra włączono opcję
CONFIG_PROC_PAGE_MONITOR.
- /proc/[pid]/stack (od Linuksa 2.6.29)
- Plik zapewnia symboliczny ślad wywołania funkcji w tym
stosie jądra dla procesu. Plik istnieje, jeśli jądro
zostało zbudowane z włączoną opcją
konfiguracji CONFIG_STACKTRACE.
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_ATTACH_FSCREDS check; see ptrace(2).
- /proc/[pid]/stat
- Informacje o stanie procesu. Korzysta z tego ps(1). Są one
zdefiniowane w pliku źródeł jądra
fs/proc/array.c.
- The fields, in order, with their proper scanf(3) format specifiers,
are listed below. Whether or not certain of these fields display valid
information is governed by a ptrace access mode
PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT
check (refer to ptrace(2)). If the check denies access, then the
field value is displayed as 0. The affected fields are indicated with the
marking [PT].
- (1) pid %d
-
Identyfikator procesu (PID).
- (2) comm %s
- The filename of the executable, in parentheses. Strings longer than
TASK_COMM_LEN (16) characters (including the terminating null byte)
are silently truncated. This is visible whether or not the executable is
swapped out.
- (3) state %c
- Jeden z poniższych znaków, wskazujących na status
procesu:
- R
- Działający (Running)
- S
- Śpiący (Sleeping) w przerywalnym oczekiwaniu
- D
- Śpiący w nieprzerywalnym oczekiwaniu dyskowym
- Z
- Zombie
- T
- Zatrzymany sygnałem lub (przed Linuksem 2.6.33) zatrzymany
ślad (trace stopped)
- t
- Zatrzymany śledzeniem (tracing stop) - Linux 2.6.33 i
nowszy
- W
- Stronicowanie (tylko przed Linuksem 2.6.0)
- X
- Martwy (od Linuksa 2.6.0)
- x
- Martwy (między Linuksem 2.6.33 a 3.13)
- K
- Wakekill - oczekiwanie; wybudzenie przy śmiertelnym sygnale
(między Linuksem 2.6.33 a 3.13)
- W
- Budzący się (między Linuksem 2.6.33 a 3.13)
- P
- Zaparkowany (między Linuksem 3.9 a 3.13)
- (4) ppid %d
- PID procesu macierzystego tego procesu.
- (5) pgrp %d
- Identyfikator grupy procesów danego procesu.
- (6) session %d
- Identyfikator sesji procesu.
- (7) tty_nr %d
- Kontroluje terminal procesu (poboczny numer urządzenia jest
przechowywany w kombinacji bitów 31 do 20 i 7 do 0, natomiast
główny numer urządzenia jest w bitach 15 do 8).
- (8) tpgid %d
- Identyfikator grupy procesów pierwszoplanowych
kontrolującego terminala procesu.
- (9) flags %u
- Słowo flag jądra dla danego procesu. Znaczenie
poszczególnych bitów określają definicje PF_*
w pliku źródeł jądra Linux
include/linux/sched.h. Szczegóły zależą
od wersji jądra.
- Format tego pola przed Linuksem 2.6 miał postać %lu.
- (10) minflt %lu
- Liczba drobnych błędów, które
popełnił proces, a które nie wymagały
załadowania strony pamięci z dysku.
- (11) cminflt %lu
- Liczba drobnych błędów procesów
potomnych.
- (12) majflt %lu
- Liczba głównych błędów, które
popełnił proces, a które wymagały
załadowania strony pamięci z dysku.
- (13) cmajflt %lu
- Liczba głównych błędów procesów
potomnych.
- (14) utime %lu
- Czas jaki został przydzielony procesowi w trybie
użytkownika, mierzony w taktach zegara (podzielonych przez
sysconf(_SC_CLK_TCK)). Obejmuje to czas gościa,
guest_time (czas spędzony w czasie działania
wirtualnego CPU, patrz niżej), tak więc aplikacje,
które nie wiedzą o polu czasu gościa nie tracą
tego czasu ze swych obliczeń.
- (15) stime %lu
- Czas, jaki został przydzielony procesowi w trybie jądra,
mierzony w taktach zegara (podzielonych przez
sysconf(_SC_CLK_TCK)).
- (16) cutime %ld
- Czas, jaki został przydzielony procesom potomnym tego procesu w
stanie waited-for w trybie użytkownika, mierzony w taktach zegara
(podzielonych przez sysconf(_SC_CLK_TCK)), patrz także
times(2)). Obejmuje to czas gościa, cguest_time (czas
spędzony działając na procesorze wirtualnym, patrz
niżej).
- (17) cstime %ld
- Czas, jaki został przydzielony procesom potomnym tego procesu w
stanie waited-for w trybie jądra, mierzony w taktach zegara
(podzielonych przez sysconf(_SC_CLK_TCK).
- (18) priority %ld
- (Wyjaśnienie dla Linuksa 2.6) W przypadku procesów
działających z zasadami planisty czasu rzeczywistego
(policy poniżej; patrz sched_setscheduler(2)), jest
to liczba przeciwna w stosunku do priorytetu planisty minus jeden, tzn.
jest to zakres -2 do -100 odpowiadający priorytetom czasu
rzeczywistego od 1 do 99. W przypadku procesów nie
działających według tych zasad, jest to surowa
wartość nice (setpriority(2) zgodna z podaną
przez jądro. Jądro przechowuje wartości nice jako
liczby w zakresie od 0 (wysoki) do 39 (niski), co odpowiada widocznemu dla
użytkownika zakresowi nice od -20 do 19.
- Przed Linuksem 2.6 była to wartość skalowana w
oparciu o wagę jaką planista przypisał do danego
procesu.
- (19) nice %ld
- Wartość "nice" (patrz setpriority(2))
zawierająca się w zakresie od 19 (niski priorytet) do -20
(wysoki priorytet).
- (20) num_threads %ld
- Liczba wątków procesu (od Linuksa 2.6). Przed jądrem
2.6 to pole miało przydzieloną na sztywno
wartość 0, jako wypełniacz do usuniętego
wcześniej pola.
- (21) itrealvalue %ld
- Czas w jiffies poprzedzający wysłanie przez czasomierz do
procesu następnego sygnału SIGALRM. Od jądra
2.6.17, to pole nie jest dłużej utrzymywane i ma
ustawioną na sztywno wartość 0.
- (22) starttime %llu
- Czas w jakim proces uruchomił się po rozruchu systemu.
Jądra Linux przed wersją 2.6 wyrażają
tę wartość w tzw. "jiffies". Od Linuksa 2.6
wartość jest wyrażana w taktach zegara (podzielonych
przez sysconf(_SC_CLK_TCK)).
- Format tego pola przed Linuksem 2.6 miał postać %lu.
- (23) vsize %lu
- Rozmiar pamięci wirtualnej w bajtach.
- (24) rss %ld
- Resident Set Size: number of pages the process has in real memory. This is
just the pages which count toward text, data, or stack space. This does
not include pages which have not been demand-loaded in, or which are
swapped out. This value is inaccurate; see /proc/[pid]/statm
below.
- (25) rsslim %lu
- Aktualne miękkie ograniczenie rss procesu w bajtach; patrz opis
RLIMIT_RSS w getrlimit(2).
- (26) startcode %lu [PT]
- Adres, pod którym zaczyna się kod programu.
- (27) endcode %lu [PT]
- Adres, pod którym kończy się kod programu.
- (28) startstack %lu [PT]
- Adres początku (tzn. spód) stosu.
- (29) kstkesp %lu [PT]
- Bieżąca wartość ESP (wskaźnika stosu),
określona na podstawie strony stosu jądra dla danego
procesu.
- (30) kstkeip %lu [PT]
- Aktualny EIP (wskaźnik instrukcji).
- (31) signal %lu
- Maska bitowa oczekujących sygnałów,
wyświetlana jako liczba dziesiętna. Przestarzałe,
ponieważ nie dostarcza informacji o sygnałach czasu
rzeczywistego; prosimy używać /proc/[pid]/status
zamiast tego pliku.
- (32) blocked %lu
- Maska bitowa zablokowanych sygnałów, wyświetlana jako
liczba dziesiętna. Przestarzałe, ponieważ nie
dostarcza informacji o sygnałach czasu rzeczywistego; prosimy
używać /proc/[pid]/status zamiast tego pliku.
- (33) sigignore %lu
- Maska bitowa ignorowanych sygnałów, wyświetlana jako
liczba dziesiętna. Przestarzałe, ponieważ nie
dostarcza informacji o sygnałach czasu rzeczywistego; prosimy
używać /proc/[pid]/status zamiast tego pliku.
- (34) sigcatch %lu
- Maska bitowa schwytanych sygnałów, wyświetlana jako
liczba dziesiętna. Przestarzałe, ponieważ nie
dostarcza informacji o sygnałach czasu rzeczywistego; prosimy
używać /proc/[pid]/status zamiast tego pliku.
- (35) wchan %lu [PT]
- Jest to "kanał" na którym oczekuje proces. Jest to
adres położenia w jądrze, gdzie proces jest w
uśpieniu. Powiązaną nazwę symboliczną
można znaleźć w /proc/[pid]/wchan.
- (36) nswap %lu
- Liczba stron, które uległy wymianie (nieutrzymywane).
- (37) cnswap %lu
- Łączna wartość nswap dla
procesów potomnych (nieutrzymywane).
- (38) exit_signal %d (od Linuksa 2.1.22)
- Sygnał wysyłany przez ginący proces do jego procesu
macierzystego.
- (39) processor %d (od Linuksa 2.2.8)
- Numer CPU, na którym proces ostatnio działał.
- (40) rt_priority %u (od Linuksa 2.5.19)
- Priorytet planisty czasu rzeczywistego, liczba w zakresie od 1 do 99 do
procesów przydzielanych według zasad czasu rzeczywistego lub
0 do procesów nie czasu rzeczywistego (patrz
sched_setscheduler(2)).
- (41) policy %u (od Linuksa 2.5.19)
- Polityka przydzielania zadaniom czasu procesora (patrz
sched_setscheduler(2)). Dekodowana używając
stałych SCHED_* w linux/sched.h.
- Format tego pola przed Linuksem 2.6.22 miał postać %lu.
- (42) delayacct_blkio_ticks %llu (od Linuksa
2.6.18)
- Sumaryczna zwłoka bloków wejścia/wyjścia,
mierzona w taktach zegara (centysekundy).
- (43) guest_time %lu (od Linuksa 2.6.24)
- Czas gościa procesu (czas, jaki upłynął
podczas działania na wirtualnym procesorze systemu operacyjnego
gościa), mierzony w taktach zegara (podzielony przez
sysconf(_SC_CLK_TCK)
- (44) cguest_time %ld (od Linuksa 2.6.24)
- Czas gościa potomków procesu, mierzony w taktach zegara
(podzielony przez sysconf(_SC_CLK_TCK)).
- (45) start_data %lu (od Linuksa 3.3)
[PT]
- Adres powyższej którego umieszczane są zainicjowane i
niezainicjowane (BSS) dane programu.
- (46) end_data %lu (od Linuksa 3.3)
[PT]
- Adres poniżej którego umieszczane są zainicjowane i
niezainicjowane (BSS) dane programu.
- (47) start_brk %lu (od Linuksa 3.3)
[PT]
- Adres, powyżej którego można
rozciągnąć kopiec (ang. heap) za
pomocą brk(2).
- (48) arg_start %lu (od Linuksa 3.5)
[PT]
- Adres powyżej którego umieszczane są argumenty
wiersza polecenia programu (argv).
- (49) arg_end %lu (od Linuksa 3.5) [PT]
- Adres poniżej którego umieszczane są argumenty
wiersza polecenia programu (argv).
- (50) env_start %lu (od Linuksa 3.5)
[PT]
- Adres powyżej którego umieszczane jest środowisko
programu.
- (51) env_end %lu (od Linuksa 3.5) [PT]
- Adres poniżej którego umieszczane jest środowisko
programu.
- (52) exit_code %d (od Linuksa 3.5)
[PT]
- Kod zakończenia wątku w postaci przekazywanej przez
waitpid(2).
- /proc/[pid]/statm
- Udostępnia informacje o użyciu pamięci, mierzone w
stronach. Występują następujące kolumny:
-
size (1) total program size
(same as VmSize in /proc/[pid]/status)
resident (2) resident set size
(inaccurate; same as VmRSS in /proc/[pid]/status)
shared (3) number of resident shared pages
(i.e., backed by a file)
(inaccurate; same as RssFile+RssShmem in
/proc/[pid]/status)
text (4) text (code)
lib (5) library (unused since Linux 2.6; always 0)
data (6) data + stack
dt (7) dirty pages (unused since Linux 2.6; always 0)
- Some of these values are inaccurate because of a kernel-internal
scalability optimization. If accurate values are required, use
/proc/[pid]/smaps or /proc/[pid]/smaps_rollup instead, which
are much slower but provide accurate, detailed information.
- /proc/[pid]/status
- Udostępnia sporo informacji ze /proc/[pid]/stat i
/proc/[pid]/statm w postaci łatwiejszej do przeanalizowania
przez człowieka. Oto przykład:
-
$ cat /proc/$$/status
Name: bash
Umask: 0022
State: S (sleeping)
Tgid: 17248
Ngid: 0
Pid: 17248
PPid: 17200
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 100 100 100 100
FDSize: 256
Groups: 16 33 100
NStgid: 17248
NSpid: 17248
NSpgid: 17248
NSsid: 17200
VmPeak: 131168 kB
VmSize: 131168 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 13484 kB
VmRSS: 13484 kB
RssAnon: 10264 kB
RssFile: 3220 kB
RssShmem: 0 kB
VmData: 10332 kB
VmStk: 136 kB
VmExe: 992 kB
VmLib: 2104 kB
VmPTE: 76 kB
VmPMD: 12 kB
VmSwap: 0 kB
HugetlbPages: 0 kB # 4.4
CoreDumping: 0 # 4.15
Threads: 1
SigQ: 0/3067
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
CapAmb: 0000000000000000
NoNewPrivs: 0
Seccomp: 0
Speculation_Store_Bypass: vulnerable
Cpus_allowed: 00000001
Cpus_allowed_list: 0
Mems_allowed: 1
Mems_allowed_list: 0
voluntary_ctxt_switches: 150
nonvoluntary_ctxt_switches: 545
- Występują następujące pola:
- Name
- Command run by this process. Strings longer than TASK_COMM_LEN (16)
characters (including the terminating null byte) are silently
truncated.
- Umask
- Process umask, expressed in octal with a leading zero; see
umask(2). (Since Linux 4.7.)
- State
- Bieżący stan procesu. Jeden z: "R (running)",
"S (sleeping)", "D (disk sleep)", "T
(stopped)", "t (tracing stop)", "Z (zombie)", or
"X (dead)".
- Tgid
- identyfikator grupy wątku (np. identyfikator procesu).
- Ngid
- NUMA group ID (0 if none; since Linux 3.13).
- Pid
- identyfikator wątku (patrz gettid(2)).
- PPid
- PID procesu macierzystego.
- TracerPid
- PID procesu śledzącego ten proces (0 gdy nie jest
śledzony).
- Uid, Gid
- UID (GID): realny, efektywny, zapisany oraz systemu plików.
- FDSize
- Liczba slotów aktualnie przydzielonych deskryptorów
plików.
- Groups
- Uzupełniająca lista grup.
- NStgid
- Thread group ID (i.e., PID) in each of the PID namespaces of which
[pid] is a member. The leftmost entry shows the value with respect
to the PID namespace of the process that mounted this procfs (or the root
namespace if mounted by the kernel), followed by the value in successively
nested inner namespaces. (Since Linux 4.1.)
- NSpid
- Thread ID in each of the PID namespaces of which [pid] is a member.
The fields are ordered as for NStgid. (Since Linux 4.1.)
- NSpgid
- Process group ID in each of the PID namespaces of which [pid] is a
member. The fields are ordered as for NStgid. (Since Linux
4.1.)
- NSsid
- descendant namespace session ID hierarchy Session ID in each of the PID
namespaces of which [pid] is a member. The fields are ordered as
for NStgid. (Since Linux 4.1.)
- VmPeak
- Szczytowy rozmiar pamięci wirtualnej.
- VmSize
- Virtual memory size.
- VmLck
- Rozmiar pamięci zablokowanej (patrz mlock(2)).
- VmPin
- Rozmiar pamięci przypiętej (od Linuksa 3.2).
Są to strony które nie mogą
być przeniesione, ponieważ coś wymaga
bezpośredniego dostępu pamięci fizycznej.
- VmHWM
- Peak resident set size ("high water mark"). This value is
inaccurate; see /proc/[pid]/statm above.
- Resident set size. Note that the value here is the sum of RssAnon,
RssFile, and RssShmem. This value is inaccurate; see
/proc/[pid]/statm above.
- Size of resident anonymous memory. (since Linux 4.5). This value is
inaccurate; see /proc/[pid]/statm above.
- Size of resident file mappings. (since Linux 4.5). This value is
inaccurate; see /proc/[pid]/statm above.
- Size of resident shared memory (includes System V shared memory, mappings
from tmpfs(5), and shared anonymous mappings). (since Linux
4.5).
- VmData,
VmStk, VmExe
- Size of data, stack, and text segments. This value is inaccurate; see
/proc/[pid]/statm above.
- VmLib
- Rozmiar kodu biblioteki współdzielonej.
- VmPTE
- Rozmiar wpisów tablicy strony (od Linuksa 2.6.10).
- VmPMD
- Size of second-level page tables (added in Linux 4.0; removed in Linux
4.15).
- VmSwap
- Swapped-out virtual memory size by anonymous private pages; shmem swap
usage is not included (since Linux 2.6.34). This value is inaccurate; see
/proc/[pid]/statm above.
- HugetlbPages
- Size of hugetlb memory portions (since Linux 4.4).
- CoreDumping
- Contains the value 1 if the process is currently dumping core, and 0 if it
is not (since Linux 4.15). This information can be used by a monitoring
process to avoid killing a process that is currently dumping core, which
could result in a corrupted core dump file.
- Threads
- Liczba wątków w procesie zawierających ten
wątek.
- SigQ
- Pole zawiera dwie liczby oddzielone ukośnikiem, które
odnoszą się do skolejkowanych sygnałów do
realnego identyfikatora użytkownika tego procesu. Pierwsza jest
liczbą aktualnie skolejkowanych sygnałów do tego
realnego identyfikatora użytkownika, a druga jest limitem
zasobów liczby skolejkowanych sygnałów do tego
procesu (patrz opis RLIMIT_SIGPENDING w getrlimit(2)).
- SigPnd,
ShdPnd
- Mask (expressed in hexadecimal) of signals pending for thread and for
process as a whole (see pthreads(7) and signal(7)).
- SigBlk,
SigIgn, SigCgt
- Masks (expressed in hexadecimal) indicating signals being blocked,
ignored, and caught (see signal(7)).
- CapInh,
CapPrm, CapEff
- Masks (expressed in hexadecimal) of capabilities enabled in inheritable,
permitted, and effective sets (see capabilities(7)).
- CapBnd
- Capability bounding set, expressed in hexadecimal (since Linux 2.6.26, see
capabilities(7)).
- CapAmb
- Ambient capability set, expressed in hexadecimal (since Linux 4.3, see
capabilities(7)).
- NoNewPrivs
- Value of the no_new_privs bit (since Linux 4.10, see
prctl(2)).
- Seccomp
- Tryb procesu seccomp (od Linuksa 3.8, zob. seccomp(2)). 0 oznacza
SECCOMP_MODE_DISABLED; 1 oznacza SECCOMP_MODE_STRICT; 2
oznacza SECCOMP_MODE_FILTER. Pole to jest udostępnione tylko
gdy jądro zbudowano z włączoną opcją
konfiguracyjną CONFIG_SECCOMP.
- Speculation_Store_Bypass
- Speculation flaw mitigation state (since Linux 4.17, see
prctl(2)).
- Cpus_allowed
- Hexadecimal mask of CPUs on which this process may run (since Linux
2.6.24, see cpuset(7)).
- Cpus_allowed_list
- Jak wyżej, ale w "formacie listy" (od Linuksa 2.6.26,
patrz cpuset(7)).
- Mems_allowed
- Maska węzłów pamięci, dozwolonych dla tego
procesu (od Linuksa 2.6.24, patrz cpuset(7)).
- Mems_allowed_list
- Jak wyżej, ale w "formacie listy" (od Linuksa 2.6.26,
patrz cpuset(7)).
- voluntary_ctxt_switches,
nonvoluntary_ctxt_switches
- Liczba dobrowolnych i przymusowych przełączeń
kontekstu (od Linuksa 2.6.23).
- /proc/[pid]/syscall (od Linuksa 2.6.27)
- Plik udostępnia numer wywołania systemowego i rejestr
argumentu dla aktualnie wykonywanego przez proces wywołania
systemowego, po którym następują wartości
wskaźnika stosu i rejestry liczników programu.
Udostępnianych jest wszystkie sześć rejestrów
argumentu, choć większość
wywołań systemowych używa mniejszej liczby
rejestrów.
- Jeśli proces jest zablokowany, lecz nie w wywołaniu
systemowym, to plik zawiera wartość -1 w miejscu numeru
wywołania systemowego, po którym następują
wartości wskaźnika stosu i licznika programu. Jeśli
proces nie jest zablokowany, to plik zawiera łańcuch
"running".
- Obecne tylko, jeśli jądro zostało skonfigurowane z
CONFIG_HAVE_ARCH_TRACEHOOK.
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_ATTACH_FSCREDS check; see ptrace(2).
- /proc/[pid]/task (od Linuksa 2.6.0)
- This is a directory that contains one subdirectory for each thread in the
process. The name of each subdirectory is the numerical thread ID
([tid]) of the thread (see gettid(2)).
- Within each of these subdirectories, there is a set of files with the same
names and contents as under the /proc/[pid] directories. For
attributes that are shared by all threads, the contents for each of the
files under the task/[tid] subdirectories will be the same as in
the corresponding file in the parent /proc/[pid] directory (e.g.,
in a multithreaded process, all of the task/[tid]/cwd files will
have the same value as the /proc/[pid]/cwd file in the parent
directory, since all of the threads in a process share a working
directory). For attributes that are distinct for each thread, the
corresponding files under task/[tid] may have different values
(e.g., various fields in each of the task/[tid]/status files may be
different for each thread), or they might not exist in /proc/[pid]
at all.
- W procesie wielowątkowym zawartość katalogu
/proc/[pid]/task nie jest dostępna, jeżeli
wątek główny już się
zakończył (najprawdopodobniej wywołując
pthread_exit(3)).
- /proc/[pid]/task/[tid]/children (od Linuksa 3.5)
- A space-separated list of child tasks of this task. Each child task is
represented by its TID.
- This option is intended for use by the checkpoint-restore (CRIU) system,
and reliably provides a list of children only if all of the child
processes are stopped or frozen. It does not work properly if children of
the target task exit while the file is being read! Exiting children may
cause non-exiting children to be omitted from the list. This makes this
interface even more unreliable than classic PID-based approaches if the
inspected task and its children aren't frozen, and most code should
probably not use this interface.
- Until Linux 4.2, the presence of this file was governed by the
CONFIG_CHECKPOINT_RESTORE kernel configuration option. Since Linux
4.2, it is governed by the CONFIG_PROC_CHILDREN option.
- /proc/[pid]/timers (od Linuksa 3.10)
- Lista liczników czasu POSIX dla procesu. Każdy licznik jest
wypisany w wierszu, który rozpoczyna się
łańcuchem "ID:". Na przykład:
-
ID: 1
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 0
ID: 0
signal: 60/00007fff86e452a8
notify: signal/pid.2634
ClockID: 1
- Wiersze dla każdego licznika mają następujące
znaczenie:
- ID
- Identyfikator danego licznika czasu. Nie jest to ten sam identyfikator, co
ten zwracany przez timer_create(2), lecz jest to
wewnątrzjądrowy identyfikator dostępny
również za pomocą pola si_timerid struktury
siginfo_t (zob. sigaction(2)).
- signal
- Numer sygnału używany przez dany licznik do dostarczania
powiadomień, po którym następuje ukośnik a
następnie wartość sigev_value dostarczana do
obsługiwacza sygnału. Poprawne jedynie dla liczników
powiadamiających za pomocą sygnału.
- notify
- Część przed ukośnikiem określa
mechanizm używany przez dany licznik czasu do dostarczania
powiadomień, który jest jedną z wartości
"thread" (wątek), "signal" (sygnał) lub
"none" (brak). Zaraz po ukośniku znajduje się
łańcuch "tid" dla liczników z
powiadomieniami SIGEV_THREAD_ID lub "pid" dla
liczników z innymi mechanizmami powiadamiania. Po "."
znajduje się PID procesu (lub identyfikator wątku
jądra tego wątku) któremu będzie dostarczany
sygnał, jeśli licznik czasu powiadamia za pomocą
sygnału.
- ClockID
- Pole identyfikuje zegar, którego dany licznik czasu używa do
pomiaru czasu. W większości zegarów jest to liczba
która pasuje do jednej ze stałych CLOCK_* w
przestrzeni użytkownika udostępnianych za pomocą
<time.h>. Liczniki CLOCK_PROCESS_CPUTIME_ID
wyświetlają tu wartość -6, natomiast
CLOCK_THREAD_CPUTIME_ID wyświetlają
wartość -2.
- Plik ten jest dostępny tylko jeśli jądro
skonfigurowano z CONFIG_CHECKPOINT_RESTORE.
- /proc/[pid]/timerslack_ns (od Linuksa 4.6)
- This file exposes the process's "current" timer slack value,
expressed in nanoseconds. The file is writable, allowing the process's
timer slack value to be changed. Writing 0 to this file resets the
"current" timer slack to the "default" timer slack
value. For further details, see the discussion of PR_SET_TIMERSLACK
in prctl(2).
- Initially, permission to access this file was governed by a ptrace access
mode PTRACE_MODE_ATTACH_FSCREDS check (see ptrace(2)).
However, this was subsequently deemed too strict a requirement (and had
the side effect that requiring a process to have the CAP_SYS_PTRACE
capability would also allow it to view and change any process's memory).
Therefore, since Linux 4.9, only the (weaker) CAP_SYS_NICE
capability is required to access this file.
- /proc/[pid]/uid_map, /proc/[pid]/gid_map (od Linuksa
3.5)
- Zob. user_namespaces(7).
- /proc/[pid]/wchan (od Linuksa 2.6.0)
- Nazwa symboliczna odnosząca się do położenia,
gdzie proces jest w uśpieniu.
- Permission to access this file is governed by a ptrace access mode
PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
- /proc/[tid]
- There is a numerical subdirectory for each running thread that is not a
thread group leader (i.e., a thread whose thread ID is not the same as its
process ID); the subdirectory is named by the thread ID. Each one of these
subdirectories contains files and subdirectories exposing information
about the thread with the thread ID tid. The contents of these
directories are the same as the corresponding
/proc/[pid]/task/[tid] directories.
- The /proc/[tid] subdirectories are not visible when
iterating through /proc with getdents(2) (and thus are
not visible when one uses ls(1) to view the contents of
/proc). However, the pathnames of these directories are visible to
(i.e., usable as arguments in) system calls that operate on
pathnames.
- /proc/apm
- Wersja APM (Zaawansowane zarządzanie energią) oraz
informacja o akumulatorach, gdy CONFIG_APM było zdefiniowane
podczas kompilacji jądra.
- /proc/buddyinfo
- Plik ten zawiera informacje używane do diagnozowania
problemów z fragmentacją pamięci. Każdy
wiersz zaczyna się identyfikatorem węzła i
nazwą strefy które razem identyfikują region
pamięci. Następnie znajduje się liczba
dostępnych fragmentów określonego rzędu, w
jakim te regiony są podzielone. Rozmiar w bajtach
określonego rzędu jest podany według wzoru:
-
(2^rząd) * ROZMIAR_STRONY
- Algorytm alokacji bliźniaków (ang. buddy) wewnątrz
jądra podzieli jeden fragment na dwa fragmenty mniejszego
rzędu (a więc dwukrotnie mniejsze) lub połączy
dwa ciągłe fragmenty w jeden fragment wyższego
rzędu (a więc dwukrotnie większy) aby
zaspokoić żądanie alokacji i
przeciwdziałać fragmentacji pamięci. Rząd
pasuje do numeru kolumny, zaczynając liczenie od zera.
- Na przykład w systemie x86-64:
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
- W tym przykładzie jest jeden węzeł zawierający
trzy strefy i 11 fragmentów o różnych rozmiarach.
Jeśli rozmiar strony wynosi 4 kilobajty, to pierwsza strefa,
nazywana DMA (na x86 jest to pierwszych 16 megabajtów
pamięci), ma dostępny m.in. jeden fragment o rozmiarze 4
kilobajtów (rząd 0) i 3 fragmenty o rozmiarze 4
megabajtów (rząd 10).
- Jeśli pamięć jest mocno pofragmentowana, liczniki dla
fragmentów wyższego rzędu wyniosą zero, a
przydzielenie większych, ciągłych powierzchni nie
powiedzie się.
- Więcej informacji o strefach można znaleźć w
/proc/zoneinfo.
- /proc/bus
- Zawiera podkatalogi odpowiadające zainstalowanym magistralom.
- /proc/bus/pccard
- Podkatalog dla urządzeń PCMCIA, gdy CONFIG_PCMCIA
było zdefiniowane podczas kompilacji jądra.
- /proc/bus/pccard/drivers
- /proc/bus/pci
- Zawiera różne podkatalogi magistral oraz pseudopliki
zawierające informacje o magistralach PCI, zainstalowanych
urządzeniach oraz sterownikach urządzeń.
Niektóre z tych plików nie są w postaci ASCII.
- /proc/bus/pci/devices
- Informacje o urządzeniach PCI. Dostęp do nich może
się odbywać poprzez lspci(8) i setpci(8).
- /proc/cgroups (od Linuksa 2.6.24)
- Patrz cgroups(7).
- /proc/cmdline
- Argumenty przekazane jądru Linux podczas startu systemu. Zazwyczaj
odbywa się to poprzez zarządcę startu systemu,
takiego jak lilo(8) lub grub(8).
- /proc/config.gz (od Linuksa 2.6)
- Plik pokazuje opcje konfiguracyjne, które były użyte
do zbudowania aktualnie działającego jądra, w tym
samym formacie, jaki jest używany przez plik .config,
który jest wynikiem konfiguracji jądra
(używając make xconfig, make config i
podobnych poleceń). Zawartość pliku jest
skompresowana; można ją odczytać lub wyszukać
za pomocą zcat(1) i zgrep(1). Tak długo jak
nie zostały dokonane zmiany w poniższym pliku,
zawartość /proc/config.gz jest taka sama jak ta
udostępniona przez:
-
cat /lib/modules/$(uname -r)/build/.config
- /proc/config.gz jest udostępniany wyłącznie
wtedy, gdy jądro jest skonfigurowane z
CONFIG_IKCONFIG_PROC.
- /proc/crypto
- A list of the ciphers provided by the kernel crypto API. For details, see
the kernel Linux Kernel Crypto API documentation available under
the kernel source directory Documentation/crypto/ (or
Documentation/DocBook before 4.10; the documentation can be built
using a command such as make htmldocs in the root directory of the
kernel source tree).
- /proc/cpuinfo
- Jest to zbiór elementów zależnych od CPU i
architektury systemu; dla każdej wspieranej architektury jest inna
lista. Dwa popularne wpisy to: processor, który
udostępnia numer CPU oraz bogomips; jest to stała
systemowa, wyliczona podczas inicjalizacji jądra. Maszyny SMP
zawierają informacje o każdym z procesorów. Polecenie
lscpu(1) zbiera ich informacje z tego pliku.
- /proc/devices
- Listing tekstowy numerów głównych oraz grup
urządzeń. Może to służyć
skryptom MAKEDEV do zachowania spójności z
jądrem.
- /proc/diskstats (od wersji Linuksa 2.5.69)
- Plik zawiera statystyki operacji wejścia/wyjścia dla
każdego urządzenia dyskowego. Dalsze informacje można
znaleźć w pliku Documentation/iostats.txt w
źródłach jądra Linux.
- /proc/dma
- Jest listą zarejestrowanych i używanych
kanałów DMA (direct memory access) szyny ISA.
- /proc/driver
- Pusty podkatalog.
- /proc/execdomains
- Lista domen uruchamiania (wcieleń ABI [Application Binary Interface
- przyp. tłum.]).
- /proc/fb
- Informacje o buforze ramki, o ile podczas kompilacji jądra
zdefiniowano CONFIG_FB.
- /proc/filesystems
- Tekstowa lista systemów plików obsługiwanych przez
jądro, a konkretnie systemów plików, które
zostały wkompilowane w jądro lub których
moduły jądra są obecnie załadowane (patrz
również filesystems(5)). Jeśli system
plików jest oznaczony jako "nodev" oznacza to, że
nie wymaga on zamontowania urządzenia blokowego (np. jest to
wirtualny lub sieciowy system plików).
- Plik ten może być niekiedy użyty przez
mount(8), gdy nie podano systemów plików i nie
potrafi on określić typu systemu plików.
Próbowane są wówczas systemy plików wypisane w
tym pliku (poza systemami z oznaczeniem "nodev").
- /proc/fs
- Zawiera podkatalogi, które w kolejności zawierają
pliki z informacjami o (pewnych) zamontowanych systemach
plików.
- /proc/ide
- Katalog ten istnieje w systemach zawierających magistralę
IDE. Zawiera po jednym katalogu dla każdego kanału IDE oraz
dla przyłączonych urządzeń.
Wśród plików są:
-
cache buffer size in KB
capacity number of sectors
driver driver version
geometry physical and logical geometry
identify in hexadecimal
media media type
model manufacturer's model number
settings drive settings
smart_thresholds IDE disk management thresholds (in hex)
smart_values IDE disk management values (in hex)
- Dostęp do tych informacji w przyjaznym formacie umożliwia
program narzędziowy hdparm(8).
- /proc/interrupts
- Plik jest używany do zapisania liczby przerwań na procesor
na urządzenie wejścia/wyjścia. Od Linuksa 2.6.24,
przynajmniej do architektur i386 i x86-64 zawiera on również
przerwania wewnętrznosystemowe (to znaczy nie związane z
urządzeniem jako takim), takie jak NMI (nonmaskable interrupt), LOC
(local timer interrupt) i do systemów SMP: TLB (TLB flush
interrupt), RES (rescheduling interrupt), CAL (remote function call
interrupt), mogą również występować
inne. Formatowanie jest bardzo czytelne do odczytu, wykonane w ASCII.
- /proc/iomem
- Odwzorowanie portów we/wy w pamięci w Linuksie 2.4.
- /proc/ioports
- Jest to lista obecnie zarejestrowanych i używanych obszarów
portów we/wy.
- /proc/kallsyms (od wersji Linuksa 2.5.71)
- Zawiera wyeksportowane przez jądro definicje symboli, które
są używane przez narzędzia modules(X) do
dynamicznego podłączania ładowanych
modułów. W wersji jądra Linux 2.5.47 i
wcześniejszych podobny plik z troszkę odmienną
zawartością był nazwany ksyms.
- /proc/kcore
- Plik ten reprezentuje pamięć fizyczną systemu i jest
zachowany w formacie pliku core dla ELF. Korzystając z tego
pseudopliku oraz z niezestripowanego binarnego pliku jądra
(/usr/src/linux/vmlinux), można za pomocą GDB
testować aktualny stan dowolnej struktury danych jądra.
- Całkowity rozmiar tego pliku to rozmiar fizycznej pamięci
(RAM) plus 4 KiB.
- /proc/keys (od Linuksa 2.6.10)
- Patrz keyrings(7).
- /proc/key-users (od Linuksa 2.6.10)
- Patrz keyrings(7).
- /proc/kmsg
- Plik ten może służyć do odczytu
komunikatów jądra, zamiast funkcji systemowej
syslog(2). Aby odczytać ten plik, proces musi mieć
uprawnienia superużytkownika i tylko jeden proces powinien
dokonywać jego odczytu. Pliku tego nie należy czytać,
gdy działa proces syslog, korzystający z funkcji systemowej
syslog(2) do rejestrowania komunikatów jądra.
- Z tego pliku pobiera komunikaty program dmesg(1).
- /proc/kpagecgroup (od Linuksa 4.3)
- This file contains a 64-bit inode number of the memory cgroup each page is
charged to, indexed by page frame number (see the discussion of
/proc/[pid]/pagemap).
- Plik /proc/kpagecgroup istnieje tylko jeśli podczas
kompilacji jądra włączono opcję
CONFIG_MEMCG.
- /proc/kpagecount (od Linuksa 2.6.25)
- Plik zawiera 64-bitowy licznik wskazujący ile razy zmapowano
każdą z ramek strony fizycznej, indeksowaną numerem
ramki strony (zob. opis w /proc/[pid]/pagemap).
- Plik /proc/kpagecount istnieje tylko jeśli podczas
kompilacji jądra włączono opcję
CONFIG_PROC_PAGE_MONITOR.
- /proc/kpageflags (od Linuksa 2.6.25)
- Plik zawiera 64-bitowe maski odpowiadające każdej z ramek
strony fizycznej; indeksowanej numerem ramki strony (zob. opis w
/proc/[pid]/pagemap). Oto zestawienie poszczególnych
bitów:
-
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 (od Linuksa 2.6.31)
12 - KPF_ANON (od Linuksa 2.6.31)
13 - KPF_SWAPCACHE (od Linuksa 2.6.31)
14 - KPF_SWAPBACKED (od Linuksa 2.6.31)
15 - KPF_COMPOUND_HEAD (od Linuksa 2.6.31)
16 - KPF_COMPOUND_TAIL (od Linuksa 2.6.31)
17 - KPF_HUGE (od Linuksa 2.6.31)
18 - KPF_UNEVICTABLE (od Linuksa 2.6.31)
19 - KPF_HWPOISON (od Linuksa 2.6.31)
20 - KPF_NOPAGE (od Linuksa 2.6.31)
21 - KPF_KSM (od Linuksa 2.6.32)
22 - KPF_THP (od Linuksa 3.4)
23 - KPF_BALLOON (od Linuksa 3.18)
24 - KPF_ZERO_PAGE (od Linuksa 4.0)
25 - KPF_IDLE (od Linuksa 4.3)
- Więcej informacji o znaczeniu tych bitów znajduje się
w pliku źródeł jądra
Documentation/admin-guide/mm/pagemap.rst. Przed
wersją 2.6.29 jądra KPF_WRITEBACK,
KPF_RECLAIM, KPF_BUDDY i KPF_LOCKED nie były
poprawnie zgłaszane.
- Plik /proc/kpageflags istnieje tylko jeśli podczas
kompilacji jądra włączono opcję
CONFIG_PROC_PAGE_MONITOR.
- /proc/ksyms (Linux 1.1.23–2.5.47)
- Patrz /proc/kallsyms.
- /proc/loadavg
- Pierwsze trzy pola w tym pliku zawierają średnie
obciążenie (loadavg) podając informację o
średniej liczbie zadań uruchomionych (stan R) oraz
czekających na dyskowe operacje wejścia/wyjścia (stan
D) w ciągu ostatnich 1, 5 i 15 minut. Są to te same
wartości średniego obciążenia, które
podaje uptime(1) i inne programy. Czwarte pole zawiera dwie liczby
oddzielone od siebie znakiem ukośnika (/). Pierwsza z nich jest
liczbą obecnie wykonywanych zadań (procesów,
wątków). Wartość za ukośnikiem jest
liczbą zadań, obecnych w systemie. Piąte pole zawiera
PID najnowszego ostatnio utworzonego procesu w systemie.
- /proc/locks
- Plik ten pokazuje aktualne blokady plików (flock(2) i
fcntl(2)) oraz dzierżawy (fcntl(2)).
- An example of the content shown in this file is the following:
-
1: POSIX ADVISORY READ 5433 08:01:7864448 128 128
2: FLOCK ADVISORY WRITE 2001 08:01:7864554 0 EOF
3: FLOCK ADVISORY WRITE 1568 00:2f:32388 0 EOF
4: POSIX ADVISORY WRITE 699 00:16:28457 0 EOF
5: POSIX ADVISORY WRITE 764 00:16:21448 0 0
6: POSIX ADVISORY READ 3548 08:01:7867240 1 1
7: POSIX ADVISORY READ 3548 08:01:7865567 1826 2335
8: OFDLCK ADVISORY WRITE -1 08:01:8713209 128 191
- The fields shown in each line are as follows:
- (1)
- The ordinal position of the lock in the list.
- (2)
- The lock type. Values that may appear here include:
- (3)
- Among the strings that can appear here are the following:
- (4)
- The type of lock. Values that can appear here are:
- READ
- This is a POSIX or OFD read lock, or a BSD shared lock.
- WRITE
- This is a POSIX or OFD write lock, or a BSD exclusive lock.
- (5)
- The PID of the process that owns the lock.
- Because OFD locks are not owned by a single process (since multiple
processes may have file descriptors that refer to the same open file
description), the value -1 is displayed in this field for OFD locks.
(Before kernel 4.14, a bug meant that the PID of the process that
initially acquired the lock was displayed instead of the value -1.)
- (6)
- Three colon-separated subfields that identify the major and minor device
ID of the device containing the filesystem where the locked file resides,
followed by the inode number of the locked file.
- (7)
- The byte offset of the first byte of the lock. For BSD locks, this value
is always 0.
- (8)
- The byte offset of the last byte of the lock. EOF in this field
means that the lock extends to the end of the file. For BSD locks, the
value shown is always EOF.
- Since Linux 4.9, the list of locks shown in /proc/locks is filtered
to show just the locks for the processes in the PID namespace (see
pid_namespaces(7)) for which the /proc filesystem was
mounted. (In the initial PID namespace, there is no filtering of the
records shown in this file.)
- The lslocks(8) command provides a bit more information about each
lock.
- /proc/malloc (tylko do wersji 2.2 Linuksa
włącznie)
- Ten plik istnieje tylko jeśli podczas kompilacji zdefiniowano
CONFIG_DEBUG_MALLOC.
- /proc/meminfo
- Plik zawiera statystyki nt. użycia pamięci w systemie.
Używa go free(1) do wskazania wielkości wolnej i
użytej pamięci (zarówno fizycznej jak i wymiany) w
systemie jak również pamięci dzielonej i
buforów używanych przez jądro. Każdy wiersz
składa się z nazwy parametru, dwukropka, wartości
parametru i opcjonalnej jednostki pomiaru (np. "kB").
Poniższa lista opisuje nazwy parametrów i format wymagany do
odczytu wartości pól. Z wyjątkiem wyraźnie
wskazanych pól, wszystkie są obecne od co najmniej Linuksa
2.6.0. Część pól jest wyświetlanych
tylko jeśli jądro zostało skonfigurowane z pewnymi
opcjami, te zależności zaznaczono wówczas w
opisie.
- MemTotal
%lu
- Całkowity użyteczny RAM (tzn. pamięć fizyczna
RAM - kilka zarezerwowanych bitów i kod binarny jądra).
- MemFree
%lu
- Suma LowFree+HighFree.
- MemAvailable
%lu (od Linuksa 3.14)
- Przybliżona wartość dostępnej pamięci
do uruchamiania nowych aplikacji, bez pamięci wymiany.
- Buffers
%lu
- Relatywnie tymczasowe miejsce przechowywania surowych bloków
dyskowych które nie powinno być zbyt duże
(rzędu 20 MB).
- Cached %lu
- Bufor w pamięci przeznaczony na plik odczytane z dysku (bufora
strony). Nie obejmuje SwapCached.
- SwapCached
%lu
- Pamięć, która została przeniesiona do
pamięci wymiany jest później pobierana do
pamięci i pozostawiana jednocześnie w pliku wymiany
(jeśli jest duże zapotrzebowanie na pamięć, te
strony nie muszą być ponownie przenoszone do pamięci
wymiany, ponieważ już znajdują się w pliku
wymiany. Unika się w ten sposób zbędnych operacji
wejścia/wyjścia).
- Active %lu
- Pamięć która była ostatnio używana. Z
reguły nie jest odzyskiwana poza absolutnie koniecznymi
przypadkami.
- Inactive
%lu
- Pamięć która była ostatnio słabiej
używana. Nadaje się w większym stopniu do odzyskania
do innych celów.
- Active(anon)
%lu (od Linuksa 2.6.28)
- [do udokumentowania]
- Inactive(anon)
%lu (od Linuksa 2.6.28)
- [do udokumentowania]
- Active(file)
%lu (od Linuksa 2.6.28)
- [do udokumentowania]
- Inactive(file)
%lu (od Linuksa 2.6.28)
- [do udokumentowania]
- Unevictable
%lu (od Linuksa 2.6.28)
- (Od Linuksa 2.6.28 do 2.6.30 wymagane było
CONFIG_UNEVICTABLE_LRU) [do udokumentowania]
- Mlocked %lu (od
Linuksa 2.6.28)
- (Od Linuksa 2.6.28 do 2.6.30 wymagane było
CONFIG_UNEVICTABLE_LRU) [do udokumentowania]
- HighTotal
%lu
- (od Linuksa 2.6.19 wymagane jest CONFIG_HIGHMEM) Całkowita
wielkość pamięci highmem. Jest to
pamięć powyżej ~860 MB pamięci fizycznej.
Obszary highmem są przeznaczone do użycia przez programy w
przestrzeni użytkownika lub przez bufor strony. Jądro musi
używać pewnych sztuczek aby uzyskać dostęp do
tej pamięci, co czyni dostęp wolniejszym niż do
pamięci lowmem.
- HighFree
%lu
- (od Linuksa 2.6.19 wymagane jest CONFIG_HIGHMEM)
Wielkość wolnej pamięci highmem.
- LowTotal
%lu
- (od Linuksa 2.6.19 wymagane jest CONFIG_HIGHMEM)
Wielkość całkowita pamięci lowmem. Lowmem to
pamięć którą można użyć
do tych samych celów co highmem, lecz jest również
dostępna dla wewnętrznych struktur danych jądra. Jest
to między innymi miejsce, gdzie przydzielane jest wszystko ze
Slab. Gdy zabraknie pamięci lowmem należy się
spodziewać złych wiadomości.
- LowFree
%lu
- (od Linuksa 2.6.19 wymagane jest CONFIG_HIGHMEM)
Wielkość wolnej pamięci lowmem.
- MmapCopy %lu
(od Linuksa 2.6.29)
- (wymagane jest CONFIG_MMU) [do udokumentowania]
- SwapTotal
%lu
- Całkowita wielkość dostępnej pamięci
wymiany.
- SwapFree
%lu
- Wielkość aktualnie nieużywanej pamięci
wymiany.
- Dirty %lu
- Pamięć czekająca na ponowny zapis na dysk.
- Writeback
%lu
- Pamięć zapisywana obecnie na dysk.
- AnonPages %lu
(od Linuksa 2.6.18)
- Strony nie mające zapasu w postaci pliku zmapowane do tabel stron w
przestrzeni użytkownika.
- Mapped %lu
- Pliki które zostały zmapowane do pamięci (za
pomocą mmap(2)) np. biblioteki.
- Shmem %lu (od Linuksa
2.6.32)
- Amount of memory consumed in tmpfs(5) filesystems.
- KReclaimable
%lu (od Linuksa 4.20)
- Kernel allocations that the kernel will attempt to reclaim under memory
pressure. Includes SReclaimable (below), and other direct
allocations with a shrinker.
- Slab %lu
- Wewnętrzny bufor jądra przeznaczony na jego struktury
danych. (Patrz slabinfo(5).)
- SReclaimable
%lu (od Linuksa 2.6.19)
- Część Slab, która może
być przypisana ponownie, taka jak pamięć
podręczna.
- SUnreclaim
%lu (od Linuksa 2.6.19)
- Część Slab niemogąca być
przypisana ponownie przy małej ilości pamięci.
- KernelStack
%lu (od Linuksa 2.6.32)
- Wielkość pamięci przypisana do stosów
jądra.
- PageTables
%lu (od Linuksa 2.6.18)
- Wielkość pamięci przypisana do najniższego
poziomu tabel stron.
- Quicklists
%lu (od Linuksa 2.6.27)
- (wymagane jest CONFIG_QUICKLIST) [do udokumentowania]
- NFS_Unstable
%lu (od Linuksa 2.6.18)
- Strony NFS wysłane do serwera, lecz jeszcze nie wprowadzone na
stabilny nośnik.
- Bounce %lu (od
Linuksa 2.6.18)
- Pamięć używana do urządzenia blokowego
"bounce buffer".
- WritebackTmp
%lu (od Linuksa 2.6.26)
- Pamięć używana przez FUSE do tymczasowych
buforów pamięci z buforowaniem zapisu.
- CommitLimit
%lu (od Linuksa 2.6.10)
- Jest to całkowita wielkość pamięci
dostępnej obecnie do przydzielenia w systemie wyrażona w
kilobajtach. Limit jest przestrzegany jedynie gdy włączono
ścisłe rozliczanie overcommitu (tryb 2 w
/proc/sys/vm/overcommit_memory). Limit jest obliczany na podstawie
wzoru opisanego przy /proc/sys/vm/overcommit_memory. Więcej
informacji znajduje się w pliku źródeł
jądra Documentation/vm/overcommit-accounting.rst.
- Committed_AS
%lu
- Wielkość pamięci obecnie przypisanej w systemie. Jest
to suma pamięci zaalokowanej przez procesy, nawet jeśli jej
jeszcze nie "użyły". Proces alokujący 1 GB
pamięci (za pomocą malloc(3) lub podobnej
konstrukcji), używający jedynie 300 MB pamięci,
będzie pokazywał użycie tych 300 MB pamięci,
nawet jeśli przydzielił przestrzeń adresową
dla całego 1 GB.
- Ten 1 GB to pamięć "zatwierdzona" przez VM,
która może być użyta przez tę
aplikację w dowolnym czasie. Gdy włączone jest
ścisły overcommit (tryb 2 w
/proc/sys/vm/overcommit_memory) alokacja która
przekroczyłaby CommitLimit jest niedozwolona. Jest to
przydatne do zagwarantowania, że proces nie zawiedzie z powodu
braku pamięci po jej poprawnym przydzieleniu.
- VmallocTotal
%lu
- Całkowity rozmiar obszaru pamięci vmalloc.
- VmallocUsed
%lu
- Amount of vmalloc area which is used. Since Linux 4.4, this field is no
longer calculated, and is hard coded as 0. See
/proc/vmallocinfo.
- VmallocChunk
%lu
- Largest contiguous block of vmalloc area which is free. Since Linux 4.4,
this field is no longer calculated and is hard coded as 0. See
/proc/vmallocinfo.
- HardwareCorrupted
%lu (od Linuksa 2.6.32)
- (wymagane jest CONFIG_MEMORY_FAILURE) [do udokumentowania]
- LazyFree %lu
(od Linuksa 4.12)
- Shows the amount of memory marked by madvise(2)
MADV_FREE.
- AnonHugePages
%lu (od Linuksa 2.6.38)
- (wymagane jest CONFIG_TRANSPARENT_HUGEPAGE) Duże strony nie
mające zapasu w postaci pliku zmapowane do tabel stron w
przestrzeni użytkownika.
- ShmemHugePages
%lu (od Linuksa 4.8)
- (CONFIG_TRANSPARENT_HUGEPAGE is required.) Memory used by shared
memory (shmem) and tmpfs(5) allocated with huge pages.
- ShmemPmdMapped
%lu (od Linuksa 4.8)
- (CONFIG_TRANSPARENT_HUGEPAGE is required.) Shared memory mapped
into user space with huge pages.
- CmaTotal %lu
(od Linuksa 3.1)
- Łącznie stron CMA (Contiguous Memory Allocator) (wymagane
jest CONFIG_CMA).
- CmaFree %lu (od
Linuksa 3.1)
- Wolne strony CMA (Contiguous Memory Allocator) (wymagane jest
CONFIG_CMA)
- HugePages_Total
%lu
- (wymagane jest CONFIG_HUGETLB_PAGE) Rozmiar puli dużych
stron.
- HugePages_Free
%lu
- (wymagane jest CONFIG_HUGETLB_PAGE) Liczba dużych stron w
puli, które nie są jeszcze przydzielone.
- HugePages_Rsvd
%lu (od Linuksa 2.6.17)
- (wymagane jest CONFIG_HUGETLB_PAGE) Jest to liczba dużych
stron które przeznaczono do przydzielenia z puli, lecz jeszcze jej
nie przeprowadzono. Zarezerwowane duże strony gwarantują,
że aplikacja będzie w stanie przypisać taką
stronę w razie błędu.
- HugePages_Surp
%lu (od Linuksa 2.6.24)
- (wymagane jest CONFIG_HUGETLB_PAGE) Jest to liczba dużych
stron z puli powyżej wartości
/proc/sys/vm/nr_hugepages. Maksymalna liczba nadwyżki
dużych stron jest kontrolowana przez
/proc/sys/vm/nr_overcommit_hugepages.
- Hugepagesize
%lu
- (wymagane jest CONFIG_HUGETLB_PAGE) Rozmiar dużych
stron.
- DirectMap4k
%lu (od Linuksa 2.6.27)
- Liczba bajtów RAM-u liniowo przypisanych przez jądro w
stronach 4 kB (x86).
- DirectMap4M
%lu (od Linuksa 2.6.27)
- Liczba bajtów RAM-u liniowo przypisanych przez jądro w
stronach 4 MB (x86 z włączonym CONFIG_X86_64 lub
CONFIG_X86_PAE).
- DirectMap2M
%lu (od Linuksa 2.6.27)
- Liczba bajtów RAM-u liniowo przypisanych przez jądro w
stronach 2 MB (x86 bez włączonego CONFIG_X86_64 ani
CONFIG_X86_PAE).
- DirectMap1G
%lu (od Linuksa 2.6.27)
- (x86 z włączonym CONFIG_X86_64 i
CONFIG_X86_DIRECT_GBPAGES)
- /proc/modules
- Tekstowa lista modułów, które załadowano w
systemie. Zobacz także lsmod(8).
- /proc/mounts
- Przed jądrem 2.4.19 plik ten był listą wszystkich
systemów plików zamontowanych aktualnie w systemie. Wraz z
wprowadzeniem przestrzeni nazw montowań przydzielanych dla procesu
w Linuksie 2.4.19 (zob. mount_namespaces(7)), plik ten stał
się dowiązaniem do /proc/self/mounts, który
zawiera listę punktów montowań we własnej
przestrzeni nazw montowań procesu. Format tego pliku jest opisany w
fstab(5).
- /proc/mtrr
- Memory Type Range Registers. See the Linux kernel source file
Documentation/x86/mtrr.txt (or Documentation/mtrr.txt before
Linux 2.6.28) for details.
- /proc/net
- This directory contains various files and subdirectories containing
information about the networking layer. The files contain ASCII structures
and are, therefore, readable with cat(1). However, the standard
netstat(8) suite provides much cleaner access to these files.
- With the advent of network namespaces, various information relating to the
network stack is virtualized (see network_namespaces(7)). Thus,
since Linux 2.6.25, /proc/net is a symbolic link to the directory
/proc/self/net, which contains the same files and directories as
listed below. However, these files and directories now expose information
for the network namespace of which the process is a member.
- /proc/net/arp
- Zawiera zrzut tabeli ARP jądra używanej do
rozwiązywania adresów, w czytelnej postaci ASCII. Pokazane
zostaną zarówno wyuczone dynamicznie, jak i wstępnie
zaprogramowane wpisy w tabeli ARP. Format jest
następujący:
-
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
- Gdzie "IP address" jest adresem IPv4 maszyny, a "HW
type" jest rodzajem sprzętu wg RFC 826.
"Flags" są to wewnętrzne znaczniki struktury ARP
(zdefiniowane w /usr/include/linux/if_arp.h), a "HW
address" jest odwzorowaniem adresu IP w warstwie fizycznej,
jeśli jest ono określone.
- /proc/net/dev
- Pseudoplik dev zawiera informacje o stanie urządzenia sieciowego.
Zawierają one liczbę otrzymanych i wysłanych
pakietów, liczbę błędów i kolizji oraz
inne podstawowe statystyki. Informacje te są wykorzystywane przez
program ifconfig(8) do informowania o stanie urządzenia.
Format jest następujący:
-
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
- Zdefiniowany w /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
- Internetowy Protokół Zarządzania Grupami.
Zdefiniowany w /usr/src/linux/net/core/igmp.c.
- /proc/net/rarp
- Plik ten ma ten sam format, co plik arp i zawiera aktualną
bazę odwrotnych odwzorowań, używaną do
udostępniania usług odwrotnego poszukiwania adresów
rarp(8). Jeśli RARP nie jest skonfigurowane w jądrze,
to plik ten nie będzie istniał.
- /proc/net/raw
- Zawiera zrzut tabeli gniazd surowych (RAW). Większość
informacji nie jest przeznaczona do użytku innego niż
odpluskwiania. Wartość "sl" jest slotem mieszania
jądra dla gniazda, "local_address" jest parą
składającą się z lokalnego adresu i numeru
protokołu. "st" jest stanem wewnętrznym gniazda.
"tx_queue" i "rx_queue" są kolejkami danych
przychodzących i wychodzących, w sensie zużycia
pamięci jądra. Pola "tr", "tm->when"
i "rexmits" nie są używane przez gniazda surowe.
Pole "uid" zawiera efektywny UID twórcy gniazda.
- /proc/net/snmp
- Ten plik zawiera dane ASCII potrzebne bazom agenta SNMP
zarządzającym informacjami o IP, ICMP, TCP i UDP.
- /proc/net/tcp
- Zawiera zrzut tabeli gniazd TCP. Wiele informacji nie przydaje się
do użytku poza odpluskwianiem. Wartość "sl"
jest slotem mieszania jądra dla gniazda, "local_address"
jest parą składającą się z lokalnego
adresu i numeru portu. "rem_address" jest parą
składającą się ze zdalnego adresu i numeru
portu (jeśli gniazdo jest podłączone). "St"
jest stanem wewnętrznym gniazda. "tx_queue" i
"rx_queue" są kolejkami danych przychodzących i
wychodzących w sensie zużycia pamięci jądra.
Pola "tr", "tm-when" i "rexmits"
zawierają wewnętrzne informacje o stanie gniazda w
jądrze i są przydatne tylko do odpluskwiania. Pole
"uid" zawiera efektywny UID twórcy gniazda.
- /proc/net/udp
- Zawiera zrzut tabeli gniazd UDP. Wiele informacji nie przydaje się
do użytku poza odpluskwianiem. Wartość "sl"
jest slotem mieszania jądra dla gniazda, "local_address"
jest parą składającą się z lokalnego
adresu i numeru portu. "rem_address" jest parą
składającą się ze zdalnego adresu i numeru
portu (jeśli gniazdo jest podłączone). "st"
jest stanem wewnętrznym gniazda. "tx_queue" i
"rx_queue" są kolejkami danych przychodzących i
wychodzących w sensie zużycia pamięci jądra.
Pola "tr", "tm-when" i "rexmits" nie
są używane w gniazdach UDP. Pole "uid" zawiera
efektywny UID twórcy gniazda. Format jest
następujący:
-
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
- Wymienia gniazda domeny UNIX, obecne w systemie oraz ich stan. Format jest
następujący:
-
Num RefCount Protocol Flags Type St Inode Path
0: 00000002 00000000 00000000 0001 03 42
1: 00000001 00000000 00010000 0001 01 1948 /dev/printer
- Występują następujące pola:
- Num:
- numer slotu tabeli jądra.
- RefCount:
- numer użytkowników gniazda.
- Protocol:
- obecnie zawsze 0.
- Flags:
- wewnętrzne flagi jądra przechowujące status
gniazda.
- Type:
- typ gniazda. Dla gniazd SOCK_STREAM jest to 0001; dla gniazd
SOCK_DGRAM jest to 0002, a dla gniazd SOCK_SEQPACKET jest to
0005.
- St:
- wewnętrzny stan gniazda.
- Inode:
- the inode number of the socket.
- Path:
- the bound pathname (if any) of the socket. Sockets in the abstract
namespace are included in the list, and are shown with a Path that
commences with the character '@'.
- /proc/net/netfilter/nfnetlink_queue
- Plik zawiera informacji o kolejkowaniu netfilter w przestrzeni
użytkownika. Każdy wiersz reprezentuje kolejkę.
Kolejki które nie zostały wpisane z przestrzeni
użytkownika nie są pokazywane.
-
1 4207 0 2 65535 0 0 0 1
(1) (2) (3)(4) (5) (6) (7) (8)
- Pola w każdym wierszu są następujące:
- (1)
- Identyfikator kolejki. Pasuje on do tego co określono w opcjach
--queue-num lub --queue-balance do celu NFQUEUE
iptables(8). Zob. iptables-extensions(8) aby uzyskać
więcej informacji.
- (2)
- Identyfikator portu netlink zapisanego do kolejki.
- (3)
- Liczba pakietów obecnie zakolejkowanych i czekających na
przetworzenie przez aplikację.
- (4)
- Tryb kopiowania kolejki. Jest to albo (tylko metadane) lub 2 (kopiuje
również właściwe dane do przestrzeni
użytkownika).
- (5)
- Zakres kopii, tj. maksymalna wartość bajtów pakietu
właściwych danych jaka powinna być skopiowana
do przestrzeni użytkownika.
- (6)
- Porzucone kolejki. Liczba pakietów, które musiały
zostać porzucone przez jądra, ponieważ zbyt
dużo pakietów czekało już na przestrzeń
użytkownika na odesłanie obowiązkowych poleceń
akceptuj/porzuć.
- (7)
- Porzucone kolejki użytkownika. Liczba pakietów porzuconych
wewnątrz podsystemu netlink. Takie porzucenia
następują zwykle przy zapełnieniu odpowiedniego
bufora gniazda, tj. przestrzeń użytkownika nie jest w stanie
odpowiednio szybko odczytywać wiadomości.
- (8)
- Numer sekwencji. Każdy pakiet kolejki jest powiązany z
(32-bitowym) monotonicznie rosnącym numerem sekwencji. Pokazuje to
ID najnowszego skolejkowanego pakietu.
- Ostatnia liczba istnieje tylko z powodów kompatybilności i
wynosi zawsze 1.
- /proc/partitions
- Zawiera liczby główne i poboczne każdej z partycji
oraz liczby 1024-bajtowych bloków i nazwy partycji.
- /proc/pci
- Listing wszystkich urządzeń PCI znalezionych podczas
inicjalizacji jądra i ich konfiguracja.
- Plik został zastąpiony nowym interfejsem /proc do PCI
(/proc/bus/pci). Stał się opcjonalny w Linuksie 2.2
(dostępny przy ustawieniu opcji CONFIG_PCI_OLD_PROC przy
kompilacji jądra). Ponownie stał się nieopcjonalny w
Linuksie 2.4. Następnie, został uznany za
przestarzały w Linuksie 2.6 (był wciąż
dostępny przy ustawieniu CONFIG_PCI_LEGACY_PROC), aż
w końcu usunięto go w Linuksie 2.6.17.
- /proc/profile (od Linuksa 2.4)
- Plik obecny jest wyłącznie jeśli jądro
zostało uruchomione z opcją profile=1 wiersza
poleceń. Jądro udostępni informacje dotyczące
profilowania w formacie binarnym gotowym do użycia przez
readprofile(1). Zapis (np. pustego łańcucha) do tego
pliku wyzeruje liczniki profilowania, a na niektórych
architekturach zapis binarnej liczby całkowitej
"mnożnika profilowania" rozmiaru sizeof(int)
ustawi częstotliwość przerwań
profilowania.
- /proc/scsi
- Katalog z pseudoplikiem scsi na pośrednim poziomie i
różnymi podkatalogami niskopoziomowych sterowników
SCSI, zawierającymi po jednym pliku dla każdego kontrolera
SCSI w danym systemie; każdy z nich podaje stan jakiejś
części podsystemu we/wy SCSI. Pliki te zawierają
struktury ASCII i dlatego nadają się do odczytu za
pomocą cat(1).
- Możliwy jest też zapis do niektórych z tych
plików, w celu rekonfiguracji podsystemu, lub
przełączania różnych parametrów.
- /proc/scsi/scsi
- Jest wypisaniem wszystkich znanych jądru urządzeń
SCSI. Listing jest podobny do widzianego podczas ładowania systemu.
scsi wspiera obecnie tylko polecenie add-single-device
umożliwiające rootowi dodanie do listy znanych
urządzeń urządzenia włączonego na
gorąco.
- Polecenie
-
echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi
- spowoduje, że kontroler scsi1 przeprowadzi skanowanie kanału
SCSI 0 w poszukiwaniu urządzenia o ID 5 i LUN 0. Jeśli
już istnieje urządzenie o takim adresie, lub adres jest
nieprawidłowy, zostanie zwrócony błąd.
- /proc/scsi/[nazwa-sterownika]
- [nazwa-sterownika] może obecnie być jedną z:
NCR53c7xx, aha152x, aha1542, aha1740, aic7xxx, buslogic, eata_dma,
eata_pio, fdomain, in2000, pas16, qlogic, scsi_debug, seagate, t128,
u15-24f, ultrastore, or wd7000. Ukazują się te z
katalogów, dla których odpowiednie sterowniki
zarejestrowały przynajmniej jeden kontroler SCSI. Każdy
katalog zawiera jeden plik dla każdego zarejestrowanego kontrolera.
Każdy z plików kontrolera ma nazwę
odpowiadającą numerowi kontrolera, przyznanemu podczas jego
inicjacji.
- Czytanie tych plików zwykle pokaże konfigurację
sterownika i kontrolera, statystyki itp.
- Pisanie do tych plików umożliwia różne
operacje na różnych kontrolerach. Na przykład za
pomocą poleceń latency i nolatency root
może uaktywniać lub deaktywować kod pomiaru czasu
oczekiwania dla poleceń (command latency) w sterowniku eata_dma. Za
pomocą poleceń lockup i unlock root
może sterować symulowanym przez sterownik scsi_debug
blokowaniem magistrali.
- /proc/self
- Ten katalog odnosi się do procesu korzystającego z systemu
plików /proc i jest identyczny z katalogiem w /proc o
nazwie będącej jego PID-em.
- /proc/slabinfo
- Information about kernel caches. See slabinfo(5) for details.
- /proc/stat
- statystyki jądra/systemu. Różnią się
pomiędzy architekturami. Wśród wspólnych
wpisów są:
- cpu 10132153 290696 3084719
46828483 16683 0 25195 0 175628 0
- cpu0 1393280 32966 572056
13343292 6130 0 17875 0 23933 0
- The amount of time, measured in units of USER_HZ (1/100ths of a second on
most architectures, use sysconf(_SC_CLK_TCK) to obtain the right
value), that the system ("cpu" line) or the specific CPU
("cpuN" line) spent in various states:
- user
- (1) Czas spędzony w trybie użytkownika.
- nice
- (2) Czas spędzony w trybie użytkownika z niskim priorytetem
(nice).
- system
- (3) Czas spędzony w trybie systemowym.
- idle
- (4) Czas wykorzystany na zadanie bezczynności.
Wartość powinna wynosić USER_HZ razy drugi wpis w
pseudopliku /proc/uptime.
- iowait (od Linuksa
2.5.41)
- (5) Time waiting for I/O to complete. This value is not reliable, for the
following reasons:
- 1.
- The CPU will not wait for I/O to complete; iowait is the time that a task
is waiting for I/O to complete. When a CPU goes into idle state for
outstanding task I/O, another task will be scheduled on this CPU.
- 2.
- On a multi-core CPU, the task waiting for I/O to complete is not running
on any CPU, so the iowait of each CPU is difficult to calculate.
- 3.
- The value in this field may decrease in certain conditions.
- irq (od Linuksa
2.6.0)
- (6) Czas obsługi przerwań.
- softirq (od
Linuksa 2.6.0)
- (7) Czas obsługi przerwań programowych.
- steal (od Linuksa
2.6.11)
- (8) Czas "skradziony", który jest czasem spędzonym
w innym systemie operacyjnym podczas pracy w środowisku
zwirtualizowanym.
- guest (od Linuksa
2.6.24)
- (9) Czas spędzony podczas działania na wirtualnym procesorze
systemu operacyjnego gościa, pod kontrolą jądra
Linux.
- guest_nice
(od Linuksa 2.6.33)
- (10) Czas spędzony podczas działania na wirtualnym
procesorze systemu operacyjnego gościa, pod kontrolą
jądra Linux.
- page 5741 1808
- Liczba stron, które system wstronicował i liczba tych,
które wystronicował (z dysku).
- swap 1 0
- Liczba stron wymiany, które wniesiono i wyniesiono.
- intr 1462898
- Linia ta pokazuje licznik przerwań obsłużonych od
czasu uruchomienia dla każdego możliwego przerwania
systemowego. Pierwsza kolumna określa całkowitą
liczbę wszystkich obsłużonych przerwań w tym
nienumerowanych przerwań swoistych dla architektury, każda
następna określa całkowitą
wartość dla danego numerowanego przerwania. Nienumerowane
przerwania nie są pokazywane, jedynie sumowane do
całości.
- 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)
(tylko Linux 2.4)
- ctxt 115315
- Liczba przełączeń kontekstu, które
przeszedł system.
- btime
769041601
- Czas uruchomienia systemu, w sekundach od epoki: 1970-01-01 00:00:00 +0000
(UTC).
- processes
86031
- Liczba rozwidleń procesów od uruchomienia systemu.
- procs_running
6
- Liczba procesów w stanie runnable (Linux 2.5.45 i
późniejsze).
- procs_blocked
2
- Liczba procesów oczekujących na zakończenie operacji
wejścia/wyjścia (Linux 2.5.45 i
późniejsze).
- softirq 229245889
94 60001584 13619 5175704 2471304 28 51212741 59130143 0
51240672
- This line shows the number of softirq for all CPUs. The first column is
the total of all softirqs and each subsequent column is the total for
particular softirq. (Linux 2.6.31 onward.)
- /proc/swaps
- Używane obszary wymiany. Zobacz także swapon(8).
- /proc/sys
- This directory (present since 1.3.57) contains a number of files and
subdirectories corresponding to kernel variables. These variables can be
read and in some cases modified using the /proc filesystem, and the
(deprecated) sysctl(2) system call.
- Wartości łańcuchów
mogą się kończyć albo "\0
- Liczby całkowite i długie wartości
mogą być zapisane albo dziesiętnie,
albo szesnastkowo (np. 0x3FFF). Przy zapisywaniu wielu liczb
całkowitych lub długich wartości można je
rozdzielić dowolnym z następujących
białych znaków: " ", "\t", lub
"\n". Użycie innych separatorów wywoła
błąd EINVAL.
- /proc/sys/abi (od Linuksa 2.4.10)
- Plik może zawierać pliki z binarnymi informacjami aplikacji.
Dalsze informacje można znaleźć w pliku
Documentation/sysctl/abi.txt w źródłach
jądra Linux.
- /proc/sys/debug
- Ten katalog może być pusty.
- /proc/sys/dev
- Ten katalog zawiera informacje specyficzne dla poszczególnych
urządzeń. (np. dev/cdrom/info). W niektórych
systemach może być pusty.
- /proc/sys/fs
- Katalog zawierający pliki i podkatalogi do zmiennych jądra
związanych z systemami plików.
- /proc/sys/fs/aio-max-nr and /proc/sys/fs/aio-nr (since Linux
2.6.4)
- aio-nr is the running total of the number of events specified by
io_setup(2) calls for all currently active AIO contexts. If
aio-nr reaches aio-max-nr, then io_setup(2) will fail
with the error EAGAIN. Raising aio-max-nr does not result in
the preallocation or resizing of any kernel data structures.
- /proc/sys/fs/binfmt_misc
- Documentation for files in this directory can be found in the Linux kernel
source in the file Documentation/admin-guide/binfmt-misc.rst (or in
Documentation/binfmt_misc.txt on older kernels).
- /proc/sys/fs/dentry-state (od Linuksa 2.2)
- Plik zawiera informacje o statusie bufora katalogu (dcache). Zawiera
sześć liczb: nr_dentry, nr_unused,
age_limit (wiek w sekundach), want_pages (strony
żądane przez system) i dwie nieużywane
wartości.
- nr_dentry jest liczbą przydzielonych dentries (wpisów
dcache). To pole jest nieużywane w Linuksie 2.2.
- nr_unused jest liczbą nieużywanych dentries.
- age_limit jest wiekiem w sekundach, po którym wpisy dcache
mogą być przydzielone ponownie, gdy jest zbyt mało
pamięci.
- want_pages jest niezerowa, gdy jądro wywołało
shrink_dcache_pages(), ale dcache nie zostały jeszcze
przycięte.
- /proc/sys/fs/dir-notify-enable
- Plik ten może służyć do
wyłączania lub włączania interfejsu
dnotify opisanego w fcntl(2) dla całego systemu.
Wartość 0 w tym pliku wyłącza interfejs, a
wartość 1 go włącza.
- /proc/sys/fs/dquot-max
- Zawiera maksymalną liczbę buforowanych wpisów kwot
dyskowych. W niektórych (2.4) systemach nie występuje. Gdy
liczba wolnych zbuforowanych kwot dyskowych jest bardzo mała, a
jest przerażająca liczba jednoczesnych
użytkowników systemu, może istnieć potrzeba
zwiększenia tego ograniczenia.
- /proc/sys/fs/dquot-nr
- Zawiera liczbę przydzielonych wpisów kwot dyskowych oraz
liczbę wolnych wpisów kwot dyskowych.
- /proc/sys/fs/epoll (od Linuksa 2.6.28)
- Katalog zawiera plik max_user_watches, którego można
użyć, aby ograniczyć ilość
pamięci jądra używanej przez interfejs epoll.
Więcej szczegółów można
znaleźć w epoll(7).
- /proc/sys/fs/file-max
- This file defines a system-wide limit on the number of open files for all
processes. System calls that fail when encountering this limit fail with
the error ENFILE. (See also setrlimit(2), which can be used
by a process to set the per-process limit, RLIMIT_NOFILE, on the
number of files it may open.) If you get lots of error messages in the
kernel log about running out of file handles (open file descriptions)
(look for "VFS: file-max limit <number> reached"), try
increasing this value:
-
echo 100000 > /proc/sys/fs/file-max
- Procesy uprzywilejowane (CAP_SYS_ADMIN) mogą
przesłonić limit file-max.
- /proc/sys/fs/file-nr
- This (read-only) file contains three numbers: the number of allocated file
handles (i.e., the number of open file descriptions; see open(2));
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 (obecny jedynie do Linuksa 2.2)
- Ten plik zawiera maksymalną liczbę
i-węzłów w pamięci. Wartość ta
powinna być 3–4 razy większa niż
wartość w file-max, gdyż stdin,
stdout i gniazda sieciowe również potrzebują
i-węzłów, aby można było na nich
operować. Gdy systematycznie brakuje i-węzłów,
istnieje potrzeba zwiększenia tej wartości.
- Od jądra Linux 2.4 nie występuje statyczny limit liczby
i-węzłów, w związku z czym usunięto ten
plik.
- /proc/sys/fs/inode-nr
- Zawiera dwie pierwsze wartości z inode-state.
- /proc/sys/fs/inode-state
- Plik zawiera siedem liczb: nr_inodes, nr_free_inodes,
preshrink i cztery nieużywane wartości
(wynoszące zawsze zero).
- nr_inodes jest liczbą przydzielonych przez system
i-węzłów. nr_free_inodes jest liczbą
wolnych i-węzłów.
- preshrink jest niezerowe, gdy nr_inodes >
inode-max i gdy system musi przyciąć listę
i-węzłów zamiast przydzielić ich
więcej; od Linuksa 2.4 to pole jest wartością -
atrapą (wynosi zawsze zero).
- /proc/sys/fs/inotify (od wersji Linuksa 2.6.13)
- Ten katalog zawiera pliki max_queued_events,
max_user_instances i max_user_watches, których
można użyć, aby ograniczyć ilość
pamięci jądra używanej przez interfejs
inotify. Więcej szczegółów można
znaleźć w inotify(7).
- /proc/sys/fs/lease-break-time
- Określa okres ulgi, przez jaki jądro zapewnia procesowi
utrzymanie dzierżawy pliku (fcntl(2)), a po którym
wyśle do tego procesu sygnał zawiadamiający go,
że inny proces oczekuje na otwarcie pliku. Jeśli
utrzymujący dzierżawę nie usunie jej lub nie
ograniczy swoich praw do niej w przeciągu tego czasu, jądro
wymusi zerwanie dzierżawy.
- /proc/sys/fs/leases-enable
- Ten plik może służyć do
ogólnosystemowego włączania lub
wyłączania dzierżaw plików (fcntl(2)).
Gdy plik ten zawiera wartość 0, dzierżawy są
wyłączone. Wartość niezerowa
włącza dzierżawy.
- /proc/sys/fs/mount-max (od Linuksa 4.9)
- The value in this file specifies the maximum number of mounts that may
exist in a mount namespace. The default value in this file is
100,000.
- /proc/sys/fs/mqueue (od wersji Linuksa 2.6.6)
- Ten katalog zawiera pliki msg_max, msgsize_max i
queues_max, kontrolujące zasoby używane przez kolejki
komunikatów POSIX. Szczegółowe informacje
można znaleźć w mq_overview(7).
- /proc/sys/fs/nr_open (od Linuksa 2.6.25)
- Plik ten określa pułap, do którego można
podnieść limit zasobów RLIMIT_NOFILE (zob.
getrlimit(2)). Pułap ten jest wymuszany zarówno na
nieuprzywilejowanych i uprzywilejowanych procesach. Domyślną
wartością w pliku jest 1048576 (przed Linuksem 2.6.25,
pułap RLIMIT_NOFILE był zakodowany na sztywno
i wynosił tyle samo).
- /proc/sys/fs/overflowgid and /proc/sys/fs/overflowuid
- Te pliki umożliwiają zmianę wartości
ustalonego UID-u i GID-u. Wartością domyślną
jest 65534. Niektóre systemy plików wspierają jedynie
16-bitowe UID-y i GID-y, podczas gdy linuksowe UID-y i GID-y są
32-bitowe. Gdy któryś z takich systemów plików
jest zamontowany z możliwością zapisu, to wszystkie
UID-y i GID-y przekraczające 65535 są zastępowane
podanymi tu wartościami przed zapisem na dysk.
- /proc/sys/fs/pipe-max-size (od Linuksa 2.6.35)
- Patrz pipe(7).
- /proc/sys/fs/pipe-user-pages-hard (od Linuksa 4.5)
- Patrz pipe(7).
- /proc/sys/fs/pipe-user-pages-soft (od Linuksa 4.5)
- Patrz pipe(7).
- /proc/sys/fs/protected_fifos (od Linuksa 4.19)
- The value in this file is/can be set to one of the following:
- 0
- Writing to FIFOs is unrestricted.
- 1
- Don't allow O_CREAT open(2) on FIFOs that the caller doesn't
own in world-writable sticky directories, unless the FIFO is owned by the
owner of the directory.
- 2
- As for the value 1, but the restriction also applies to group-writable
sticky directories.
- The intent of the above protections is to avoid unintentional writes to an
attacker-controlled FIFO when a program expected to create a regular
file.
- /proc/sys/fs/protected_hardlinks (od Linuksa 3.6)
- Gdy w pliku zapisana jest wartość 0, to w odniesieniu do
tworzenia dowiązań zwykłych (twardych) nie wprowadza
się żadnych ograniczeń (jest to historyczne
zachowanie przed Linuksem 3.6). Gdy wartość wynosi 1, to
dowiązania zwykłe mogą być tworzone do pliku
docelowego jedynie wówczas, gdy spełniony jest jeden z
poniższych warunków:
- The calling process has the CAP_FOWNER capability in its user
namespace and the file UID has a mapping in the namespace.
- UID systemu plików dotyczący procesu tworzącego
dowiązanie pasują do właściciela (UID) pliku
docelowego (zgodnie z opisem w podręczniku credentials(7),
UID systemu plików procesu jest zwykle taki sam jak jego efektywny
UID).
- Wszystkie poniższe warunki zostaną spełnione:
- cel jest zwykłym plikiem,
- plik docelowy nie ma ustawionego bitu set-user-ID,
- plik docelowy nie ma ustawionych obu z bitów set-group-ID i bitu
wykonywalności dla grupy,
- wywołujący ma uprawnienie do odczytu i zapisu pliku
docelowego (albo dzięki uprawnieniom pliku albo ze względu
na posiadane przywileje).
- Domyślną wartością w tym pliku jest 0.
Ustawienie 1 rozwiąże występujące od dawna
problemy z bezpieczeństwem wykorzystujących wyścig
między czasem sprawdzenia a czasem użycia dowiązania
zwykłego, zwykle spotykanych w katalogach dostępnych do
zapisu dla wszystkich (np. /tmp). Częstym sposobem
wykorzystywania tej wady jest skrzyżowanie ograniczeń w
uprawnieniach przy podążaniu za danym dowiązaniem
zwykłym (np. gdy proces root podąża za
dowiązaniem stałym utworzonym przez innego
użytkownika). W systemach bez wydzielonych partycji,
rozwiązuje się w ten sposób również
problem nieautoryzowanych użytkowników
"przypinających" dziurawe pliki z ustawionymi bitami
set-user-ID i set-group-ID wobec aktualizowanych przez administratora a
także dowiązywaniu do plików specjalnych.
- /proc/sys/fs/protected_regular (od Linuksa 4.19)
- The value in this file is/can be set to one of the following:
- 0
- Writing to regular files is unrestricted.
- 1
- Don't allow O_CREAT open(2) on regular files that the caller
doesn't own in world-writable sticky directories, unless the regular file
is owned by the owner of the directory.
- 2
- As for the value 1, but the restriction also applies to group-writable
sticky directories.
- The intent of the above protections is similar to protected_fifos,
but allows an application to avoid writes to an attacker-controlled
regular file, where the application expected to create one.
- /proc/sys/fs/protected_symlinks (od Linuksa 3.6)
- Gdy w pliku zapisana jest wartość 0, to w odniesieniu do
tworzenia dowiązań symbolicznych nie wprowadza się
żadnych ograniczeń (jest to historyczne zachowanie przed
Linuksem 3.6). Gdy wartość wynosi 1, to dowiązania
symboliczne mogą być tworzone jedynie gdy spełnione
są następujące warunki:
- UID systemu plików dotyczący procesu
podążającego za dowiązaniem pasują do
właściciela (UID) dowiązania symbolicznego (zgodnie z
opisem w podręczniku credentials(7), UID systemu
plików procesu jest zwykle taki sam jak jego efektywny UID),
- dowiązanie nie znajduje się w katalogu dostępnych dla
wszystkich do zapisu z bitem lepkości lub
- dowiązanie symboliczne i katalog w którym się ono
znajduje mają tego samego właściciela (UID)
- Wywołanie systemowe które nie podąży za
dowiązaniem symbolicznym ze względu na powyższe
ograniczenia zwróci w errno błąd
EACCES.
- Domyślną wartością w tym pliku jest 0.
Ustawienie 1 rozwiąże występujące od dawna
problemy z bezpieczeństwem wykorzystujących wyścig
między czasem sprawdzenia a czasem użycia przy uzyskiwaniu
dostępu do dowiązań symbolicznych.
- /proc/sys/fs/suid_dumpable (od wersji Linuksa 2.6.13)
- The value in this file is assigned to a process's "dumpable"
flag in the circumstances described in prctl(2). In effect, the
value in this file determines whether core dump files are produced for
set-user-ID or otherwise protected/tainted binaries. The
"dumpable" setting also affects the ownership of files in a
process's /proc/[pid] directory, as described above.
- Three different integer values can be specified:
- 0 (default)
- Jest to tradycyjne zachowanie (sprzed Linuksa 2.6.13). Zrzut
pamięci nie będzie tworzony dla procesu, który
zmienił swoje uprawnienia (wywołując
seteuid(2), setgid(2) lub podobną funkcję albo
gdy program miał ustawiony bit set-user-ID lub set-group-ID) albo
gdy uprawnienia nadane plikowi binarnemu programu zabraniają jego
odczytywania.
- 1 ("debug")
- All processes dump core when possible. (Reasons why a process might
nevertheless not dump core are described in core(5).) The core dump
is owned by the filesystem user ID of the dumping process and no security
is applied. This is intended for system debugging situations only: this
mode is insecure because it allows unprivileged users to examine the
memory contents of privileged processes.
- 2 ("suidsafe")
- Zrzut pamięci programu, dla którego w normalnej sytuacji
taki zrzut nie zostałby wykonany (patrz wyżej
"0"), może być odczytany tylko przez
administratora (root). Pozwala to użytkownikowi
usunąć plik ze zrzutem, ale nie pozwala na jego odczytanie.
Z powodów bezpieczeństwa w tym trybie pliki zrzutu nie
nadpisują istniejących plików. Ten tryb jest
odpowiedni, gdy administrator będzie chciał debugować
problemy w naturalnym środowisku.
- Dodatkowo, od Linuksa 3.6, /proc/sys/kernel/core_pattern musi
być absolutną ścieżką lub poleceniem
potokowym (zob. core(5)). Do dziennika jądra zapisane
zostaną ostrzeżenia, jeśli core_pattern nie
będzie się stosowało do tych reguł i nie
utworzy się zrzut pamięci.
- For details of the effect of a process's "dumpable" setting on
ptrace access mode checking, see ptrace(2).
- /proc/sys/fs/super-max
- Plik steruje maksymalną liczbą superbloków, a
więc i maksymalną liczbą systemów
plików, które jądro może zamontować.
Potrzeba zwiększenia wartości super-max
występuje tylko wtedy, gdy chce się zamontować
więcej systemów plików, niż na to pozwala
aktualna wartość super-max.
- /proc/sys/fs/super-nr
- Plik zawiera liczbę obecnie zamontowanych systemów
plików.
- /proc/sys/kernel
- Katalog zawiera pliki kontrolujące wiele parametrów
jądra, jak opisano poniżej.
- /proc/sys/kernel/acct
- Plik zawiera trzy liczby: highwater, lowwater i
frequency. Gdy włączone jest rejestrowanie
procesów w stylu BSD, wartości te sterują jego
zachowaniem. Gdy ilość wolnego miejsca w systemie
plików, na którym znajdują się logi, spada
poniżej wyrażonej w procentach wartości
lowwater, rejestrowanie jest wstrzymywane. Gdy ilość
wolnego miejsca stanie się większa niż
wyrażona w procentach wartość highwater,
rejestrowanie jest wznawiane. frequency określa, jak
często jądro będzie sprawdzać
ilość wolnego miejsca (wartość w sekundach).
Wartościami domyślnymi są 4, 2 i 30. Oznacza to,
że rejestrowanie procesów jest wstrzymywane, gdy
ilość wolnego miejsca będzie wynosiła 2% lub
mniej; wznowione zostanie, gdy wolne będzie 4% lub więcej;
zakłada się, że informacja o ilości wolnego
miejsca jest ważna przez 30 sekund.
- /proc/sys/kernel/auto_msgmni (Linux w wersji od 2.6.27 do
3.18)
- W Linuksie w wersjach od 2.6.27 do 3.18, plik ten
był używany do kontroli przeliczania wartości
w /proc/sys/kernel/msgmni przy dodawaniu lub usuwaniu
pamięci, albo przy utworzeniu/usunięciu przestrzeni nazw
IPC. Wpisanie "1" do tego pliku włączało
automatyczne przeliczanie msgmni (i wyzwalało przeliczanie
msgmni w oparciu o
bieżącą ilość dostępnej
pamięci i liczby przestrzeni nazw IPC). Wpisanie "0"
wyłączało automatyczne przeliczanie (automatyczne
przeliczanie było również wyłączane,
jeśli wartość była jawnie przypisywana do
/proc/sys/kernel/msgmni). Domyślną
wartością w auto_msgmni było 1.
- Od Linuksa 3.19, zawartość tego pliku nie ma znaczenia
(ponieważ msgmni domyślnie ustawia
się na wartość
bliską maksymalnej), a odczyt z tego pliku zawsze zwraca
wartość "0".
- /proc/sys/kernel/cap_last_cap (od Linuksa 3.2)
- Patrz capabilities(7).
- /proc/sys/kernel/cap-bound (od Linuksa 2.2 do 2.6.24)
- Plik przechowuje wartość capability bounding set dla
jądra (wyrażone jako liczba dziesiętna ze znakiem).
Wartość ta jest mnożona (AND) bitowo z capabilities
dozwolonymi dla procesu podczas execve(2). Poczynając od
Linuksa 2.6.25 ogólnosystemowe capability bounding set
zostało usunięte i zastąpione bounding set na
wątek, patrz capabilities(7).
- /proc/sys/kernel/core_pattern
- Patrz core(5).
- /proc/sys/kernel/core_pipe_limit
- Patrz core(5).
- /proc/sys/kernel/core_uses_pid
- Patrz core(5).
- /proc/sys/kernel/ctrl-alt-del
- Ten plik steruje obsługą kombinacji klawiszy Ctrl-Alt-Del.
Gdy w pliku tym znajduje się wartość 0, Ctrl-Alt-Del
jest przechwytywane i przesyłane do programu init(1) w celu
wykonania wdzięcznego restartu. Gdy wartość jest
większa od 0, reakcją Linuksa na Wulkanicznie Nerwowe
Nękanie (Vulcan Nerve Pinch (tm)) będzie natychmiastowy
restart, nawet bez zrzucenia zmodyfikowanych buforów. Uwaga: gdy
program (jak np. dosemu) korzysta z "surowego" trybu klawiatury,
Ctrl-Alt-Del jest przechwytywane przez program, zanim dotrze do warstwy
terminalowej jądra i decyzja, co z tym zrobić, zależy
od programu.
- /proc/sys/kernel/dmesg_restrict (od Linuksa 2.6.37)
- Wartość pliku określa użytkowników z
dostępem do zawartości dziennika jądra (syslog).
Wartość 0 nie nakłada żadnych
ograniczeń. Wartość 1 zawęża
dostęp do użytkowników uprzywilejowanych (zob.
syslog(2)). Od Linuksa 3.4 tylko użytkownicy z przywilejem
CAP_SYS_ADMIN mogą zmienić wartość w
tym pliku.
- /proc/sys/kernel/domainname i /proc/sys/kernel/hostname
- Te pliki mogą służyć do ustawiania nazwy
domeny i hosta NIS/YP maszyny dokładnie w ten sam sposób,
jak za pomocą poleceń domainname(1) i
hostname(1), np.:
-
# echo 'darkstar' > /proc/sys/kernel/hostname
# echo 'mydomain' > /proc/sys/kernel/domainname
- daje taki sam efekt, jak
-
# hostname 'darkstar'
# domainname 'mydomain'
- Należy tu zauważyć, że klasyczny
darkstar.frop.org posiada nazwę hosta "darkstar" i
domenę "frop.org" w DNS (Internetowej Usłudze Nazw
Domen - Internet Domain Name Service), których nie należy
mylić z domeną NIS (Sieciowej Usługi Informacyjnej -
Network Information Service) lub YP (Yellow Pages). Te dwa systemy nazw
domenowych zasadniczo się różnią.
Szczegółowe informacje można znaleźć na
stronie podręcznika hostname(1).
- /proc/sys/kernel/hotplug
- This file contains the pathname for the hotplug policy agent. The default
value in this file is /sbin/hotplug.
- /proc/sys/kernel/htab-reclaim (przed Linuksem 2.4.9.2)
- (Tylko PowerPC) Jeśli do tego pliku zostanie wpisana
wartość niezerowa, htab PowerPC (zobacz: plik
Documentation/powerpc/ppc_htab.txt w źródłach
jądra) jest czyszczony za każdym razem, gdy system natrafi
na pętlę oczekiwania ("idle").
- /proc/sys/kernel/keys/*
- This directory contains various files that define parameters and limits
for the key-management facility. These files are described in
keyrings(7).
- /proc/sys/kernel/kptr_restrict (od Linuksa 2.6.38)
- Wartość określa czy adresy jądra są
pokazywane za pomocą interfejsu /proc i innych.
Wartość 0 oznacza brak ograniczeń. Gdy użyto
1, to wskaźniki jądra wypisane za pomocą formatu
%pK zostaną zastąpione zerami, chyba że
użytkownik ma przywilej CAP_SYSLOG. Przy wartości 2
wskaźniki jądra wypisane za pomocą %pK
zostaną zawsze zastąpione zerami, niezależnie od
przywilejów jakie posiada. Początkowo domyślna
wartość wynosiła 1, lecz zastąpiono ją
0 w jądrze Linux 2.6.39. Od Linuksa 3.4 tylko użytkownicy z
przywilejem CAP_SYS_ADMIN mogą zmieniać
wartość w tym pliku.
- /proc/sys/kernel/l2cr
- (Tylko PowerPC) Plik zawiera znacznik sterujący cache'em L2
płyt procesora G3. Jeśli zawiera 0, cache jest
wyłączony. Cache jest włączony, gdy plik
zawiera wartość różną od zera.
- /proc/sys/kernel/modprobe
- This file contains the pathname for the kernel module loader. The default
value is /sbin/modprobe. The file is present only if the kernel is
built with the CONFIG_MODULES (CONFIG_KMOD in Linux 2.6.26
and earlier) option enabled. It is described by the Linux kernel source
file Documentation/kmod.txt (present only in kernel 2.4 and
earlier).
- /proc/sys/kernel/modules_disabled (od Linuksa 2.6.31)
- Przełącznik wskazujący czy moduły mogą
być ładowane do modularnego jądra. Domyślna
wartość wynosi off (0), lecz można ustawić
także true (1), która spowoduje brak
możliwości ładowania i wyładowania
modułów. W takim przypadku nie da się ustawić
przełącznika z powrotem na fałsz (false). Plik jest
obecny tylko w jądrach zbudowanych z włączoną
opcją CONFIG_MODULES.
- /proc/sys/kernel/msgmax (od Linuksa 2.2)
- Zawiera ogólnosystemowe ograniczenie maksymalnej liczby
bajtów w pojedynczym komunikacie zapisywanym do kolejki
komunikatów Systemu V.
- /proc/sys/kernel/msgmni (od Linuksa 2.4)
- Określa ogólnosystemowe ograniczenie liczby
identyfikatorów kolejek komunikatów. Zob.
również /proc/sys/kernel/auto_msgmni.
- /proc/sys/kernel/msgmnb (od Linuksa 2.2)
- Zawiera ogólnosystemowy parametr służący do
inicjacji ustawienia msg_qbytes tworzonych później
kolejek komunikatów. Ustawienie msg_qbytes określa
maksymalną liczbę bajtów, które mogą
zostać zapisane do kolejki komunikatów.
- /proc/sys/kernel/ngroups_max (od Linuksa 2.6.4)
- Jest to plik tylko do odczytu, który wyświetla górny
limit liczby członków grupy procesu.
- /proc/sys/kernel/ns_last_pid (od Linuksa 3.3)
- Zob. pid_namespaces(7).
- /proc/sys/kernel/ostype i /proc/sys/kernel/osrelease
- Pliki te zawierają poszczególne części z
/proc/version.
- /proc/sys/kernel/overflowgid i
/proc/sys/kernel/overflowuid
- Pliki te są kopiami plików /proc/sys/fs/overflowgid i
/proc/sys/fs/overflowuid.
- /proc/sys/kernel/panic
- Plik umożliwia dostęp (odczyt i zapis) do zmiennej
jądra panic_timeout. Jeśli jest to zero, jądro
będzie się zapętlać podczas paniki;
jeśli wartość niezerowa, to określa
liczbę sekund, po której jądro powinno się
automatycznie przeładować. Jeśli używany jest
software watchdog to zalecaną wartością jest 60.
- /proc/sys/kernel/panic_on_oops (od Linuksa 2.5.68)
- Plik ten kontroluje zachowanie jądra, kiedy wystąpi oops lub
BŁĄD. Jeśli ten plik zawiera 0, to system
próbuje kontynuować operację. Jeśli zawiera 1,
to system czeka parę sekund (aby dać procesowi klogd czas na
zapisanie wyjścia z oops), a następnie panikuje.
Jeżeli wartość w pliku /proc/sys/kernel/panic
również jest niezerowa, to nastąpi restart
komputera.
- /proc/sys/kernel/pid_max (od Linuksa 2.5.34)
- Ten plik określa wartość po której
nastąpi przewinięcie licznika PID (tj. wartość
w tym pliku jest o 1 większa niż maksymalny PID). PID-y
większe niż ta wartość nie
są alokowane, z tego powodu wartość z tego
pliku działa również jako systemowy limit
całkowitej liczby procesów i wątków.
Domyślna wartość tego pliku, czyli 32768,
określa taki sam zakres wartości PID, jak
wcześniejsze wersje jądra. Dla platform 32-bitowych 32768
jest maksymalną wartością, jaką może
przyjmować pid_max. W systemach 64-bitowych pid_max
może zostać ustawiony na dowolną
wartość, aż do 2^22 (PID_MAX_LIMIT,
około 4 milionów).
- /proc/sys/kernel/powersave-nap (tylko PowerPC)
- Plik zawiera znacznik. Gdy jest on ustawiony, Linux-PPC używa trybu
oszczędzania energii "nap", a w przeciwnym przypadku
trybu "doze".
- /proc/sys/kernel/printk
- Patrz syslog(2).
- /proc/sys/kernel/pty (od wersji Linuksa 2.6.4)
- Ten katalog zawiera dwa pliki związane z liczbą
pseudoterminali UNIX 98 (patrz pts(4)) w systemie.
- /proc/sys/kernel/pty/max
- Plik określa maksymalną liczbę pseudoterminali.
- /proc/sys/kernel/pty/nr
- Ten plik tylko do odczytu zawiera informację o liczbie obecnie
używanych pseudoterminali.
- /proc/sys/kernel/random
- Katalog ten zawiera różne parametry sterujące
działaniem pliku /dev/random. Dalsze informacje można
znaleźć w random(4).
- /proc/sys/kernel/random/uuid (od Linuksa 2.4)
- Każdy odczyt z tego pliku przeznaczonego tylko do odczytu zwraca
losowo wygenerowany 128-bitowy UUID, jako łańcuch w
standardowym formacie UUID.
- /proc/sys/kernel/randomize_va_space (od Linuksa 2.6.12)
- Wybiera politykę losowego rozmieszczania obszarów
pamięci (ang. ASLR - adress space layout randomization) w systemie
(na architekturach obsługujących ASLR). Obsługiwane
są trzy wartości tego pliku:
- 0
- Wyłącza ASLR. Jest to domyślne na architekturach
nieobsługujących ASLR i gdy jądro jest uruchamiane z
parametrem norandmaps.
- 1
- Czyni przydzielanie stron VDSO, stosu i adresów mmap(2)
losowym. Oznacza to między innymi, że biblioteki dzielone
są ładowane pod losowy adres. Segment tekstowy plików
wykonywalnych skonsolidowanych niezależnie od pozycji (PIE)
będzie również ładowany pod losowy
adres. Wartość ta jest domyślna, jeśli
skonfigurowano jądro z CONFIG_COMPAT_BRK.
- 2
- (od Linuksa 2.6.25) Obsługuje również
losowość kopca (ang. heap). Jest to domyślne
zachowanie, jeśli nie skonfigurowano jądra z opcją
CONFIG_COMPAT_BRK.
- /proc/sys/kernel/real-root-dev
- This file is documented in the Linux kernel source file
Documentation/admin-guide/initrd.rst (or
Documentation/initrd.txt before Linux 4.10).
- /proc/sys/kernel/reboot-cmd (tylko Sparc)
- Ten plik wydaje się stanowić mechanizm podawania
argumentów SPARC-owej ładowarce systemu w ROM/Flash.
Może przekazuje jej, co zrobić po restarcie?
- /proc/sys/kernel/rtsig-max
- (Tylko w wersjach jądra nie późniejszych niż
2.6.7; patrz setrlimit(2)). Plik ten może
służyć do sterowania maksymalną liczbą
zgodnych z POSIX nieobsłużonych (w kolejkach)
sygnałów czasu rzeczywistego w systemie.
- /proc/sys/kernel/rtsig-nr
- (Tylko w wersjach jądra nie późniejszych niż
2.6.7). Plik ten podaje liczbę zgodnych z POSIX
sygnałów czasu rzeczywistego oczekujących obecnie w
kolejce.
- /proc/[pid]/sched_autogroup_enabled (od Linuksa 2.6.38)
- Patrz sched(7).
- /proc/sys/kernel/sched_child_runs_first (od Linuksa 2.6.23)
- If this file contains the value zero, then, after a fork(2), the
parent is first scheduled on the CPU. If the file contains a nonzero
value, then the child is scheduled first on the CPU. (Of course, on a
multiprocessor system, the parent and the child might both immediately be
scheduled on a CPU.)
- /proc/sys/kernel/sched_rr_timeslice_ms (od Linuksa 3.9)
- Patrz sched_rr_get_interval(2).
- /proc/sys/kernel/sched_rt_period_us (od Linuksa 2.6.25)
- Patrz sched(7).
- /proc/sys/kernel/sched_rt_runtime_us (od Linuksa 2.6.25)
- Patrz sched(7).
- /proc/sys/kernel/seccomp (od Linuksa 4.14)
- This directory provides additional seccomp information and configuration.
See seccomp(2) for further details.
- /proc/sys/kernel/sem (od Linuksa 2.4)
- Plik ten zawiera 4 liczby definiujące ograniczenia semaforów
Systemu V. Są to w kolejności:
- SEMMSL
- Maksymalna liczba semaforów w zestawie semaforów.
- SEMMNS
- Ogólnosystemowe ograniczenie liczby semaforów we wszystkich
zestawiach semaforów.
- SEMOPM
- Maksymalna liczba operacji, które mogą zostać podane
w wywołaniu semop(2).
- SEMMNI
- Ogólnosystemowe ograniczenie maksymalnej liczby
identyfikatorów semaforów.
- /proc/sys/kernel/sg-big-buff
- Plik ten zawiera rozmiar bufora niskopoziomowego urządzenia SCSI
(sg). Nie można nim na razie sterować, ale można go
zmienić podczas kompilacji poprzez edycję
include/scsi/sg.h i zmianę wartości
SG_BIG_BUFF. Jednakże nie ma żadnego powodu, aby to
robić.
- /proc/sys/kernel/shm_rmid_forced (od Linuksa 3.1)
- Jeśli plik jest ustawiony na 1, to wszystkie segmenty
pamięci dzielonej Systemu V zostaną oznaczone jako
przeznaczone do zniszczenia po tym, jak liczba dołączonych
procesów spadnie do zera. Innymi słowy nie da się
wówczas utworzyć segmentów pamięci dzielonej,
które istnieją niezależnie od
dołączonych procesów.
- Efekt jest taki, że shmctl(2) IPC_RMID jest
wykonywane na wszystkich istniejących segmentach, jak
również na segmentach tworzonych w przyszłości
(dopóki plik nie zostanie zresetowany do 0). Proszę
zauważyć, że istniejące segmenty nie
dołączone do żadnego procesu zostaną
natychmiast zniszczone, jeśli tylko plik ten jest ustawiony na 1.
Ustawienie tej opcji zniszczy również segmenty utworzone,
lecz nigdy niedołączone - przy zakończeniu procesu
który utworzył dany segment za pomocą
shmget(2).
- Ustawienie tego pliku na 1 udostępnia sposób na sprawdzenie,
że wszystkie segmenty pamięci współdzielonej
Systemu V są liczone w odniesieniu do użycia zasobów
i limitów zasobów. (zob. opis RLIMIT_AS w
getrlimit(2)) do co najmniej jednego procesu).
- Ustawienie tego pliku na 1 daje niestandardowe zachowanie, które
może załamać istniejące aplikacje, dlatego
domyślną wartością pliku jest 0.
Wartość 1 może być używana tylko w
przypadku dużej wiedzy na temat semantyki aplikacji
używających pamięci współdzielonej
Systemu V w danym systemie.
- /proc/sys/kernel/shmall (od Linuksa 2.2)
- Ten plik zawiera ogólnosystemowe ograniczenie całkowitej
liczby stron pamięci wspólnej Systemu V.
- /proc/sys/kernel/shmmax (od Linuksa 2.2)
- Ten plik może służyć do odpytywania o aktualne
ograniczenie maksymalnego rozmiaru tworzonego segmentu pamięci
wspólnej (System V IPC) oraz do zmiany tego ograniczenia.
Jądro wspiera obecnie segmenty pamięci wspólnej do 1
GB. Wartością domyślną jest
SHMMAX.
- /proc/sys/kernel/shmmni (od Linuksa 2.4)
- Ten plik określa ogólnosystemową maksymalną
liczbę segmentów pamięci wspólnej Systemu V,
które można utworzyć.
- /proc/sys/kernel/sysctl_writes_strict (od Linuksa 3.16)
- Wartość w tym pliku określa jak przesunięcia
pliku wpływają na zachowanie aktualizacji wpisów w
plikach pod /proc/sys. Plik może przyjąć trzy
wartości:
- -1
- Zapewniona jest kompatybilna obsługa, bez ostrzeżeń
printk. Każdy write(2) musi
zawierać pełną wartość do zapisu
i każdy zapis na tym samym deskryptorze pliku nadpisze
całą wartość, bez względu na
pozycję pliku.
- 0
- (domyślne) Zapewnia zachowanie podobne jak przy -1, lecz dla
procesów które przeprowadzają zapis przy
przesunięciu pliku różnym od 0 zapisywane
są ostrzeżenia printk.
- 1
- Zachowuje przesunięcie pliku przy zapisie
łańcuchów do plików /proc/sys. Wiele
zapisów nadpisze wartość bufora. Wszystko co
zostanie zapisane pod maksymalną
długość bufora wartości zostanie
zignorowane. Zapis do numerycznych wpisów /proc/sys musi
zawsze następować przy przesunięciu 0, a
wartość musi być w pełni zawarta w buforze
przekazanym do write(2).
- /proc/sys/kernel/sysrq
- Plik kontroluje dozwolone funkcje, które są
wywoływane przy użyciu klawisza SysRq. Domyślnie,
plik zawiera 1, oznaczające że dozwolona jest każde
możliwe żądanie SysRq (w starszych wersjach
jądra, SysRq było domyślnie wyłączone i
konieczne było włączenie go w czasie uruchomienia,
jednak ta sytuacja już nie występuje). Dozwolone
wartości w pliku:
- 0
- Zupełnie wyłącza sysrq
- 1
- Włącza wszystkie funkcje sysrq
- > 1
- Maska bitowa dozwolonych funkcji sysrq, jak poniżej:
- 2
- Włącza kontrolę poziomu logów konsoli
- 4
- Włącza kontrolę klawiatury (SAK, unraw)
- 8
- Włącza debugowanie zrzutów procesów itp.
- 16
- Włącza polecenie sync
- 32
- Włącza przejście systemu plików w tryb tylko
do odczytu
- 64
- Włącza wysyłanie sygnałów do
procesów (term, kill, oom-kill)
- 128
- Włącza ponowne uruchomienie/wyłączenie
komputera
- 256
- Pozwala na ustawianie nice wszystkich zadań czasu
rzeczywistego
- This file is present only if the CONFIG_MAGIC_SYSRQ kernel
configuration option is enabled. For further details see the Linux kernel
source file Documentation/admin-guide/sysrq.rst (or
Documentation/sysrq.txt before Linux 4.10).
- /proc/sys/kernel/version
- Plik zawiera tekst np.:
-
#5 Wed Feb 25 21:49:24 MET 1998
- Gdzie'#5' oznacza, że jest to piąte z kolei jądro
zbudowane z tych samych źródeł, a
następująca dalej data określa, kiedy jądro
zostało zbudowane.
- /proc/sys/kernel/threads-max (od Linuksa 2.3.11)
- Ten plik określa ogólnosystemowe ograniczenie
całkowitej liczby wątków (zadań), jakie
mogą zostać utworzone w systemie.
- Od Linuksa 4.1, wartość
którą można zapisać do
threads-max jest ograniczona. Minimalna wartość
którą można wpisać to 20. Maksymalna
jest dana przez stałą FUTEX_TID_MASK (0x3fffffff).
Jeśli do threads-max wpisze się wartość
spoza tego zakresu wystąpi błąd EINVAL.
- Zapisana wartość jest sprawdzana w odniesieniu do
dostępnych stron RAM. Jeśli struktury wątku zajmie
zbyt dużo (więcej niż 1/8) dostępnych
stron RAM, threads-max zostanie odpowiednio zredukowana.
- /proc/sys/kernel/yama/ptrace_scope (od Linuksa 3.5)
- Zob. ptrace(2).
- /proc/sys/kernel/zero-paged (tylko PowerPC)
- Plik zawiera znacznik. Gdy jest on ustawiony (niezerowy), Linux-PPC
wstępnie zeruje strony w pętli bezczynności.
Prawdopodobnie przyspiesza to get_free_pages.
- /proc/sys/net
- Ten katalog zawiera rzeczy związane z siecią.
Wyjaśnienia dotyczące niektórych plików
zawartych w tym katalogu można znaleźć w
tcp(7) i ip(7).
- /proc/sys/net/core/bpf_jit_enable
- Zob. bpf(2).
- /proc/sys/net/core/somaxconn
- Plik definiuje wartość cechy górnej (sufitu) do
argumentu backlog funkcji listen; patrz strona
podręcznika listen(2), aby dowiedzieć się
więcej.
- /proc/sys/proc
- Ten katalog może być pusty.
- /proc/sys/sunrpc
- Ten katalog obsługuje Sunowskie zdalne wywoływanie procedur
dla sieciowego systemu plikowego (NFS). W niektórych systemach
może nie istnieć.
- /proc/sys/user (od Linuksa 4.9)
- Zob. namespaces(7).
- /proc/sys/vm
- Ten katalog zawiera pliki sterujące zarządzaniem
pamięcią, buforami i zarządzaniem cachem.
- /proc/sys/vm/admin_reserve_kbytes (od Linuksa 3.10)
- This file defines the amount of free memory (in KiB) on the system that
should be reserved for users with the capability
CAP_SYS_ADMIN.
- The default value in this file is the minimum of [3% of free pages, 8MiB]
expressed as KiB. The default is intended to provide enough for the
superuser to log in and kill a process, if necessary, under the default
overcommit 'guess' mode (i.e., 0 in
/proc/sys/vm/overcommit_memory).
- Systems running in "overcommit never" mode (i.e., 2 in
/proc/sys/vm/overcommit_memory) should increase the value in this
file to account for the full virtual memory size of the programs used to
recover (e.g., login(1) ssh(1), and top(1))
Otherwise, the superuser may not be able to log in to recover the system.
For example, on x86-64 a suitable value is 131072 (128MiB reserved).
- Changing the value in this file takes effect whenever an application
requests memory.
- /proc/sys/vm/compact_memory (od Linuksa 2.6.35)
- Po zapisie 1 do tego pliku wszystkie strefy
są przemieszczane w ten sposób, że —
jeśli to możliwe — pamięć jest
dostępna w ciągłych blokach. Efekt tej akcji
można sprawdzić za pomocą
/proc/buddyinfo.
- Obecne tylko, jeśli jądro zostało skonfigurowane z
CONFIG_COMPACTION.
- /proc/sys/vm/drop_caches (od wersji Linuksa 2.6.16)
- Zapis do tego pliku powoduje zwolnienie przez jądro czystych
buforów, dentries i i-węzłów z pamięci,
powodując zwolnienie pamięci. Może być to
przydatne to testowania zarządzania pamięcią i
wykonywania powtarzalnych testów systemu plików. Zapis do
tego pliku powoduje utratę zalet buforowania, przez co może
spowodować pogorszenie ogólnej wydajności
systemu.
- Aby zwolnić bufor strony, proszę użyć:
-
echo 1 > /proc/sys/vm/drop_caches
- Aby zwolnić dentries i i-węzły, proszę
użyć:
-
echo 2 > /proc/sys/vm/drop_caches
- Aby zwolnić bufor strony, dentries i i-węzły,
proszę użyć:
-
echo 3 > /proc/sys/vm/drop_caches
- Ponieważ zapis do tego pliku nie jest destrukcyjny i brudne obiekty
nie są zwalniane, użytkownik powinien wcześniej
uruchomić sync(1).
- /proc/sys/vm/legacy_va_layout (od wersji Linuksa 2.6.9)
- Wartość niezerowa oznacza wyłączenie nowego,
32-bitowego rozmieszczenia mapowania pamięci; jądro
będzie używać starego (2.4) rozmieszczenia dla
wszystkich procesów.
- /proc/sys/vm/memory_failure_early_kill (od Linuksa 2.6.32)
- Kontroluje jak zabijać procesy z nienaprawialnym
błędem pamięci (z reguły 2-bitowy
błąd w module pamięci), które nie mogą
być obsłużone przez jądro, wykryte w tle przez
sprzęt. W niektórych przypadkach (np. jeśli strona ma
wciąż poprawną kopię na dysku), jądro
obsłuży taki błąd w sposób
przezroczysty, bez wpływu na pracę aplikacji. Jednak
jeśli nie istnieje inna, zaktualizowana kopia danych, jądro
zabija procesy, aby zapobiec uszkodzeniu danych wynikłego z
propagacji błędu.
- Plik posiada jedną z następujących
wartości:
- 1:
- Wszystkie procesy, które posiadają zmapowaną
uszkodzoną i nieprzeładowaną stronę, są
zabijane zaraz po wykryciu uszkodzenia. Proszę
zauważyć, że nie jest to obsługiwane dla
nielicznych typów stron, takich jak wewnętrzne przypisanie
danych przez jądro lub pamięć podręczna na
dysku (swap), ale działa w przypadku większości stron
użytkownika.
- 0:
- Unmap the corrupted page from all processes and kill a process only if it
tries to access the page.
- Zabicie jest wykonywane za pomocą sygnału SIGBUS z
si_code ustawionym na BUS_MCEERR_AO. Procesy mogą
obsłużyć tę sytuację, jeśli
chcą; proszę zapoznać się z
sigaction(2), aby dowiedzieć się więcej.
- Funkcja jest aktywna wyłącznie na architekturach/platformach
z zaawansowaną, maszynową obsługą sprawdzania
i zależy od możliwości sprzętowych.
- Aplikacje mogą indywidualnie przesłonić ustawienie
memory_failure_early_kill za pomocą operacji
PR_MCE_KILL prctl(2).
- Obecne tylko, jeśli jądro zostało skonfigurowane z
CONFIG_MEMORY_FAILURE.
- /proc/sys/vm/memory_failure_recovery (od Linuksa 2.6.32)
- Włącza odzyskiwanie po błędzie pamięci
(jeśli jest obsługiwane przez daną
platformę).
- 1:
- Próbuje odzyskiwać.
- 0:
- Zawsze panikuje przy błędzie pamięci.
- Obecne tylko, jeśli jądro zostało skonfigurowane z
CONFIG_MEMORY_FAILURE.
- /proc/sys/vm/oom_dump_tasks (od Linuksa 2.6.25)
- Włącza tworzenie ogólnosystemowego zrzutu zadania
(bez wątków jądra), gdy jądro wykonuje
OOM-killing. Zrzut zawiera następujące informacje o
każdym zadaniu (wątku, procesie): identyfikator
wątku, realny identyfikator użytkownika, identyfikator grupy
wątku (identyfikator procesu), rozmiar pamięci wirtualnej,
rozmiar zestawu rezydentnego, procesor któremu przydzielono
zadanie, wynik oom_adj (patrz opis /proc/[pid]/oom_adj) i
nazwę polecenia. Jest to przydatne do określenia dlaczego
OOM-killer został przywołany i zidentyfikowania zadania,
które to spowodowało.
- Jeśli zawiera wartość zero, ta informacja nie jest
zrzucana. Zrobienie zrzutu stanu pamięci każdego zadania
może nie być wykonalne w bardzo dużych systemach, z
tysiącami zadań. Takie systemy nie powinny być
zmuszane do narażania się na dodatkowy spadek
wydajności w sytuacjach braku pamięci, gdy taka informacja
nie może być przydatna.
- Jeśli wartość jest niezerowa, ta informacja jest
pokazywana kiedy tylko OOM-killer rzeczywiście zabija zadanie
zajmujące dużo pamięci.
- Domyślną wartością jest 0.
- /proc/sys/vm/oom_kill_allocating_task (od Linuksa 2.6.24)
- Włącza lub wyłącza zabijanie zadania
kolejkującego OOM w sytuacjach braku pamięci
(Out-Of-Memory).
- Jeśli jest ustawione na zero OOM-killer przeskanuje
całą listę zadań i do zabicia wybierze zadania
na podstawie heurystyki. Z reguły wybierane są zadania
zajmujące wiele pamięci, które zwalniają
dużą ilość pamięci po zabiciu.
- Jeśli jest ustawione na wartość niezerową,
OOM-killer po prostu zabija zadanie, które wyzwoliło stan
braku pamięci. W ten sposób unika się potencjalnie
kosztownego skanowania listy zadań.
- Jeśli /proc/sys/vm/panic_on_oom jest niezerowe, to ma ono
pierwszeństwo, niezależnie od wartości użytej
w /proc/sys/vm/oom_kill_allocating_task.
- Domyślną wartością jest 0.
- /proc/sys/vm/overcommit_kbytes (od Linuksa 3.14)
- Ten zapisywalny plik zapewnia alternatywę do
/proc/sys/vm/overcommit_ratio do kontrolowania CommitLimit
gdy /proc/sys/vm/overcommit_memory ma wartość 2.
Pozwala na wykonanie overcommittu ilości pamięci w
jednostkach absolutnych (w kB), zamiast w wartościach procentowych,
jak to ma miejsce przy overcommit_ratio. W ten sposób
można osiągnąć lepszą kontrolę
CommitLimit na systemach z ekstremalnie dużą
ilością pamięci.
- Tylko jeden z overcommit_kbytes lub overcommit_ratio
może działać: jeśli overcommit_kbytes
ma wartość niezerową, to jest używane do
obliczenia CommitLimit, w przeciwnym razie używane jest
overcommit_ratio. Zapisanie wartości do
któregokolwiek z plików powoduje że
wartość w drugim jest ustawiana na zero.
- /proc/sys/vm/overcommit_memory
- Plik zawiera tryb rozliczeń pamięci wirtualnej jądra.
Dopuszczalne wartości:
- 0: heurystyczny overcommit (domyślnie)
1: zawsze robi overcommit, nigdy nie sprawdza
2: zawsze sprawdza, nigdy nie robi overcommitu
- W trybie 0 nie są sprawdzane wywołania mmap(2) z
MAP_NORESERVE, a domyślne sprawdzenia są bardzo
słabe, prowadząc do ryzyka zabicia procesu przez
"OOM-killera".
- In mode 1, the kernel pretends there is always enough memory, until memory
actually runs out. One use case for this mode is scientific computing
applications that employ large sparse arrays. In Linux kernel versions
before 2.6.0, any nonzero value implies mode 1.
- W trybie 2 (dostępnym od Linuksa 2.6), całkowity adres
przestrzeni wirtualnej w systemie którą można
przypisać (CommitLimit w /proc/meminfo) jest
obliczany jako
-
CommitLimit = (total_RAM - total_huge_TLB) *
overcommit_ratio / 100 + total_swap
- gdzie:
- total_RAM jest sumą pamięci RAM w systemie;
- total_huge_TLB jest sumą pamięci przeznaczoną
dla dużych stron;
- overcommit_ratio jest wartością w
/proc/sys/vm/overcommit_ratio i
- total_swap jest wielkością przestrzeni wymiany.
- Na przykład w systemie z 16 GB fizycznej pamięci RAM i 16 GB
pamięci wymiany, brakiem przestrzeni przeznaczonej na duże
strony i z overcommit_ratio równym 50, ta formuła
daje CommitLimit na poziomie 24 GB.
- Od Linuksa 3.14, gdy wartość w
/proc/sys/vm/overcommit_kbytes jest niezerowa, to
CommitLimit jest obliczana w następujący
sposób:
-
CommitLimit = overcommit_kbytes + total_swap
- See also the description of /proc/sys/vm/admin_reserve_kbytes and
/proc/sys/vm/user_reserve_kbytes.
- /proc/sys/vm/overcommit_ratio (od Linuksa 2.6.0)
- Plik zapisywalny definiujący wartość
procentową pamięci, na której można
wykonać overcommit. Domyślną wartością
jest 50. Zob. opis /proc/sys/vm/overcommit_memory.
- /proc/sys/vm/panic_on_oom (od wersji Linuksa 2.6.18)
- Włącza lub wyłącza panikę jądra
w sytuacjach braku pamięci.
- Jeśli plik ma ustawioną wartość 0, OOM-killer
jądra zabija któryś z nieposłusznych
procesów. Z reguły OOM-killer jest w stanie to
wykonać i system może pracować dalej.
- Jeśli plik ma ustawioną wartość 1, to
jądro zwykle panikuje przy sytuacji braku pamięci. Jednak
jeśli proces limituje przydzielanie do konkretnych
węzłów używając zasad pamięci
(mbind(2) MPOL_BIND) lub cpuset (cpuset(7)) i te
węzły dotknie problem braku pamięci, to taki proces
może być zabity przez OOM-killer. Nie występuje
wówczas panika, ponieważ pamięć innych
węzłów może być wolna, co oznacza
że system jako całość mógł nie
osiągnąć jeszcze sytuacji braku pamięci.
- Jeśli ustawiono wartość 2, to jądro zawsze
panikuje w sytuacji braku pamięci.
- Domyślną wartość jest 0. 1 i 2 są
przeznaczone do poprawnej pracy klastrów mimo wystąpienia
problemów. Proszę wybrać
właściwą z nich, zgodnie z używanymi zasadami
w takich sytuacjach.
- /proc/sys/vm/swappiness
- Wartość w tym pliku kontroluje jak agresywnie jądro
przenosi strony pamięci do pamięci wymiany (swapu).
Wyższe wartości zwiększają
agresywność, mniejsze zmniejszają ją.
Domyślną wartością jest 60.
- /proc/sys/vm/user_reserve_kbytes (od Linuksa 3.10)
- Specifies an amount of memory (in KiB) to reserve for user processes. This
is intended to prevent a user from starting a single memory hogging
process, such that they cannot recover (kill the hog). The value in this
file has an effect only when /proc/sys/vm/overcommit_memory is set
to 2 ("overcommit never" mode). In this case, the system
reserves an amount of memory that is the minimum of [3% of current process
size, user_reserve_kbytes].
- The default value in this file is the minimum of [3% of free pages,
128MiB] expressed as KiB.
- If the value in this file is set to zero, then a user will be allowed to
allocate all free memory with a single process (minus the amount reserved
by /proc/sys/vm/admin_reserve_kbytes). Any subsequent attempts to
execute a command will result in "fork: Cannot allocate
memory".
- Changing the value in this file takes effect whenever an application
requests memory.
- /proc/sys/vm/unprivileged_userfaultfd (od Linuksa 5.2)
- This (writable) file exposes a flag that controls whether unprivileged
processes are allowed to employ userfaultfd(2). If this file has
the value 1, then unprivileged processes may use userfaultfd(2). If
this file has the value 0, then only processes that have the
CAP_SYS_PTRACE capability may employ userfaultfd(2). The
default value in this file is 1.
- /proc/sysrq-trigger (od Linuksa 2.4.21)
- Writing a character to this file triggers the same SysRq function as
typing ALT-SysRq-<character> (see the description of
/proc/sys/kernel/sysrq). This file is normally writable only by
root. For further details see the Linux kernel source file
Documentation/admin-guide/sysrq.rst (or
Documentation/sysrq.txt before Linux 4.10).
- /proc/sysvipc
- Podkatalog zawierający pseudopliki msg, sem i
shm. Pliki te zawierają obiekty komunikacji
międzyprocesowej (Interprocess Communication - IPC) Systemu V
(odpowiednio: kolejki komunikatów, semafory i pamięć
wspólną) obecnie istniejące w systemie,
udostępniając informacje podobne do tych, które
są dostępne poprzez ipcs(1). Pliki te
zawierają nagłówki i są sformatowane (jeden
obiekt IPC w wierszu) w celu łatwiejszego zrozumienia.
sysvipc(7) podaje dodatkowe informacje o zawartości tych
plików.
- /proc/thread-self (od Linuksa 3.17)
- Ten katalog odnosi się do wątku korzystającego z
systemu plików /proc i jest identyczny z katalogiem w
/proc/self/task/[tid] o nazwie będącej
identyfikatorem tego wątku ([tid]).
- /proc/timer_list (od Linuksa 2.6.21)
- Plik tylko do odczytu udostępnia listę wszystkich
bieżących czasomierzy (wysokiej rozdzielczości),
wszystkich źródeł zdarzeń zegara i ich
parametrów w formie czytelnej dla człowieka.
- /proc/timer_stats (from Linux 2.6.21 until Linux 4.10)
- Jest to funkcja debugowania uwidaczniające (nad)użycia
czasomierzy w systemie Linux deweloperom jądra i przestrzeni
użytkownika. Może być używana przez
deweloperów zajmujących się jądrem i
przestrzenią użytkownika do weryfikacji, czy ich kod nie
używa w nadmiarze czasomierzy. Celem jest zapobieganie
niepotrzebnym wybudzeniom, aby zoptymalizować zużycie
energii.
- Jeśli jest to włączone w jądrze
(CONFIG_TIMER_STATS), lecz nie jest używane, ma narzut
bliski zera oraz relatywnie niewielki narzut struktury danych. Nawet gdy
zbieranie danych jest włączone przy rozruchu, narzut jest
niski: wszystkie blokowania następują według CPU, a
wyszukiwanie jest haszowane.
- Plik /proc/timer_stats jest używany do kontrolowania funkcji
próbkowania i odczytu próbek informacji.
- Funkcja timer_stats jest nieaktywna przy rozruchu. Okres
próbkowania można uruchomić poleceniem:
-
# echo 1 > /proc/timer_stats
- Następujące polecenie zatrzymuje okres
próbkowania:
-
# echo 0 > /proc/timer_stats
- Statystyki można pozyskać przy pomocy:
-
$ cat /proc/timer_stats
- Gdy próbkowanie jest włączone, każdy odczyt z
/proc/timer_stats daje nowo zaktualizowane statystyki. Po
wyłączeniu próbkowania, próbki informacji
są zachowywane do momentu włączenia nowego
okresu próbkowania. Pozwala to na wielokrotny odczyt.
- Próbka wyniku z /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
- Kolumny wyniku:
- licznik liczby zdarzeń, po którym opcjonalnie (od Linuksa
2.6.23) występuje litera "D", jeśli jest to
licznik odraczalny;
- PID procesu inicjującego czasomierz
- nazwa procesu inicjującego czasomierz;
- funkcja, w której czasomierz został zainicjowany i
- (w nawiasach) funkcja wywołania zwrotnego związanego z
czasomierzem.
- During the Linux 4.11 development cycle, this file was removed because of
security concerns, as it exposes information across namespaces.
Furthermore, it is possible to obtain the same information via in-kernel
tracing facilities such as ftrace.
- /proc/tty
- Podkatalog zawierający psuedopliki i podkatalogi sterowników
terminali (tty) oraz protokołów sterowania linią
(line discipline).
- /proc/uptime
- This file contains two numbers (values in seconds): the uptime of the
system (including time spent in suspend) and the amount of time spent in
the idle process.
- /proc/version
- Ten napis określa wersję obecnie działającego
jądra. Zawiera on w sobie zawartość
/proc/sys/ostype, /proc/sys/osrelease i
/proc/sys/version. Na przykład:
-
Linux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994
- /proc/vmstat (od Linuksa 2.6.0)
- This file displays various virtual memory statistics. Each line of this
file contains a single name-value pair, delimited by white space. Some
lines are present only if the kernel was configured with suitable options.
(In some cases, the options required for particular files have changed
across kernel versions, so they are not listed here. Details can be found
by consulting the kernel source code.) The following fields may be
present:
- /proc/zoneinfo (od Linuksa 2.6.13)
- Plik zawiera informacje o strefach pamięci. Może być
przydatny podczas analizowania zachowania pamięci wirtualnej.
Many files contain strings (e.g., the environment and command
line) that are in the internal format, with subfields terminated by null
bytes ('\0'). When inspecting such files, you may find that the results are
more readable if you use a command of the following form to display
them:
$ cat file | tr '\000' '\n'
Ta strona podręcznika jest niekompletna, prawdopodobnie
niedokładna i należy do tych, które powinny być
bardzo często poprawiane.
cat(1), dmesg(1), find(1), free(1),
htop(1), init(1), ps(1), pstree(1),
tr(1), uptime(1), chroot(2), mmap(2),
readlink(2), syslog(2), slabinfo(5), sysfs(5),
hier(7), namespaces(7), time(7), arp(8),
hdparm(8), ifconfig(8), lsmod(8), lspci(8),
mount(8), netstat(8), procinfo(8), route(8),
sysctl(8)
Pliki w źródłach jądra Linux:
Documentation/filesystems/proc.txt,
Documentation/sysctl/fs.txt, Documentation/sysctl/kernel.txt,
Documentation/sysctl/net.txt i
Documentation/sysctl/vm.txt.
Angielska wersja tej strony pochodzi z wydania 5.10 projektu Linux
man-pages. Opis projektu, informacje dotyczące
zgłaszania błędów oraz najnowszą
wersję oryginału można znaleźć pod
adresem https://www.kernel.org/doc/man-pages/.
TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony
podręcznika są: Przemek Borys <pborys@dione.ids.pl>,
Robert Luberda <robert@debian.org> i Michał Kułach
<michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną
dokumentacją. Bliższe informacje o warunkach licencji
można uzyskać zapoznając się z
GNU General
Public License w wersji 3 lub nowszej. Nie przyjmuje się
ŻADNEJ ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika
prosimy zgłaszać na adres
manpages-pl-list@lists.sourceforge.net.