]> git.ipfire.org Git - thirdparty/man-pages.git/blame - man5/proc.5
ffs.3: glibc 2.27 relaxes the FTM requriements for ffsl() nand ffsll()
[thirdparty/man-pages.git] / man5 / proc.5
CommitLineData
fea681da 1.\" Copyright (C) 1994, 1995 by Daniel Quinlan (quinlan@yggdrasil.com)
b4e9ee8f 2.\" and Copyright (C) 2002-2008 Michael Kerrisk <mtk.manpages@gmail.com>
fea681da
MK
3.\" with networking additions from Alan Cox (A.Cox@swansea.ac.uk)
4.\" and scsi additions from Michael Neuffer (neuffer@mail.uni-mainz.de)
5.\" and sysctl additions from Andries Brouwer (aeb@cwi.nl)
6.\" and System V IPC (as well as various other) additions from
c11b1abf 7.\" Michael Kerrisk <mtk.manpages@gmail.com>
fea681da 8.\"
1dd72f9c 9.\" %%%LICENSE_START(GPLv2+_DOC_FULL)
fea681da
MK
10.\" This is free documentation; you can redistribute it and/or
11.\" modify it under the terms of the GNU General Public License as
12.\" published by the Free Software Foundation; either version 2 of
13.\" the License, or (at your option) any later version.
14.\"
15.\" The GNU General Public License's references to "object code"
16.\" and "executables" are to be interpreted as the output of any
17.\" document formatting or typesetting system, including
18.\" intermediate and printed output.
19.\"
20.\" This manual is distributed in the hope that it will be useful,
21.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
22.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23.\" GNU General Public License for more details.
24.\"
25.\" You should have received a copy of the GNU General Public
c715f741
MK
26.\" License along with this manual; if not, see
27.\" <http://www.gnu.org/licenses/>.
6a8d8745 28.\" %%%LICENSE_END
fea681da
MK
29.\"
30.\" Modified 1995-05-17 by faith@cs.unc.edu
31.\" Minor changes by aeb and Marty Leisner (leisner@sdsp.mc.xerox.com).
32.\" Modified 1996-04-13, 1996-07-22 by aeb@cwi.nl
33.\" Modified 2001-12-16 by rwhron@earthlink.net
34.\" Modified 2002-07-13 by jbelton@shaw.ca
35.\" Modified 2002-07-22, 2003-05-27, 2004-04-06, 2004-05-25
c11b1abf 36.\" by Michael Kerrisk <mtk.manpages@gmail.com>
5d6d14a0
MK
37.\" 2004-11-17, mtk -- updated notes on /proc/loadavg
38.\" 2004-12-01, mtk, rtsig-max and rtsig-nr went away in 2.6.8
568105c6
MK
39.\" 2004-12-14, mtk, updated 'statm', and fixed error in order of list
40.\" 2005-05-12, mtk, updated 'stat'
6d64ca9c 41.\" 2005-07-13, mtk, added /proc/sys/fs/mqueue/*
363f747c
MK
42.\" 2005-09-16, mtk, Added /proc/sys/fs/suid_dumpable
43.\" 2005-09-19, mtk, added /proc/zoneinfo
b4e9ee8f 44.\" 2005-03-01, mtk, moved /proc/sys/fs/mqueue/* material to mq_overview.7.
69119dc7
MK
45.\" 2008-06-05, mtk, Added /proc/[pid]/oom_score, /proc/[pid]/oom_adj,
46.\" /proc/[pid]/limits, /proc/[pid]/mountinfo, /proc/[pid]/mountstats,
47.\" and /proc/[pid]/fdinfo/*.
48.\" 2008-06-19, mtk, Documented /proc/[pid]/status.
cc2d5c36 49.\" 2008-07-15, mtk, added /proc/config.gz
363f747c 50.\"
43d42cc0 51.\" FIXME cross check against Documentation/filesystems/proc.txt
c13182ef 52.\" to see what information could be imported from that file
c533af9d 53.\" into this file.
fea681da 54.\"
4b8c67d9 55.TH PROC 5 2017-09-15 "Linux" "Linux Programmer's Manual"
fea681da 56.SH NAME
9ee4a2b6 57proc \- process information pseudo-filesystem
fea681da
MK
58.SH DESCRIPTION
59The
31fa1fd2 60.B proc
ac8727b6 61filesystem is a pseudo-filesystem which provides an interface to
c13182ef
MK
62kernel data structures.
63It is commonly mounted at
fea681da 64.IR /proc .
b574c52d
MK
65Typically, it is mounted automatically by the system,
66but it can also be mounted manually using a command such as:
67.PP
68.in +4n
69.EX
70mount \-t proc proc /proc
71.EE
72.in
73.PP
7e174651 74Most of the files in the
31fa1fd2 75.B proc
7e174651 76filesystem are read-only,
64165e01 77but some files are writable, allowing kernel variables to be changed.
7e174651 78.\"
fee59977
MK
79.SS Mount options
80The
31fa1fd2 81.B proc
fee59977
MK
82filesystem supports the following mount options:
83.TP
84.BR hidepid "=\fIn\fP (since Linux 3.3)"
85.\" commit 0499680a42141d86417a8fbaa8c8db806bea1201
86This option controls who can access the information in
87.IR /proc/[pid]
88directories.
89The argument,
90.IR n ,
91is one of the following values:
92.RS
93.TP 4
940
95Everybody may access all
96.IR /proc/[pid]
97directories.
98This is the traditional behavior,
99and the default if this mount option is not specified.
100.TP
1011
102Users may not access files and subdirectories inside any
103.IR /proc/[pid]
104directories but their own (the
105.IR /proc/[pid]
106directories themselves remain visible).
107Sensitive files such as
97949440 108.IR /proc/[pid]/cmdline
fee59977 109and
97949440 110.IR /proc/[pid]/status
fee59977
MK
111are now protected against other users.
112This makes it impossible to learn whether any user is running a
113specific program
114(so long as the program doesn't otherwise reveal itself by its behavior).
115.\" As an additional bonus, since
97949440 116.\" .IR /proc/[pid]/cmdline
fee59977
MK
117.\" is unaccessible for other users,
118.\" poorly written programs passing sensitive information via
119.\" program arguments are now protected against local eavesdroppers.
120.TP
1212
122As for mode 1, but in addition the
123.IR /proc/[pid]
124directories belonging to other users become invisible.
125This means that
126.IR /proc/[pid]
127entries can no longer be used to discover the PIDs on the system.
128This doesn't hide the fact that a process with a specific PID value exists
9bc87ed0 129(it can be learned by other means, for example, by "kill \-0 $PID"),
fee59977
MK
130but it hides a process's UID and GID,
131which could otherwise be learned by employing
132.BR stat (2)
133on a
134.IR /proc/[pid]
135directory.
136This greatly complicates an attacker's task of gathering
137information about running processes (e.g., discovering whether
138some daemon is running with elevated privileges,
139whether another user is running some sensitive program,
140whether other users are running any program at all, and so on).
141.RE
142.TP
143.BR gid "=\fIgid\fP (since Linux 3.3)"
144.\" commit 0499680a42141d86417a8fbaa8c8db806bea1201
145Specifies the ID of a group whose members are authorized to
146learn process information otherwise prohibited by
147.BR hidepid
95b1c1d1 148(i.e., users in this group behave as though
fee59977
MK
149.I /proc
150was mounted with
95b1c1d1 151.IR hidepid=0 ).
fee59977
MK
152This group should be used instead of approaches such as putting
153nonroot users into the
154.BR sudoers (5)
155file.
156.SS Files and directories
ac8727b6 157The following list describes many of the files and directories under the
743638fd
MK
158.I /proc
159hierarchy.
fea681da 160.TP
69119dc7 161.I /proc/[pid]
fea681da
MK
162There is a numerical subdirectory for each running process; the
163subdirectory is named by the process ID.
2dad4c59 164.IP
1e6a8e2f
MK
165Each
166.I /proc/[pid]
167subdirectory contains the
168pseudo-files and directories described below.
3bdb8ec5
MK
169These files are normally owned by the effective user and
170effective group ID of the process.
171However, as a security measure, the ownership is made
172.IR root:root
173if the process's "dumpable" attribute is set to a value other than 1.
174This attribute may change for the following reasons:
175.RS
176.IP * 3
177The attribute was explicitly set via the
178.BR prctl (2)
179.B PR_SET_DUMPABLE
180operation.
181.IP *
182The attribute was reset to the value in the file
183.IR /proc/sys/fs/suid_dumpable
184(described below), for the reasons described in
185.BR prctl (2).
186.RE
187.IP
188Resetting the "dumpable" attribute to 1 reverts the ownership of the
189.IR /proc/[pid]/*
190files to the process's real UID and real GID.
b7a42567
MK
191.TP
192.I /proc/[pid]/attr
193.\" https://lwn.net/Articles/28222/
194.\" From: Stephen Smalley <sds@epoch.ncsc.mil>
195.\" To: LKML and others
196.\" Subject: [RFC][PATCH] Process Attribute API for Security Modules
197.\" Date: 08 Apr 2003 16:17:52 -0400
198.\"
b3fb99e8
MK
199.\" http://www.nsa.gov/research/_files/selinux/papers/module/x362.shtml
200.\"
b7a42567
MK
201The files in this directory provide an API for security modules.
202The contents of this directory are files that can be read and written
203in order to set security-related attributes.
204This directory was added to support SELinux,
205but the intention was that the API be general enough to support
206other security modules.
207For the purpose of explanation,
208examples of how SELinux uses these files are provided below.
2dad4c59 209.IP
b7a42567
MK
210This directory is present only if the kernel was configured with
211.BR CONFIG_SECURITY .
212.TP
213.IR /proc/[pid]/attr/current " (since Linux 2.6.0)"
214The contents of this file represent the current
215security attributes of the process.
2dad4c59 216.IP
fd44bdc7
TY
217In SELinux, this file is used to get the security context of a process.
218Prior to Linux 2.6.11, this file could not be used to set the security
219context (a write was always denied), since SELinux limited process security
220transitions to
b7a42567
MK
221.BR execve (2)
222(see the description of
223.IR /proc/[pid]/attr/exec ,
224below).
fd44bdc7
TY
225Since Linux 2.6.11, SELinux lifted this restriction and began supporting
226"set" operations via writes to this node if authorized by policy,
227although use of this operation is only suitable for applications that are
228trusted to maintain any desired separation between the old and new security
b6620a25
MK
229contexts.
230Prior to Linux 2.6.28, SELinux did not allow threads within a
fd44bdc7
TY
231multi-threaded process to set their security context via this node
232as it would yield an inconsistency among the security contexts of the
b6620a25
MK
233threads sharing the same memory space.
234Since Linux 2.6.28, SELinux lifted
fd44bdc7 235this restriction and began supporting "set" operations for threads within
b6620a25 236a multithreaded process if the new security context is bounded by the old
fd44bdc7
TY
237security context, where the bounded relation is defined in policy and
238guarantees that the new security context has a subset of the permissions
239of the old security context.
b7a42567
MK
240Other security modules may choose to support "set" operations via
241writes to this node.
242.TP
243.IR /proc/[pid]/attr/exec " (since Linux 2.6.0)"
244This file represents the attributes to assign to the
245process upon a subsequent
246.BR execve (2).
2dad4c59 247.IP
b7a42567
MK
248In SELinux,
249this is needed to support role/domain transitions, and
250.BR execve (2)
251is the preferred point to make such transitions because it offers better
252control over the initialization of the process in the new security label
253and the inheritance of state.
254In SELinux, this attribute is reset on
255.BR execve (2)
256so that the new program reverts to the default behavior for any
257.BR execve (2)
258calls that it may make.
259In SELinux, a process can set
260only its own
261.I /proc/[pid]/attr/exec
262attribute.
263.TP
264.IR /proc/[pid]/attr/fscreate " (since Linux 2.6.0)"
265This file represents the attributes to assign to files
266created by subsequent calls to
267.BR open (2),
268.BR mkdir (2),
269.BR symlink (2),
270and
271.BR mknod (2)
2dad4c59 272.IP
b7a42567
MK
273SELinux employs this file to support creation of a file
274(using the aforementioned system calls)
275in a secure state,
276so that there is no risk of inappropriate access being obtained
277between the time of creation and the time that attributes are set.
278In SELinux, this attribute is reset on
279.BR execve (2),
280so that the new program reverts to the default behavior for
281any file creation calls it may make, but the attribute will persist
282across multiple file creation calls within a program unless it is
283explicitly reset.
284In SELinux, a process can set only its own
285.IR /proc/[pid]/attr/fscreate
286attribute.
287.TP
666db07e
MK
288.IR /proc/[pid]/attr/keycreate " (since Linux 2.6.18)"
289.\" commit 4eb582cf1fbd7b9e5f466e3718a59c957e75254e
666db07e
MK
290If a process writes a security context into this file,
291all subsequently created keys
292.RB ( add_key (2))
293will be labeled with this context.
294For further information, see the kernel source file
6b3ead8f
ES
295.I Documentation/security/keys/core.rst
296(or file
297.\" commit b68101a1e8f0263dbc7b8375d2a7c57c6216fb76
298.I Documentation/security/keys.txt
299on Linux between 3.0 and 4.13, or
300.\" commit d410fa4ef99112386de5f218dd7df7b4fca910b4
301.I Documentation/keys.txt
302before Linux 3.0).
2702dc21 303.TP
93401860
MK
304.IR /proc/[pid]/attr/prev " (since Linux 2.6.0)"
305This file contains the security context of the process before the last
306.BR execve (2);
307that is, the previous value of
308.IR /proc/[pid]/attr/current .
309.TP
2702dc21
MK
310.IR /proc/[pid]/attr/socketcreate " (since Linux 2.6.18)"
311.\" commit 42c3e03ef6b298813557cdb997bd6db619cd65a2
312If a process writes a security context into this file,
313all subsequently created sockets will be labeled with this context.
39b35179
MK
314.TP
315.IR /proc/[pid]/autogroup " (since Linux 2.6.38)"
316.\" commit 5091faa449ee0b7d73bc296a93bca9540fc51d0a
317See
318.BR sched (7).
fea681da 319.TP
69119dc7 320.IR /proc/[pid]/auxv " (since 2.6.0-test7)"
857f1942 321This contains the contents of the ELF interpreter information passed
c13182ef 322to the process at exec time.
857f1942 323The format is one \fIunsigned long\fP ID
c13182ef 324plus one \fIunsigned long\fP value for each entry.
857f1942 325The last entry contains two zeros.
4c69c692
MK
326See also
327.BR getauxval (3).
2dad4c59 328.IP
82664739
MK
329Permission to access this file is governed by a ptrace access mode
330.B PTRACE_MODE_READ_FSCREDS
331check; see
332.BR ptrace (2).
b5d204d0 333.TP
8d708d6b 334.IR /proc/[pid]/cgroup " (since Linux 2.6.24)"
5c2181ad
MK
335See
336.BR cgroups (7).
76e0451c
MK
337.TP
338.IR /proc/[pid]/clear_refs " (since Linux 2.6.22)"
339.\" commit b813e931b4c8235bb42e301096ea97dbdee3e8fe (2.6.22)
340.\" commit 398499d5f3613c47f2143b8c54a04efb5d7a6da9 (2.6.32)
341.\" commit 040fa02077de01c7e08fa75be6125e4ca5636011 (3.11)
b4e9ee8f 342.\"
b4e9ee8f 343.\" "Clears page referenced bits shown in smaps output"
76e0451c 344.\" write-only, writable only by the owner of the process
2dad4c59 345.IP
76e0451c 346This is a write-only file, writable only by owner of the process.
2dad4c59 347.IP
76e0451c
MK
348The following values may be written to the file:
349.RS
350.TP
3511 (since Linux 2.6.22)
352.\" Internally: CLEAR_REFS_ALL
353Reset the PG_Referenced and ACCESSED/YOUNG
354bits for all the pages associated with the process.
355(Before kernel 2.6.32, writing any nonzero value to this file
356had this effect.)
357.TP
3582 (since Linux 2.6.32)
359.\" Internally: CLEAR_REFS_ANON
360Reset the PG_Referenced and ACCESSED/YOUNG
361bits for all anonymous pages associated with the process.
362.TP
3633 (since Linux 2.6.32)
364.\" Internally: CLEAR_REFS_MAPPED
365Reset the PG_Referenced and ACCESSED/YOUNG
366bits for all file-mapped pages associated with the process.
367.RE
368.IP
369Clearing the PG_Referenced and ACCESSED/YOUNG bits provides a method
370to measure approximately how much memory a process is using.
322d49fb 371One first inspects the values in the "Referenced" fields
76e0451c
MK
372for the VMAs shown in
373.IR /proc/[pid]/smaps
374to get an idea of the memory footprint of the
375process.
376One then clears the PG_Referenced and ACCESSED/YOUNG bits
377and, after some measured time interval,
322d49fb 378once again inspects the values in the "Referenced" fields
76e0451c
MK
379to get an idea of the change in memory footprint of the
380process during the measured interval.
381If one is interested only in inspecting the selected mapping types,
382then the value 2 or 3 can be used instead of 1.
2dad4c59 383.IP
dfdf642e 384Further values can be written to affect different properties:
76e0451c
MK
385.RS
386.TP
3874 (since Linux 3.11)
388Clear the soft-dirty bit for all the pages associated with the process.
389.\" Internally: CLEAR_REFS_SOFT_DIRTY
390This is used (in conjunction with
391.IR /proc/[pid]/pagemap )
392by the check-point restore system to discover which pages of a process
393have been dirtied since the file
394.IR /proc/[pid]/clear_refs
395was written to.
dfdf642e
NK
396.TP
3975 (since Linux 4.0)
398.\" Internally: CLEAR_REFS_MM_HIWATER_RSS
0989246e
MK
399Reset the peak resident set size ("high water mark") to the process's
400current resident set size value.
76e0451c
MK
401.RE
402.IP
403Writing any value to
404.IR /proc/[pid]/clear_refs
405other than those listed above has no effect.
2dad4c59 406.IP
76e0451c
MK
407The
408.IR /proc/[pid]/clear_refs
409file is present only if the
410.B CONFIG_PROC_PAGE_MONITOR
411kernel configuration option is enabled.
857f1942 412.TP
69119dc7 413.I /proc/[pid]/cmdline
6975c16e 414This read-only file holds the complete command line for the process,
b447cd58
MK
415unless the process is a zombie.
416.\" In 2.3.26, this also used to be true if the process was swapped out.
417In the latter case, there is nothing in this file:
75b94dc3 418that is, a read on this file will return 0 characters.
b447cd58 419The command-line arguments appear in this file as a set of
6596d270
MK
420strings separated by null bytes (\(aq\\0\(aq),
421with a further null byte after the last string.
32d7ef00
MK
422.TP
423.IR /proc/[pid]/comm " (since Linux 2.6.33)"
424.\" commit 4614a696bd1c3a9af3a08f0e5874830a85b889d4
425This file exposes the process's
426.I comm
427value\(emthat is, the command name associated with the process.
428Different threads in the same process may have different
429.I comm
430values, accessible via
431.IR /proc/[pid]/task/[tid]/comm .
432A thread may modify its
433.I comm
434value, or that of any of other thread in the same thread group (see
435the discussion of
436.B CLONE_THREAD
437in
438.BR clone (2)),
439by writing to the file
440.IR /proc/self/task/[tid]/comm .
441Strings longer than
442.B TASK_COMM_LEN
443(16) characters are silently truncated.
2dad4c59 444.IP
ef4f4031 445This file provides a superset of the
32d7ef00
MK
446.BR prctl (2)
447.B PR_SET_NAME
448and
449.B PR_GET_NAME
450operations, and is employed by
451.BR pthread_setname_np (3)
452when used to rename threads other than the caller.
fea681da 453.TP
7e07d950 454.IR /proc/[pid]/coredump_filter " (since Linux 2.6.23)"
b4e9ee8f
MK
455See
456.BR core (5).
5c411b17 457.TP
7e07d950
MK
458.IR /proc/[pid]/cpuset " (since Linux 2.6.12)"
459.\" and/proc/[pid]/task/[tid]/cpuset
5c411b17
MK
460See
461.BR cpuset (7).
b4e9ee8f 462.TP
69119dc7 463.I /proc/[pid]/cwd
c13182ef 464This is a symbolic link to the current working directory of the process.
59a40ed7
MK
465To find out the current working directory of process 20,
466for instance, you can do this:
2dad4c59 467.IP
59a40ed7 468.in +4n
37d5e699 469.EX
b43a3b30 470.RB "$" " cd /proc/20/cwd; /bin/pwd"
37d5e699 471.EE
59a40ed7 472.in
2dad4c59 473.IP
c13182ef
MK
474Note that the
475.I pwd
e7b489f0 476command is often a shell built-in, and might
c13182ef 477not work properly.
743638fd
MK
478In
479.BR bash (1),
480you may use
481.IR "pwd\ \-P" .
2dad4c59 482.IP
afcaf646 483.\" The following was still true as at kernel 2.6.13
c13182ef
MK
484In a multithreaded process, the contents of this symbolic link
485are not available if the main thread has already terminated
afcaf646 486(typically by calling
59a40ed7 487.BR pthread_exit (3)).
2dad4c59 488.IP
b902fe18
MK
489Permission to dereference or read
490.RB ( readlink (2))
491this symbolic link is governed by a ptrace access mode
492.B PTRACE_MODE_READ_FSCREDS
493check; see
494.BR ptrace (2).
fea681da 495.TP
69119dc7 496.I /proc/[pid]/environ
09651080
MK
497This file contains the initial environment that was set
498when the currently executing program was started via
499.BR execve (2).
f81fb444 500The entries are separated by null bytes (\(aq\\0\(aq),
b4e9ee8f 501and there may be a null byte at the end.
fea681da 502Thus, to print out the environment of process 1, you would do:
37d5e699 503.IP
a08ea57c 504.in +4n
37d5e699 505.EX
13912780 506.RB "$" " strings /proc/1/environ"
37d5e699 507.EE
a08ea57c 508.in
2dad4c59 509.IP
09651080
MK
510If, after an
511.BR execve (2),
512the process modifies its environment
c187d2a1 513(e.g., by calling functions such as
387e2438
MF
514.BR putenv (3)
515or modifying the
516.BR environ (7)
517variable directly),
09651080
MK
518this file will
519.I not
520reflect those changes.
2dad4c59 521.IP
c187d2a1 522Furthermore, a process may change the memory location that this file refers via
387e2438 523.BR prctl (2)
c187d2a1 524operations such as
387e2438 525.BR PR_SET_MM_ENV_START .
2dad4c59 526.IP
82664739
MK
527Permission to access this file is governed by a ptrace access mode
528.B PTRACE_MODE_READ_FSCREDS
529check; see
530.BR ptrace (2).
fea681da 531.TP
69119dc7 532.I /proc/[pid]/exe
fea681da 533Under Linux 2.2 and later, this file is a symbolic link
2d7195b8 534containing the actual pathname of the executed command.
c13182ef
MK
535This symbolic link can be dereferenced normally; attempting to open
536it will open the executable.
537You can even type
69119dc7 538.I /proc/[pid]/exe
06dd061c 539to run another copy of the same executable that is being run by
69119dc7 540process [pid].
7e3c767a
GJ
541If the pathname has been unlinked, the symbolic link will contain the
542string \(aq(deleted)\(aq appended to the original pathname.
afcaf646 543.\" The following was still true as at kernel 2.6.13
c13182ef
MK
544In a multithreaded process, the contents of this symbolic link
545are not available if the main thread has already terminated
afcaf646
MK
546(typically by calling
547.BR pthread_exit (3)).
2dad4c59 548.IP
b902fe18
MK
549Permission to dereference or read
550.RB ( readlink (2))
551this symbolic link is governed by a ptrace access mode
552.B PTRACE_MODE_READ_FSCREDS
553check; see
554.BR ptrace (2).
2dad4c59 555.IP
eb9a0b2f 556Under Linux 2.0 and earlier,
69119dc7 557.I /proc/[pid]/exe
c13182ef
MK
558is a pointer to the binary which was executed,
559and appears as a symbolic link.
560A
fea681da
MK
561.BR readlink (2)
562call on this file under Linux 2.0 returns a string in the format:
2dad4c59 563.IP
59a40ed7 564 [device]:inode
2dad4c59 565.IP
fea681da
MK
566For example, [0301]:1502 would be inode 1502 on device major 03 (IDE,
567MFM, etc. drives) minor 01 (first partition on the first drive).
2dad4c59 568.IP
fea681da 569.BR find (1)
59a40ed7
MK
570with the
571.I \-inum
572option can be used to locate the file.
fea681da 573.TP
d4529654 574.I /proc/[pid]/fd/
fea681da
MK
575This is a subdirectory containing one entry for each file which the
576process has open, named by its file descriptor, and which is a
c13182ef 577symbolic link to the actual file.
f78ed33a 578Thus, 0 is standard input, 1 standard output, 2 standard error, and so on.
2dad4c59 579.IP
f75715e0
MK
580For file descriptors for pipes and sockets,
581the entries will be symbolic links whose content is the
582file type with the inode.
d4529654
MF
583A
584.BR readlink (2)
585call on this file returns a string in the format:
2dad4c59 586.IP
d4529654 587 type:[inode]
2dad4c59 588.IP
f75715e0
MK
589For example,
590.I socket:[2248868]
591will be a socket and its inode is 2248868.
592For sockets, that inode can be used to find more information
593in one of the files under
d4529654 594.IR /proc/net/ .
2dad4c59 595.IP
2b7a2ac5
MK
596For file descriptors that have no corresponding inode
597(e.g., file descriptors produced by
89e284a2 598.BR bpf (2),
2b7a2ac5
MK
599.BR epoll_create (2),
600.BR eventfd (2),
601.BR inotify_init (2),
89e284a2 602.BR perf_event_open (2),
2b7a2ac5 603.BR signalfd (2),
89e284a2 604.BR timerfd_create (2),
2b7a2ac5 605and
e8675558 606.BR userfaultfd (2)),
2b7a2ac5 607the entry will be a symbolic link with contents of the form
2dad4c59 608.IP
2b7a2ac5 609 anon_inode:<file-type>
2dad4c59 610.IP
e2a5929d 611In many cases (but not all), the
2b7a2ac5
MK
612.I file-type
613is surrounded by square brackets.
2dad4c59 614.IP
2b7a2ac5
MK
615For example, an epoll file descriptor will have a symbolic link
616whose content is the string
617.IR "anon_inode:[eventpoll]" .
2dad4c59 618.IP
d4529654 619.\"The following was still true as at kernel 2.6.13
afcaf646 620In a multithreaded process, the contents of this directory
c13182ef 621are not available if the main thread has already terminated
afcaf646
MK
622(typically by calling
623.BR pthread_exit (3)).
2dad4c59 624.IP
20c1a631
MK
625Programs that take a filename as a command-line argument,
626but don't take input from standard input if no argument is supplied,
627and programs that write to a file named as a command-line argument,
628but don't send their output to standard output
59a40ed7 629if no argument is supplied, can nevertheless be made to use
20c1a631
MK
630standard input or standard output by using
631.IR /proc/[pid]/fd
632files as command-line arguments.
59a40ed7
MK
633For example, assuming that
634.I \-i
635is the flag designating an input file and
636.I \-o
637is the flag designating an output file:
37d5e699 638.IP
a08ea57c 639.in +4n
37d5e699 640.EX
b43a3b30 641.RB "$" " foobar \-i /proc/self/fd/0 \-o /proc/self/fd/1 ..."
37d5e699 642.EE
a08ea57c 643.in
2dad4c59 644.IP
fea681da
MK
645and you have a working filter.
646.\" The following is not true in my tests (MTK):
647.\" Note that this will not work for
648.\" programs that seek on their files, as the files in the fd directory
649.\" are not seekable.
2dad4c59 650.IP
59a40ed7
MK
651.I /proc/self/fd/N
652is approximately the same as
653.I /dev/fd/N
008f1ecc 654in some UNIX and UNIX-like systems.
c13182ef 655Most Linux MAKEDEV scripts symbolically link
59a40ed7
MK
656.I /dev/fd
657to
658.IR /proc/self/fd ,
659in fact.
2dad4c59 660.IP
59a40ed7
MK
661Most systems provide symbolic links
662.IR /dev/stdin ,
663.IR /dev/stdout ,
664and
665.IR /dev/stderr ,
666which respectively link to the files
667.IR 0 ,
668.IR 1 ,
669and
670.IR 2
671in
672.IR /proc/self/fd .
673Thus the example command above could be written as:
37d5e699 674.PP
59a40ed7 675.in +4n
37d5e699 676.EX
b43a3b30 677.RB "$" " foobar \-i /dev/stdin \-o /dev/stdout ..."
37d5e699 678.EE
59a40ed7 679.in
138a191e
MK
680.IP
681Permission to dereference or read
682.RB ( readlink (2))
683the symbolic links in this directory is governed by a ptrace access mode
684.B PTRACE_MODE_READ_FSCREDS
685check; see
686.BR ptrace (2).
69ab425e 687.TP
7e07d950 688.IR /proc/[pid]/fdinfo/ " (since Linux 2.6.22)"
69ab425e
MK
689This is a subdirectory containing one entry for each file which the
690process has open, named by its file descriptor.
0275956d 691The files in this directory are readable only by the owner of the process.
69ab425e 692The contents of each file can be read to obtain information
0275956d
MK
693about the corresponding file descriptor.
694The content depends on the type of file referred to by the
d9cb0d7d 695corresponding file descriptor.
2dad4c59 696.IP
0275956d 697For regular files and directories, we see something like:
37d5e699 698.IP
69ab425e 699.in +4n
37d5e699 700.EX
69ab425e
MK
701.RB "$" " cat /proc/12015/fdinfo/4"
702pos: 1000
703flags: 01002002
0275956d 704mnt_id: 21
37d5e699 705.EE
69ab425e 706.in
2dad4c59 707.IP
9599cbb3
MK
708The fields are as follows:
709.RS
710.TP
69ab425e 711.I pos
9599cbb3
MK
712This is a decimal number showing the file offset.
713.TP
69ab425e 714.I flags
9599cbb3 715This is an octal number that displays the
69ab425e
MK
716file access mode and file status flags (see
717.BR open (2)).
d7e537ce
MK
718If the close-on-exec file descriptor flag is set, then
719.I flags
720will also include the value
721.BR O_CLOEXEC .
2dad4c59 722.IP
d7e537ce
MK
723Before Linux 3.1,
724.\" commit 1117f72ea0217ba0cc19f05adbbd8b9a397f5ab7
725this field incorrectly displayed the setting of
726.B O_CLOEXEC
727at the time the file was opened,
728rather than the current setting of the close-on-exec flag.
9599cbb3
MK
729.TP
730.I
0275956d 731.I mnt_id
9599cbb3 732This field, present since Linux 3.15,
0275956d
MK
733.\" commit 49d063cb353265c3af701bab215ac438ca7df36d
734is the ID of the mount point containing this file.
735See the description of
736.IR /proc/[pid]/mountinfo .
9599cbb3
MK
737.RE
738.IP
6e7622ee
MK
739For eventfd file descriptors (see
740.BR eventfd (2)),
b6a7fd50
MK
741we see (since Linux 3.8)
742.\" commit cbac5542d48127b546a23d816380a7926eee1c25
743the following fields:
2dad4c59 744.IP
6e7622ee 745.in +4n
37d5e699 746.EX
6e7622ee
MK
747pos: 0
748flags: 02
749mnt_id: 10
750eventfd-count: 40
37d5e699 751.EE
6e7622ee 752.in
2dad4c59 753.IP
6e7622ee
MK
754.I eventfd-count
755is the current value of the eventfd counter, in hexadecimal.
2dad4c59 756.IP
58d375dd
MK
757For epoll file descriptors (see
758.BR epoll (7)),
b6a7fd50
MK
759we see (since Linux 3.8)
760.\" commit 138d22b58696c506799f8de759804083ff9effae
761the following fields:
2dad4c59 762.IP
58d375dd 763.in +4n
37d5e699 764.EX
58d375dd
MK
765pos: 0
766flags: 02
767mnt_id: 10
768tfd: 9 events: 19 data: 74253d2500000009
769tfd: 7 events: 19 data: 74253d2500000007
37d5e699 770.EE
58d375dd 771.in
2dad4c59 772.IP
58d375dd
MK
773Each of the lines beginning
774.I tfd
775describes one of the file descriptors being monitored via
776the epoll file descriptor (see
777.BR epoll_ctl (2)
778for some details).
779The
780.IR tfd
781field is the number of the file descriptor.
782The
783.I events
784field is a hexadecimal mask of the events being monitored for this file
785descriptor.
786The
787.I data
788field is the data value associated with this file descriptor.
2dad4c59 789.IP
f8a14cac
MK
790For signalfd file descriptors (see
791.BR signalfd (2)),
b6a7fd50
MK
792we see (since Linux 3.8)
793.\" commit 138d22b58696c506799f8de759804083ff9effae
794the following fields:
2dad4c59 795.IP
f8a14cac 796.in +4n
37d5e699 797.EX
f8a14cac
MK
798pos: 0
799flags: 02
800mnt_id: 10
801sigmask: 0000000000000006
37d5e699 802.EE
f8a14cac 803.in
2dad4c59 804.IP
f8a14cac
MK
805.I sigmask
806is the hexadecimal mask of signals that are accepted via this
807signalfd file descriptor.
808(In this example, bits 2 and 3 are set, corresponding to the signals
809.B SIGINT
810and
811.BR SIGQUIT ;
812see
813.BR signal (7).)
2dad4c59 814.IP
4e77145c
MK
815For inotify file descriptors (see
816.BR inotify (7)),
817we see (since Linux 3.8)
818the following fields:
2dad4c59 819.IP
4e77145c 820.in +4n
37d5e699 821.EX
4e77145c
MK
822pos: 0
823flags: 00
824mnt_id: 11
825inotify wd:2 ino:7ef82a sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:2af87e00220ffd73
826inotify wd:1 ino:192627 sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:27261900802dfd73
37d5e699 827.EE
4e77145c 828.in
2dad4c59 829.IP
4e77145c
MK
830Each of the lines beginning with "inotify" displays information about
831one file or directory that is being monitored.
832The fields in this line are as follows:
833.RS
834.TP
835.I wd
836A watch descriptor number (in decimal).
837.TP
838.I ino
839The inode number of the target file (in hexadecimal).
840.TP
841.I sdev
842The ID of the device where the target file resides (in hexadecimal).
843.TP
844.I mask
845The mask of events being monitored for the target file (in hexadecimal).
846.RE
847.IP
848If the kernel was built with exportfs support, the path to the target
849file is exposed as a file handle, via three hexadecimal fields:
850.IR fhandle-bytes ,
851.IR fhandle-type ,
852and
853.IR f_handle .
2dad4c59 854.IP
e2444bcb
MK
855For fanotify file descriptors (see
856.BR fanotify (7)),
857we see (since Linux 3.8)
858the following fields:
2dad4c59 859.IP
e2444bcb 860.in +4n
37d5e699 861.EX
e2444bcb
MK
862pos: 0
863flags: 02
864mnt_id: 11
865fanotify flags:0 event-flags:88002
866fanotify ino:19264f sdev:800001 mflags:0 mask:1 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:4f261900a82dfd73
37d5e699 867.EE
e2444bcb 868.in
2dad4c59 869.IP
e2444bcb
MK
870The fourth line displays information defined when the fanotify group
871was created via
872.BR fanotify_init (2):
873.RS
874.TP
875.I flags
876The
877.I flags
878argument given to
879.BR fanotify_init (2)
880(expressed in hexadecimal).
881.TP
882.I event-flags
883The
884.I event_f_flags
885argument given to
886.BR fanotify_init (2)
887(expressed in hexadecimal).
888.RE
889.IP
890Each additional line shown in the file contains information
891about one of the marks in the fanotify group.
892Most of these fields are as for inotify, except:
893.RS
894.TP
895.I mflags
896The flags associated with the mark
897(expressed in hexadecimal).
898.TP
899.I mask
900The events mask for this mark
901(expressed in hexadecimal).
902.TP
903.I ignored_mask
904The mask of events that are ignored for this mark
905(expressed in hexadecimal).
906.RE
907.IP
908For details on these fields, see
909.BR fanotify_mark (2).
0ca2fc4d 910.TP
93401860
MK
911.IR /proc/[pid]/gid_map " (since Linux 3.5)"
912See
913.BR user_namespaces (7).
914.TP
0ca2fc4d 915.IR /proc/[pid]/io " (since kernel 2.6.20)"
68f11066
MK
916.\" commit 7c3ab7381e79dfc7db14a67c6f4f3285664e1ec2
917This file contains I/O statistics for the process, for example:
37d5e699 918.IP
0ca2fc4d 919.in +4n
37d5e699 920.EX
0ca2fc4d
PS
921.RB "#" " cat /proc/3828/io"
922rchar: 323934931
923wchar: 323929600
924syscr: 632687
925syscw: 632675
926read_bytes: 0
927write_bytes: 323932160
928cancelled_write_bytes: 0
37d5e699 929.EE
0ca2fc4d 930.in
2dad4c59 931.IP
0ca2fc4d
PS
932The fields are as follows:
933.RS
68f11066
MK
934.TP
935.IR rchar ": characters read"
0ca2fc4d
PS
936The number of bytes which this task has caused to be read from storage.
937This is simply the sum of bytes which this process passed to
938.BR read (2)
68f11066 939and similar system calls.
11256884 940It includes things such as terminal I/O and
68f11066
MK
941is unaffected by whether or not actual
942physical disk I/O was required (the read might have been satisfied from
0ca2fc4d 943pagecache).
68f11066
MK
944.TP
945.IR wchar ": characters written"
0ca2fc4d
PS
946The number of bytes which this task has caused, or shall cause to be written
947to disk.
948Similar caveats apply here as with
949.IR rchar .
68f11066
MK
950.TP
951.IR syscr ": read syscalls"
952Attempt to count the number of read I/O operations\(emthat is,
953system calls such as
0ca2fc4d
PS
954.BR read (2)
955and
956.BR pread (2).
68f11066
MK
957.TP
958.IR syscw ": write syscalls"
959Attempt to count the number of write I/O operations\(emthat is,
960system calls such as
0ca2fc4d
PS
961.BR write (2)
962and
963.BR pwrite (2).
68f11066
MK
964.TP
965.IR read_bytes ": bytes read"
0ca2fc4d
PS
966Attempt to count the number of bytes which this process really did cause to
967be fetched from the storage layer.
968This is accurate for block-backed filesystems.
68f11066
MK
969.TP
970.IR write_bytes ": bytes written"
0ca2fc4d
PS
971Attempt to count the number of bytes which this process caused to be sent to
972the storage layer.
68f11066 973.TP
0ca2fc4d 974.IR cancelled_write_bytes :
0ca2fc4d
PS
975The big inaccuracy here is truncate.
976If a process writes 1MB to a file and then deletes the file,
977it will in fact perform no writeout.
978But it will have been accounted as having caused 1MB of write.
68f11066 979In other words: this field represents the number of bytes which this process
0ca2fc4d 980caused to not happen, by truncating pagecache.
68f11066 981A task can cause "negative" I/O too.
0ca2fc4d 982If this task truncates some dirty pagecache,
68f11066
MK
983some I/O which another task has been accounted for
984(in its
985.IR write_bytes )
986will not be happening.
987.RE
0ca2fc4d
PS
988.IP
989.IR Note :
68f11066 990In the current implementation, things are a bit racy on 32-bit systems:
0ca2fc4d
PS
991if process A reads process B's
992.I /proc/[pid]/io
68f11066 993while process B is updating one of these 64-bit counters,
0ca2fc4d 994process A could see an intermediate result.
2dad4c59 995.IP
d8e2972a
MK
996Permission to access this file is governed by a ptrace access mode
997.B PTRACE_MODE_READ_FSCREDS
998check; see
999.BR ptrace (2).
f6e17121 1000.TP
7e07d950 1001.IR /proc/[pid]/limits " (since Linux 2.6.24)"
69ab425e
MK
1002This file displays the soft limit, hard limit, and units of measurement
1003for each of the process's resource limits (see
1004.BR getrlimit (2)).
1005Up to and including Linux 2.6.35,
1006this file is protected to allow reading only by the real UID of the process.
1007Since Linux 2.6.36,
1008.\" commit 3036e7b490bf7878c6dae952eec5fb87b1106589
1009this file is readable by all users on the system.
df2a8576
MK
1010.\" FIXME Describe /proc/[pid]/loginuid
1011.\" Added in 2.6.11; updating requires CAP_AUDIT_CONTROL
1012.\" CONFIG_AUDITSYSCALL
b4f89985
PE
1013.TP
1014.IR /proc/[pid]/map_files/ " (since kernel 3.3)
18cdd0ac
MK
1015.\" commit 640708a2cff7f81e246243b0073c66e6ece7e53e
1016This subdirectory contains entries corresponding to memory-mapped
b4f89985
PE
1017files (see
1018.BR mmap (2)).
18cdd0ac
MK
1019Entries are named by memory region start and end
1020address pair (expressed as hexadecimal numbers),
1021and are symbolic links to the mapped files themselves.
1022Here is an example, with the output wrapped and reformatted to fit on an 80-column display:
37d5e699 1023.IP
b4f89985 1024.in +4n
37d5e699 1025.EX
f2aa4dcc 1026.RB "#" " ls -l /proc/self/map_files/"
18cdd0ac 1027lr\-\-\-\-\-\-\-\-. 1 root root 64 Apr 16 21:31
9bc87ed0 1028 3252e00000\-3252e20000 \-> /usr/lib64/ld\-2.15.so
b4f89985 1029\&...
37d5e699 1030.EE
b4f89985 1031.in
2dad4c59 1032.IP
b4f89985 1033Although these entries are present for memory regions that were
d6a56978 1034mapped with the
b4f89985 1035.BR MAP_FILE
18cdd0ac 1036flag, the way anonymous shared memory (regions created with the
b4f89985
PE
1037.B MAP_ANON | MAP_SHARED
1038flags)
1039is implemented in Linux
18cdd0ac
MK
1040means that such regions also appear on this directory.
1041Here is an example where the target file is the deleted
1042.I /dev/zero
1043one:
37d5e699 1044.IP
b4f89985 1045.in +4n
37d5e699 1046.EX
18cdd0ac
MK
1047lrw\-\-\-\-\-\-\-. 1 root root 64 Apr 16 21:33
1048 7fc075d2f000\-7fc075e6f000 \-> /dev/zero (deleted)
37d5e699 1049.EE
b4f89985 1050.in
2dad4c59 1051.IP
b4f89985
PE
1052This directory appears only if the
1053.B CONFIG_CHECKPOINT_RESTORE
1054kernel configuration option is enabled.
f2aa4dcc
MK
1055Privilege
1056.RB ( CAP_SYS_ADMIN )
1057.\" FIXME
1058.\" This may change. See the mail thread
43d42cc0 1059.\" "[RFC][PATCH v2] procfs: Always expose /proc/<pid>/map_files/ and make it readable"
f2aa4dcc
MK
1060.\" from Jan 2015
1061is required to view the contents of this directory.
fea681da 1062.TP
69119dc7 1063.I /proc/[pid]/maps
fea681da
MK
1064A file containing the currently mapped memory regions and their access
1065permissions.
bbf9f397
MK
1066See
1067.BR mmap (2)
1068for some further information about memory mappings.
2dad4c59 1069.IP
aee2f0bf
MK
1070Permission to access this file is governed by a ptrace access mode
1071.B PTRACE_MODE_READ_FSCREDS
1072check; see
1073.BR ptrace (2).
2dad4c59 1074.IP
dd0c3b96 1075The format of the file is:
c1a022dc
MK
1076.IP
1077.in 4n
1078.EX
21781757 1079.I "address perms offset dev inode pathname"
9bc87ed0
MK
108000400000\-00452000 r-xp 00000000 08:02 173521 /usr/bin/dbus-daemon
108100651000\-00652000 r--p 00051000 08:02 173521 /usr/bin/dbus-daemon
108200652000\-00655000 rw-p 00052000 08:02 173521 /usr/bin/dbus-daemon
108300e03000\-00e24000 rw-p 00000000 00:00 0 [heap]
108400e24000\-011f7000 rw-p 00000000 00:00 0 [heap]
182090db 1085\&...
9bc87ed0
MK
108635b1800000\-35b1820000 r-xp 00000000 08:02 135522 /usr/lib64/ld\-2.15.so
108735b1a1f000\-35b1a20000 r--p 0001f000 08:02 135522 /usr/lib64/ld\-2.15.so
108835b1a20000\-35b1a21000 rw-p 00020000 08:02 135522 /usr/lib64/ld\-2.15.so
108935b1a21000\-35b1a22000 rw-p 00000000 00:00 0
109035b1c00000\-35b1dac000 r-xp 00000000 08:02 135870 /usr/lib64/libc\-2.15.so
109135b1dac000\-35b1fac000 ---p 001ac000 08:02 135870 /usr/lib64/libc\-2.15.so
109235b1fac000\-35b1fb0000 r--p 001ac000 08:02 135870 /usr/lib64/libc\-2.15.so
109335b1fb0000\-35b1fb2000 rw-p 001b0000 08:02 135870 /usr/lib64/libc\-2.15.so
182090db 1094\&...
9bc87ed0 1095f2c6ff8c000\-7f2c7078c000 rw-p 00000000 00:00 0 [stack:986]
182090db 1096\&...
9bc87ed0
MK
10977fffb2c0d000\-7fffb2c2e000 rw-p 00000000 00:00 0 [stack]
10987fffb2d48000\-7fffb2d49000 r-xp 00000000 00:00 0 [vdso]
c1a022dc 1099.EE
21781757 1100.in
c1a022dc 1101.IP
7d2e6d74 1102The
3eb8c588
MK
1103.I address
1104field is the address space in the process that the mapping occupies.
1105The
1106.I perms
1107field is a set of permissions:
2dad4c59 1108.IP
37d5e699
MK
1109.in +4
1110.EX
fea681da
MK
1111r = read
1112w = write
1113x = execute
1114s = shared
1115p = private (copy on write)
37d5e699 1116.EE
fea681da 1117.in
2dad4c59 1118.IP
3eb8c588
MK
1119The
1120.I offset
b844cf04 1121field is the offset into the file/whatever;
3eb8c588
MK
1122.I dev
1123is the device
dd0c3b96 1124(major:minor);
3eb8c588
MK
1125.I inode
1126is the inode on that device.
59a40ed7 11270 indicates that no inode is associated with the memory region,
16e64bae 1128as would be the case with BSS (uninitialized data).
2dad4c59 1129.IP
3eb8c588
MK
1130The
1131.I pathname
1132field will usually be the file that is backing the mapping.
491ea6f1 1133For ELF files,
3eb8c588
MK
1134you can easily coordinate with the
1135.I offset
1136field by looking at the
491ea6f1
MK
1137Offset field in the ELF program headers
1138.RI ( "readelf\ \-l" ).
2dad4c59 1139.IP
491ea6f1 1140There are additional helpful pseudo-paths:
61b0b1f4
MK
1141.RS 12
1142.TP
1143.IR [stack]
16e64bae 1144The initial process's (also known as the main thread's) stack.
61b0b1f4 1145.TP
3eb8c588 1146.IR [stack:<tid>] " (since Linux 3.4)"
a60894c5 1147.\" commit b76437579d1344b612cf1851ae610c636cec7db0
61b0b1f4 1148A thread's stack (where the
3eb8c588 1149.IR <tid>
61b0b1f4 1150is a thread ID).
491ea6f1 1151It corresponds to the
3eb8c588 1152.IR /proc/[pid]/task/[tid]/
37d32c38 1153path.
61b0b1f4 1154.TP
7d2e6d74 1155.IR [vdso]
61b0b1f4 1156The virtual dynamically linked shared object.
c56a0185
MK
1157See
1158.BR vdso (7).
61b0b1f4 1159.TP
7d2e6d74 1160.IR [heap]
61b0b1f4
MK
1161The process's heap.
1162.in
61b0b1f4
MK
1163.RE
1164.IP
3eb8c588
MK
1165If the
1166.I pathname
1167field is blank,
40382e5e
MK
1168this is an anonymous mapping as obtained via
1169.BR mmap (2).
61b0b1f4
MK
1170There is no easy way to coordinate this back to a process's source,
1171short of running it through
491ea6f1
MK
1172.BR gdb (1),
1173.BR strace (1),
1174or similar.
2dad4c59 1175.IP
eb9a0b2f 1176Under Linux 2.0, there is no field giving pathname.
fea681da 1177.TP
69119dc7 1178.I /proc/[pid]/mem
fea681da
MK
1179This file can be used to access the pages of a process's memory through
1180.BR open (2),
1181.BR read (2),
1182and
ccb2bb0d 1183.BR lseek (2).
2dad4c59 1184.IP
aee2f0bf
MK
1185Permission to access this file is governed by a ptrace access mode
1186.B PTRACE_MODE_ATTACH_FSCREDS
1187check; see
1188.BR ptrace (2).
b4e9ee8f 1189.TP
69119dc7 1190.IR /proc/[pid]/mountinfo " (since Linux 2.6.26)"
b4e9ee8f 1191.\" This info adapted from Documentation/filesystems/proc.txt
fb4bdaa1 1192.\" commit 2d4d4864ac08caff5c204a752bd004eed4f08760
ef5b47f6
MK
1193This file contains information about mount points
1194in the process's mount namespace (see
1195.BR mount_namespaces (7)).
fb4bdaa1
MK
1196It supplies various information
1197(e.g., propagation state, root of mount for bind mounts,
1198identifier for each mount and its parent) that is missing from the (older)
1199.IR /proc/[pid]/mounts
1200file, and fixes various other problems with that file
1201(e.g., nonextensibility,
1202failure to distinguish per-mount versus per-superblock options).
2dad4c59 1203.IP
fb4bdaa1 1204The file contains lines of the form:
c1a022dc
MK
1205.IP
1206.in 0n
1207.EX
0f619d1f 120836 35 98:0 /mnt1 /mnt2 rw,noatime master:1 \- ext3 /dev/root rw,errors=continue
b4e9ee8f 1209(1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
c1a022dc
MK
1210.in
1211.EE
b4e9ee8f
MK
1212.IP
1213The numbers in parentheses are labels for the descriptions below:
3bc960c2 1214.RS 7
b4e9ee8f
MK
1215.TP 5
1216(1)
0f619d1f 1217mount ID: a unique ID for the mount (may be reused after
b4e9ee8f
MK
1218.BR umount (2)).
1219.TP
1220(2)
0f619d1f
MK
1221parent ID: the ID of the parent mount
1222(or of self for the top of the mount tree).
b4e9ee8f
MK
1223.TP
1224(3)
0f619d1f 1225major:minor: the value of
b4e9ee8f 1226.I st_dev
0f619d1f 1227for files on this filesystem (see
b4e9ee8f
MK
1228.BR stat (2)).
1229.TP
1230(4)
0f619d1f 1231root: the pathname of the directory in the filesystem
8d857fcb 1232which forms the root of this mount.
b4e9ee8f
MK
1233.TP
1234(5)
ebdc66e2 1235mount point: the pathname of the mount point relative
0f619d1f 1236to the process's root directory.
b4e9ee8f
MK
1237.TP
1238(6)
1239mount options: per-mount options.
1240.TP
1241(7)
0f619d1f 1242optional fields: zero or more fields of the form "tag[:value]"; see below.
b4e9ee8f
MK
1243.TP
1244(8)
0f619d1f 1245separator: the end of the optional fields is marked by a single hyphen.
b4e9ee8f
MK
1246.TP
1247(9)
0f619d1f 1248filesystem type: the filesystem type in the form "type[.subtype]".
b4e9ee8f
MK
1249.TP
1250(10)
9ee4a2b6 1251mount source: filesystem-specific information or "none".
b4e9ee8f
MK
1252.TP
1253(11)
68d86eac 1254super options: per-superblock options.
b4e9ee8f
MK
1255.RE
1256.IP
966b5839
MK
1257Currently, the possible optional fields are
1258.IR shared ,
1259.IR master ,
1260.IR propagate_from ,
1261and
1262.IR unbindable .
1263See
1264.BR mount_namespaces (7)
1265for a description of these fields.
0f619d1f
MK
1266Parsers should ignore all unrecognized optional fields.
1267.IP
b4e9ee8f
MK
1268For more information on mount propagation see:
1269.I Documentation/filesystems/sharedsubtree.txt
66a9882e 1270in the Linux kernel source tree.
b4e9ee8f 1271.TP
cea61382 1272.IR /proc/[pid]/mounts " (since Linux 2.4.19)"
226cb3a8 1273This file lists all the filesystems currently mounted in the
ef5b47f6
MK
1274process's mount namespace (see
1275.BR mount_namespaces (7)).
cea61382
MK
1276The format of this file is documented in
1277.BR fstab (5).
2dad4c59 1278.IP
cea61382
MK
1279Since kernel version 2.6.15, this file is pollable:
1280after opening the file for reading, a change in this file
9ee4a2b6 1281(i.e., a filesystem mount or unmount) causes
cea61382 1282.BR select (2)
226cb3a8 1283to mark the file descriptor as having an exceptional condition, and
cea61382
MK
1284.BR poll (2)
1285and
1286.BR epoll_wait (2)
226cb3a8
MK
1287mark the file as having a priority event
1288.RB ( POLLPRI ).
1289(Before Linux 2.6.30,
1290a change in this file was indicated by the file descriptor
1291being marked as readable for
1292.BR select (2),
1293and being marked as having an error condition for
1294.BR poll (2)
1295and
1296.BR epoll_wait (2).)
cea61382 1297.TP
69119dc7 1298.IR /proc/[pid]/mountstats " (since Linux 2.6.17)"
783a6233 1299This file exports information (statistics, configuration information)
ef5b47f6
MK
1300about the mount points in the process's mount namespace (see
1301.BR mount_namespaces (7)).
b4e9ee8f 1302Lines in this file have the form:
37d5e699
MK
1303.IP
1304.in +4n
1305.EX
b4e9ee8f
MK
1306device /dev/sda7 mounted on /home with fstype ext3 [statistics]
1307( 1 ) ( 2 ) (3 ) (4)
37d5e699
MK
1308.EE
1309.in
b4e9ee8f
MK
1310.IP
1311The fields in each line are:
3bc960c2 1312.RS 7
b4e9ee8f
MK
1313.TP 5
1314(1)
1315The name of the mounted device
1316(or "nodevice" if there is no corresponding device).
1317.TP
1318(2)
9ee4a2b6 1319The mount point within the filesystem tree.
b4e9ee8f
MK
1320.TP
1321(3)
9ee4a2b6 1322The filesystem type.
b4e9ee8f
MK
1323.TP
1324(4)
1325Optional statistics and configuration information.
9ee4a2b6 1326Currently (as at Linux 2.6.26), only NFS filesystems export
b4e9ee8f
MK
1327information via this field.
1328.RE
1329.IP
90878f7c 1330This file is readable only by the owner of the process.
b4e9ee8f 1331.TP
2d3fb75b 1332.IR /proc/[pid]/net " (since Linux 2.6.25)"
9fb88bc8
MK
1333See the description of
1334.IR /proc/net .
1335.TP
b4a185e5 1336.IR /proc/[pid]/ns/ " (since Linux 3.0)"
2c4201f0 1337.\" See commit 6b4e306aa3dc94a0545eb9279475b1ab6209a31f
b4a185e5
EB
1338This is a subdirectory containing one entry for each namespace that
1339supports being manipulated by
80e63655 1340.BR setns (2).
cf8bfe6d
MK
1341For more information, see
1342.BR namespaces (7).
b4a185e5 1343.TP
69119dc7 1344.IR /proc/[pid]/numa_maps " (since Linux 2.6.14)"
610f75cc
MK
1345See
1346.BR numa (7).
7388733a 1347.TP
69119dc7 1348.IR /proc/[pid]/oom_adj " (since Linux 2.6.11)"
b4e9ee8f 1349This file can be used to adjust the score used to select which process
0425de01 1350should be killed in an out-of-memory (OOM) situation.
b4e9ee8f
MK
1351The kernel uses this value for a bit-shift operation of the process's
1352.IR oom_score
1353value:
5b8dbfd4
MK
1354valid values are in the range \-16 to +15,
1355plus the special value \-17,
b4e9ee8f
MK
1356which disables OOM-killing altogether for this process.
1357A positive score increases the likelihood of this
1358process being killed by the OOM-killer;
1359a negative score decreases the likelihood.
de8e9cc1 1360.IP
b4e9ee8f
MK
1361The default value for this file is 0;
1362a new process inherits its parent's
1363.I oom_adj
1364setting.
1365A process must be privileged
1366.RB ( CAP_SYS_RESOURCE )
1367to update this file.
f2c8b197
MK
1368.IP
1369Since Linux 2.6.36, use of this file is deprecated in favor of
1370.IR /proc/[pid]/oom_score_adj .
b4e9ee8f 1371.TP
69119dc7 1372.IR /proc/[pid]/oom_score " (since Linux 2.6.11)"
b4e9ee8f
MK
1373.\" See mm/oom_kill.c::badness() in the 2.6.25 sources
1374This file displays the current score that the kernel gives to
1375this process for the purpose of selecting a process
1376for the OOM-killer.
1377A higher score means that the process is more likely to be
1378selected by the OOM-killer.
1379The basis for this score is the amount of memory used by the process,
1380with increases (+) or decreases (\-) for factors including:
1381.\" See mm/oom_kill.c::badness() in the 2.6.25 sources
1382.RS
1383.IP * 2
1384whether the process creates a lot of children using
1385.BR fork (2)
1386(+);
1387.IP *
1388whether the process has been running a long time,
1389or has used a lot of CPU time (\-);
1390.IP *
1391whether the process has a low nice value (i.e., > 0) (+);
1392.IP *
1393whether the process is privileged (\-); and
1394.\" More precisely, if it has CAP_SYS_ADMIN or CAP_SYS_RESOURCE
1395.IP *
1396whether the process is making direct hardware access (\-).
1397.\" More precisely, if it has CAP_SYS_RAWIO
1398.RE
1399.IP
1400The
1401.I oom_score
f2c8b197
MK
1402also reflects the adjustment specified by the
1403.I oom_score_adj
1404or
b4e9ee8f
MK
1405.I oom_adj
1406setting for the process.
f2c8b197
MK
1407.TP
1408.IR /proc/[pid]/oom_score_adj " (since Linux 2.6.36)"
1409.\" Text taken from 3.7 Documentation/filesystems/proc.txt
1410This file can be used to adjust the badness heuristic used to select which
1411process gets killed in out-of-memory conditions.
2dad4c59 1412.IP
f2c8b197
MK
1413The badness heuristic assigns a value to each candidate task ranging from 0
1414(never kill) to 1000 (always kill) to determine which process is targeted.
1415The units are roughly a proportion along that range of
1416allowed memory the process may allocate from,
1417based on an estimation of its current memory and swap use.
1418For example, if a task is using all allowed memory,
1419its badness score will be 1000.
1420If it is using half of its allowed memory, its score will be 500.
2dad4c59 1421.IP
f2c8b197
MK
1422There is an additional factor included in the badness score: root
1423processes are given 3% extra memory over other tasks.
2dad4c59 1424.IP
f2c8b197 1425The amount of "allowed" memory depends on the context
0633f951 1426in which the OOM-killer was called.
f2c8b197
MK
1427If it is due to the memory assigned to the allocating task's cpuset
1428being exhausted,
1429the allowed memory represents the set of mems assigned to that
1430cpuset (see
1431.BR cpuset (7)).
1432If it is due to a mempolicy's node(s) being exhausted,
1433the allowed memory represents the set of mempolicy nodes.
1434If it is due to a memory limit (or swap limit) being reached,
1435the allowed memory is that configured limit.
1436Finally, if it is due to the entire system being out of memory, the
1437allowed memory represents all allocatable resources.
2dad4c59 1438.IP
f2c8b197 1439The value of
0633f951 1440.I oom_score_adj
f2c8b197
MK
1441is added to the badness score before it
1442is used to determine which task to kill.
1443Acceptable values range from \-1000
1444(OOM_SCORE_ADJ_MIN) to +1000 (OOM_SCORE_ADJ_MAX).
0633f951 1445This allows user space to control the preference for OOM-killing,
f2c8b197 1446ranging from always preferring a certain
f082ada4 1447task or completely disabling it from OOM killing.
f2c8b197 1448The lowest possible value, \-1000, is
0633f951 1449equivalent to disabling OOM-killing entirely for that task,
f2c8b197 1450since it will always report a badness score of 0.
2dad4c59 1451.IP
f2c8b197
MK
1452Consequently, it is very simple for user space to define
1453the amount of memory to consider for each task.
48ac01a7 1454Setting an
f2c8b197
MK
1455.I oom_score_adj
1456value of +500, for example,
1457is roughly equivalent to allowing the remainder of tasks sharing the
1458same system, cpuset, mempolicy, or memory controller resources
1459to use at least 50% more memory.
1460A value of \-500, on the other hand, would be roughly
1461equivalent to discounting 50% of the task's
1462allowed memory from being considered as scoring against the task.
2dad4c59 1463.IP
0633f951 1464For backward compatibility with previous kernels,
f2c8b197
MK
1465.I /proc/[pid]/oom_adj
1466can still be used to tune the badness score.
1467Its value is
9f1b9726 1468scaled linearly with
f2c8b197 1469.IR oom_score_adj .
2dad4c59 1470.IP
f2c8b197
MK
1471Writing to
1472.IR /proc/[pid]/oom_score_adj
1473or
1474.IR /proc/[pid]/oom_adj
1475will change the other with its scaled value.
b0aa1e51
MK
1476.TP
1477.IR /proc/[pid]/pagemap " (since Linux 2.6.25)"
1478This file shows the mapping of each of the process's virtual pages
1479into physical page frames or swap area.
1480It contains one 64-bit value for each virtual page,
1481with the bits set as follows:
1482.RS 12
1483.TP
148463
1485If set, the page is present in RAM.
1486.TP
148762
1488If set, the page is in swap space
1489.TP
149061 (since Linux 3.5)
1491The page is a file-mapped page or a shared anonymous page.
1492.TP
2e84528d 149360\(en57 (since Linux 3.11)
b0aa1e51
MK
1494Zero
1495.\" Not quite true; see commit 541c237c0923f567c9c4cabb8a81635baadc713f
1496.TP
2e84528d 149756 (since Linux 4.2)
abfbcb56
MK
1498.\" commit 77bb499bb60f4b79cca7d139c8041662860fcf87
1499.\" commit 83b4b0bb635eee2b8e075062e4e008d1bc110ed7
2e84528d
OE
1500The page is exclusively mapped.
1501.TP
b5301584 150255 (since Linux 3.11)
b0aa1e51
MK
1503PTE is soft-dirty
1504(see the kernel source file
1505.IR Documentation/vm/soft-dirty.txt ).
1506.TP
9bc87ed0 150754\(en0
b0aa1e51
MK
1508If the page is present in RAM (bit 63), then these bits
1509provide the page frame number, which can be used to index
1510.IR /proc/kpageflags
1511and
1512.IR /proc/kpagecount .
1513If the page is present in swap (bit 62),
9bc87ed0 1514then bits 4\(en0 give the swap type, and bits 54\(en5 encode the swap offset.
b0aa1e51
MK
1515.RE
1516.IP
9bc87ed0 1517Before Linux 3.11, bits 60\(en55 were
b0aa1e51
MK
1518used to encode the base-2 log of the page size.
1519.IP
1520To employ
1521.IR /proc/[pid]/pagemap
1522efficiently, use
1523.IR /proc/[pid]/maps
1524to determine which areas of memory are actually mapped and seek
1525to skip over unmapped regions.
1526.IP
1527The
1528.IR /proc/[pid]/pagemap
1529file is present only if the
1530.B CONFIG_PROC_PAGE_MONITOR
1531kernel configuration option is enabled.
2dad4c59 1532.IP
aee2f0bf
MK
1533Permission to access this file is governed by a ptrace access mode
1534.B PTRACE_MODE_READ_FSCREDS
1535check; see
1536.BR ptrace (2).
7c2905d1
MK
1537.TP
1538.IR /proc/[pid]/personality " (since Linux 2.6.28)"
1539.\" commit 478307230810d7e2a753ed220db9066dfdf88718
1540This read-only file exposes the process's execution domain, as set by
1541.BR personality (2).
1542The value is displayed in hexadecimal notation.
2dad4c59 1543.IP
4834ae91
MK
1544Permission to access this file is governed by a ptrace access mode
1545.B PTRACE_MODE_ATTACH_FSCREDS
1546check; see
1547.BR ptrace (2).
fea681da 1548.TP
69119dc7 1549.I /proc/[pid]/root
008f1ecc 1550UNIX and Linux support the idea of a per-process root of the
9ee4a2b6 1551filesystem, set by the
fea681da 1552.BR chroot (2)
c13182ef
MK
1553system call.
1554This file is a symbolic link that points to the process's
14d70713
MK
1555root directory, and behaves in the same way as
1556.IR exe ,
1557and
1558.IR fd/* .
2dad4c59 1559.IP
948f0ff4 1560Note however that this file is not merely a symbolic link.
2b312241
MF
1561It provides the same view of the filesystem (including namespaces and the
1562set of per-process mounts) as the process itself.
a77efd58
MK
1563An example illustrates this point.
1564In one terminal, we start a shell in new user and mount namespaces,
1565and in that shell we create some new mount points:
2dad4c59 1566.IP
a77efd58 1567.in +4n
37d5e699 1568.EX
a77efd58
MK
1569$ \fBPS1='sh1# ' unshare \-Urnm\fP
1570sh1# \fBmount \-t tmpfs tmpfs /etc\fP # Mount empty tmpfs at /etc
1571sh1# \fBmount \-\-bind /usr /dev\fP # Mount /usr at /dev
89f92905 1572sh1# \fBecho $$\fP
a77efd58 157327123
37d5e699 1574.EE
a77efd58 1575.in
2dad4c59 1576.IP
a77efd58
MK
1577In a second terminal window, in the initial mount namespace,
1578we look at the contents of the corresponding mounts in
1579the initial and new namespaces:
2dad4c59 1580.IP
a77efd58 1581.in +4n
37d5e699 1582.EX
89f92905 1583$ \fBPS1='sh2# ' sudo sh\fP
a77efd58
MK
1584sh2# \fBls /etc | wc \-l\fP # In initial NS
1585309
1586sh2# \fBls /proc/27123/root/etc | wc \-l\fP # /etc in other NS
15870 # The empty tmpfs dir
1588sh2# \fBls /dev | wc \-l\fP # In initial NS
1589205
1590sh2# \fBls /proc/27123/root/dev | wc \-l\fP # /dev in other NS
159111 # Actually bind
1592 # mounted to /usr
1593sh2# \fBls /usr | wc \-l\fP # /usr in initial NS
159411
37d5e699 1595.EE
a77efd58 1596.in
2dad4c59 1597.IP
afcaf646 1598.\" The following was still true as at kernel 2.6.13
3ed7270e
MK
1599In a multithreaded process, the contents of the
1600.I /proc/[pid]/root
1601symbolic link are not available if the main thread has already terminated
afcaf646
MK
1602(typically by calling
1603.BR pthread_exit (3)).
2dad4c59 1604.IP
b902fe18
MK
1605Permission to dereference or read
1606.RB ( readlink (2))
1607this symbolic link is governed by a ptrace access mode
1608.B PTRACE_MODE_READ_FSCREDS
1609check; see
1610.BR ptrace (2).
f34f0182 1611.\" FIXME Describe /proc/[pid]/projid_map
43d42cc0
MK
1612.\" Added in 3.7
1613.\" commit f76d207a66c3a53defea67e7d36c3eb1b7d6d61d
15869389
MK
1614.TP
1615.IR /proc/[pid]/seccomp " (Linux 2.6.12 to 2.6.22)"
1616This file can be used to read and change the process's
1617secure computing (seccomp) mode setting.
1618It contains the value 0 if the process is not in seccomp mode,
1619and 1 if the process is in strict seccomp mode (see
1620.BR seccomp (2)).
1621Writing 1 to this file places the process irreversibly in strict seccomp mode.
1622(Further attempts to write to the file fail with the
1623.B EPERM
1624error.)
2dad4c59 1625.IP
15869389
MK
1626In Linux 2.6.23,
1627this file went away, to be replaced by the
1628.BR prctl (2)
1629.BR PR_GET_SECCOMP
1630and
1631.BR PR_SET_SECCOMP
1632operations (and later by
1633.BR seccomp (2)
1634and the
1635.I Seccomp
1636field in
1637.IR /proc/[pid]/status ).
69119dc7 1638.\" FIXME Describe /proc/[pid]/sessionid
b3fb99e8 1639.\" commit 1e0bd7550ea9cf474b1ad4c6ff5729a507f75fdc
b4e9ee8f 1640.\" CONFIG_AUDITSYSCALL
43d42cc0 1641.\" Added in 2.6.25; read-only; only readable by real UID
bea08fec 1642.\"
69119dc7 1643.\" FIXME Describe /proc/[pid]/sched
b4e9ee8f
MK
1644.\" Added in 2.6.23
1645.\" CONFIG_SCHED_DEBUG, and additional fields if CONFIG_SCHEDSTATS
1646.\" Displays various scheduling parameters
1647.\" This file can be written, to reset stats
ef4f4031 1648.\" The set of fields exposed by this file have changed
b3fb99e8
MK
1649.\" significantly over time.
1650.\" commit 43ae34cb4cd650d1eb4460a8253a8e747ba052ac
1651.\"
69119dc7
MK
1652.\" FIXME Describe /proc/[pid]/schedstats and
1653.\" /proc/[pid]/task/[tid]/schedstats
b4e9ee8f
MK
1654.\" Added in 2.6.9
1655.\" CONFIG_SCHEDSTATS
fea681da 1656.TP
5c92b1b7 1657.IR /proc/[pid]/setgroups " (since Linux 3.19)"
ab28dba9
MK
1658See
1659.BR user_namespaces (7).
d520465b 1660.TP
69119dc7 1661.IR /proc/[pid]/smaps " (since Linux 2.6.14)"
b07b19c4 1662This file shows memory consumption for each of the process's mappings.
859503c3
MK
1663(The
1664.BR pmap (1)
1665command displays similar information,
1666in a form that may be easier for parsing.)
1f0add28 1667For each mapping there is a series of lines such as the following:
37d5e699 1668.IP
a08ea57c 1669.in +4n
37d5e699 1670.EX
9bc87ed0 167100400000\-0048a000 r\-xp 00000000 fd:03 960637 /bin/bash
95fe794d
PG
1672Size: 552 kB
1673Rss: 460 kB
1674Pss: 100 kB
1675Shared_Clean: 452 kB
1676Shared_Dirty: 0 kB
1677Private_Clean: 8 kB
1678Private_Dirty: 0 kB
1679Referenced: 460 kB
1680Anonymous: 0 kB
1681AnonHugePages: 0 kB
4ad958e1
MK
1682ShmemHugePages: 0 kB
1683ShmemPmdMapped: 0 kB
95fe794d
PG
1684Swap: 0 kB
1685KernelPageSize: 4 kB
1686MMUPageSize: 4 kB
6861f8f0
MK
1687KernelPageSize: 4 kB
1688MMUPageSize: 4 kB
95fe794d 1689Locked: 0 kB
2f057281 1690ProtectionKey: 0
eb848708 1691VmFlags: rd ex mr mw me dw
37d5e699 1692.EE
a08ea57c 1693.in
2d3fb75b 1694.IP
b07b19c4
MK
1695The first of these lines shows the same information as is displayed
1696for the mapping in
69119dc7 1697.IR /proc/[pid]/maps .
c3d59262 1698The following lines show the size of the mapping,
95fe794d 1699the amount of the mapping that is currently resident in RAM ("Rss"),
a5a3e91b 1700the process's proportional share of this mapping ("Pss"),
1f0add28 1701the number of clean and dirty shared pages in the mapping,
c7ce200d 1702and the number of clean and dirty private pages in the mapping.
95fe794d 1703"Referenced" indicates the amount of memory currently marked as
1f0add28
MK
1704referenced or accessed.
1705"Anonymous" shows the amount of memory
1706that does not belong to any file.
1707"Swap" shows how much
95fe794d 1708would-be-anonymous memory is also used, but out on swap.
2dad4c59 1709.IP
6861f8f0
MK
1710The "KernelPageSize" line (available since Linux 2.6.29)
1711is the page size used by the kernel to back the virtual memory area.
1f0add28
MK
1712This matches the size used by the MMU in the majority of cases.
1713However, one counter-example occurs on PPC64 kernels
6861f8f0 1714whereby a kernel using 64kB as a base page size may still use 4kB
1f0add28 1715pages for the MMU on older processors.
6861f8f0
MK
1716To distinguish the two attributes, the "MMUPageSize" line
1717(also available since Linux 2.6.29)
1718reports the page size used by the MMU.
2dad4c59 1719.IP
95fe794d
PG
1720The "Locked" indicates whether the mapping is locked in memory
1721or not.
2dad4c59 1722.IP
9b780b06
MK
1723The "ProtectionKey" line (available since Linux 4.9, on x86 only)
1724contains the memory protection key (see
1725.BR pkeys (7))
1726associated with the virtual memory area.
1727This entry is present only if the kernel was built with the
1728.B CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
1729configuration option.
2dad4c59 1730.IP
eb848708
MK
1731The "VmFlags" line (available since Linux 3.8)
1732represents the kernel flags associated with the virtual memory area,
1733encoded using the following two-letter codes:
2dad4c59 1734.IP
95fe794d 1735 rd - readable
1f0add28 1736 wr - writable
95fe794d
PG
1737 ex - executable
1738 sh - shared
1739 mr - may read
1740 mw - may write
1741 me - may execute
1742 ms - may share
723e333c 1743 gd - stack segment grows down
95fe794d
PG
1744 pf - pure PFN range
1745 dw - disabled write to the mapped file
1746 lo - pages are locked in memory
1747 io - memory mapped I/O area
1748 sr - sequential read advise provided
1749 rr - random read advise provided
1750 dc - do not copy area on fork
1751 de - do not expand area on remapping
1752 ac - area is accountable
1753 nr - swap space is not reserved for the area
1754 ht - area uses huge tlb pages
1755 nl - non-linear mapping
1756 ar - architecture specific flag
1757 dd - do not include area into core dump
1758 sd - soft-dirty flag
1759 mm - mixed map area
1760 hg - huge page advise flag
1761 nh - no-huge page advise flag
b5408a0f 1762 mg - mergeable advise flag
2dad4c59 1763.IP
be729d66
DH
1764"ProtectionKey" field contains the memory protection key (see
1765.BR pkeys (5))
1766associated with the virtual memory area.
f12f1b9b 1767Present only if the kernel was built with the
be729d66
DH
1768.B CONFIG_X86_INTEL_MEMORY_PROTECTION_KEYS
1769configuration option. (since Linux 4.6)
2dad4c59 1770.IP
e618d945
MK
1771The
1772.IR /proc/[pid]/smaps
1773file is present only if the
1774.B CONFIG_PROC_PAGE_MONITOR
1775kernel configuration option is enabled.
b07b19c4 1776.TP
67aac6fb
MK
1777.IR /proc/[pid]/stack " (since Linux 2.6.29)"
1778.\" 2ec220e27f5040aec1e88901c1b6ea3d135787ad
1779This file provides a symbolic trace of the function calls in this
1780process's kernel stack.
1781This file is provided only if the kernel was built with the
1782.B CONFIG_STACKTRACE
1783configuration option.
2dad4c59 1784.IP
4834ae91
MK
1785Permission to access this file is governed by a ptrace access mode
1786.B PTRACE_MODE_ATTACH_FSCREDS
1787check; see
1788.BR ptrace (2).
67aac6fb 1789.TP
69119dc7 1790.I /proc/[pid]/stat
c13182ef
MK
1791Status information about the process.
1792This is used by
1793.BR ps (1).
082bf5b8
MK
1794It is defined in the kernel source file
1795.IR fs/proc/array.c "."
2dad4c59 1796.IP
fea681da
MK
1797The fields, in order, with their proper
1798.BR scanf (3)
b02b4b74
MK
1799format specifiers, are listed below.
1800Whether or not certain of these fields display valid information is governed by
1801a ptrace access mode
1802.BR PTRACE_MODE_READ_FSCREDS "\ |\ " PTRACE_MODE_NOAUDIT
1803check (refer to
1804.BR ptrace (2)).
1805If the check denies access, then the field value is displayed as 0.
1806The affected fields are indicated with the marking [PT].
2dad4c59 1807.IP
fea681da 1808.RS
62e4a418
MK
1809.TP 10
1810(1) \fIpid\fP \ %d
1811.br
1812The process ID.
fea681da 1813.TP
62e4a418
MK
1814(2) \fIcomm\fP \ %s
1815The filename of the executable, in parentheses.
c13182ef 1816This is visible whether or not the executable is swapped out.
fea681da 1817.TP
62e4a418 1818(3) \fIstate\fP \ %c
31293f37
MK
1819One of the following characters, indicating process state:
1820.RS
1821.IP R 3
1822Running
1823.IP S
1824Sleeping in an interruptible wait
1825.IP D
1826Waiting in uninterruptible
1827disk sleep
1828.IP Z
1829Zombie
1830.IP T
1831Stopped (on a signal) or (before Linux 2.6.33) trace stopped
1832.IP t
1833.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29
1834Tracing stop (Linux 2.6.33 onward)
1835.IP W
1836Paging (only before Linux 2.6.0)
1837.IP X
ef4f4031 1838Dead (from Linux 2.6.0 onward)
31293f37
MK
1839.IP x
1840.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29
1841Dead (Linux 2.6.33 to
1842.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457
18433.13 only)
1844.IP K
1845.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29
1846Wakekill (Linux 2.6.33 to
1847.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457
18483.13 only)
1849.IP W
1850.\" commit 44d90df6b757c59651ddd55f1a84f28132b50d29
1851Waking (Linux 2.6.33 to
1852.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457
18533.13 only)
1854.IP P
1855.\" commit f2530dc71cf0822f90bb63ea4600caaef33a66bb
1856Parked (Linux 3.9 to
1857.\" commit 74e37200de8e9c4e09b70c21c3f13c2071e77457
18583.13 only)
1859.RE
fea681da 1860.TP
62e4a418 1861(4) \fIppid\fP \ %d
e0fdc57c 1862The PID of the parent of this process.
fea681da 1863.TP
62e4a418
MK
1864(5) \fIpgrp\fP \ %d
1865The process group ID of the process.
fea681da 1866.TP
62e4a418
MK
1867(6) \fIsession\fP \ %d
1868The session ID of the process.
fea681da 1869.TP
62e4a418
MK
1870(7) \fItty_nr\fP \ %d
1871The controlling terminal of the process.
59a40ed7
MK
1872(The minor device number is contained in the combination of bits
187331 to 20 and 7 to 0;
b97deb97 1874the major device number is in bits 15 to 8.)
fea681da 1875.TP
62e4a418 1876(8) \fItpgid\fP \ %d
fea681da 1877.\" This field and following, up to and including wchan added 0.99.1
62e4a418 1878The ID of the foreground process group of the controlling
59a40ed7 1879terminal of the process.
fea681da 1880.TP
62e4a418
MK
1881(9) \fIflags\fP \ %u
1882The kernel flags word of the process.
c13182ef 1883For bit meanings,
66a9882e 1884see the PF_* defines in the Linux kernel source file
00702acc 1885.IR include/linux/sched.h .
fea681da 1886Details depend on the kernel version.
2dad4c59 1887.IP
62e4a418 1888The format for this field was %lu before Linux 2.6.
fea681da 1889.TP
ee566744 1890(10) \fIminflt\fP \ %lu
62e4a418 1891The number of minor faults the process has made which have not
fea681da
MK
1892required loading a memory page from disk.
1893.TP
62e4a418
MK
1894(11) \fIcminflt\fP \ %lu
1895The number of minor faults that the process's
fea681da
MK
1896waited-for children have made.
1897.TP
62e4a418
MK
1898(12) \fImajflt\fP \ %lu
1899The number of major faults the process has made which have
fea681da
MK
1900required loading a memory page from disk.
1901.TP
62e4a418
MK
1902(13) \fIcmajflt\fP \ %lu
1903The number of major faults that the process's
fea681da
MK
1904waited-for children have made.
1905.TP
62e4a418
MK
1906(14) \fIutime\fP \ %lu
1907Amount of time that this process has been scheduled in user mode,
7a017e24 1908measured in clock ticks (divide by
67914165 1909.IR sysconf(_SC_CLK_TCK) ).
a1c9dc59
MK
1910This includes guest time, \fIguest_time\fP
1911(time spent running a virtual CPU, see below),
1912so that applications that are not aware of the guest time field
1913do not lose that time from their calculations.
fea681da 1914.TP
62e4a418
MK
1915(15) \fIstime\fP \ %lu
1916Amount of time that this process has been scheduled in kernel mode,
7a017e24 1917measured in clock ticks (divide by
67914165 1918.IR sysconf(_SC_CLK_TCK) ).
fea681da 1919.TP
62e4a418
MK
1920(16) \fIcutime\fP \ %ld
1921Amount of time that this process's
7a017e24
MK
1922waited-for children have been scheduled in user mode,
1923measured in clock ticks (divide by
67914165 1924.IR sysconf(_SC_CLK_TCK) ).
c13182ef 1925(See also
fea681da 1926.BR times (2).)
a1c9dc59
MK
1927This includes guest time, \fIcguest_time\fP
1928(time spent running a virtual CPU, see below).
fea681da 1929.TP
62e4a418
MK
1930(17) \fIcstime\fP \ %ld
1931Amount of time that this process's
7a017e24
MK
1932waited-for children have been scheduled in kernel mode,
1933measured in clock ticks (divide by
67914165 1934.IR sysconf(_SC_CLK_TCK) ).
fea681da 1935.TP
62e4a418
MK
1936(18) \fIpriority\fP \ %ld
1937(Explanation for Linux 2.6)
59a40ed7
MK
1938For processes running a real-time scheduling policy
1939.RI ( policy
1940below; see
1941.BR sched_setscheduler (2)),
1942this is the negated scheduling priority, minus one;
1943that is, a number in the range \-2 to \-100,
1944corresponding to real-time priorities 1 to 99.
1945For processes running under a non-real-time scheduling policy,
1946this is the raw nice value
1947.RB ( setpriority (2))
1948as represented in the kernel.
1949The kernel stores nice values as numbers
1950in the range 0 (high) to 39 (low),
1951corresponding to the user-visible nice range of \-20 to 19.
2dad4c59 1952.IP
59a40ed7
MK
1953Before Linux 2.6, this was a scaled value based on
1954the scheduler weighting given to this process.
1955.\" And back in kernel 1.2 days things were different again.
fea681da 1956.TP
62e4a418
MK
1957(19) \fInice\fP \ %ld
1958The nice value (see
59a40ed7
MK
1959.BR setpriority (2)),
1960a value in the range 19 (low priority) to \-20 (high priority).
1961.\" Back in kernel 1.2 days things were different.
fea681da
MK
1962.\" .TP
1963.\" \fIcounter\fP %ld
1964.\" The current maximum size in jiffies of the process's next timeslice,
1965.\" or what is currently left of its current timeslice, if it is the
1966.\" currently running process.
1967.\" .TP
1968.\" \fItimeout\fP %u
1969.\" The time in jiffies of the process's next timeout.
0e94f77b 1970.\" timeout was removed sometime around 2.1/2.2
aa610245 1971.TP
62e4a418
MK
1972(20) \fInum_threads\fP \ %ld
1973Number of threads in this process (since Linux 2.6).
bb83d1b9 1974Before kernel 2.6, this field was hard coded to 0 as a placeholder
0e94f77b 1975for an earlier removed field.
fea681da 1976.TP
62e4a418
MK
1977(21) \fIitrealvalue\fP \ %ld
1978The time in jiffies before the next
8bd58774
MK
1979.B SIGALRM
1980is sent to the process due to an interval timer.
0e94f77b
MK
1981Since kernel 2.6.17, this field is no longer maintained,
1982and is hard coded as 0.
fea681da 1983.TP
62e4a418
MK
1984(22) \fIstarttime\fP \ %llu
1985The time the process started after system boot.
055024ed
MK
1986In kernels before Linux 2.6, this value was expressed in jiffies.
1987Since Linux 2.6, the value is expressed in clock ticks (divide by
1988.IR sysconf(_SC_CLK_TCK) ).
2dad4c59 1989.IP
62e4a418 1990The format for this field was %lu before Linux 2.6.
fea681da 1991.TP
62e4a418
MK
1992(23) \fIvsize\fP \ %lu
1993Virtual memory size in bytes.
fea681da 1994.TP
62e4a418
MK
1995(24) \fIrss\fP \ %ld
1996Resident Set Size: number of pages the process has in real memory.
c13182ef 1997This is just the pages which
5fab2e7c 1998count toward text, data, or stack space.
c13182ef 1999This does not include pages
fea681da
MK
2000which have not been demand-loaded in, or which are swapped out.
2001.TP
62e4a418
MK
2002(25) \fIrsslim\fP \ %lu
2003Current soft limit in bytes on the rss of the process;
59a40ed7
MK
2004see the description of
2005.B RLIMIT_RSS
2006in
2b5407af 2007.BR getrlimit (2).
fea681da 2008.TP
b02b4b74 2009(26) \fIstartcode\fP \ %lu \ [PT]
62e4a418 2010The address above which program text can run.
fea681da 2011.TP
b02b4b74 2012(27) \fIendcode\fP \ %lu \ [PT]
62e4a418 2013The address below which program text can run.
fea681da 2014.TP
b02b4b74 2015(28) \fIstartstack\fP \ %lu \ [PT]
62e4a418 2016The address of the start (i.e., bottom) of the stack.
fea681da 2017.TP
b02b4b74 2018(29) \fIkstkesp\fP \ %lu \ [PT]
62e4a418 2019The current value of ESP (stack pointer), as found in the
fea681da
MK
2020kernel stack page for the process.
2021.TP
b02b4b74 2022(30) \fIkstkeip\fP \ %lu \ [PT]
62e4a418 2023The current EIP (instruction pointer).
fea681da 2024.TP
62e4a418
MK
2025(31) \fIsignal\fP \ %lu
2026The bitmap of pending signals, displayed as a decimal number.
59a40ed7 2027Obsolete, because it does not provide information on real-time signals; use
69119dc7 2028.I /proc/[pid]/status
59a40ed7 2029instead.
fea681da 2030.TP
62e4a418
MK
2031(32) \fIblocked\fP \ %lu
2032The bitmap of blocked signals, displayed as a decimal number.
59a40ed7 2033Obsolete, because it does not provide information on real-time signals; use
69119dc7 2034.I /proc/[pid]/status
59a40ed7 2035instead.
fea681da 2036.TP
62e4a418
MK
2037(33) \fIsigignore\fP \ %lu
2038The bitmap of ignored signals, displayed as a decimal number.
59a40ed7 2039Obsolete, because it does not provide information on real-time signals; use
69119dc7 2040.I /proc/[pid]/status
59a40ed7 2041instead.
fea681da 2042.TP
62e4a418
MK
2043(34) \fIsigcatch\fP \ %lu
2044The bitmap of caught signals, displayed as a decimal number.
59a40ed7 2045Obsolete, because it does not provide information on real-time signals; use
69119dc7 2046.I /proc/[pid]/status
59a40ed7 2047instead.
fea681da 2048.TP
b02b4b74 2049(35) \fIwchan\fP \ %lu \ [PT]
62e4a418 2050This is the "channel" in which the process is waiting.
2054f761
MK
2051It is the address of a location in the kernel where the process is sleeping.
2052The corresponding symbolic name can be found in
2053.IR /proc/[pid]/wchan .
fea681da 2054.TP
62e4a418 2055(36) \fInswap\fP \ %lu
0633f951 2056.\" nswap was added in 2.0
4d9b6984 2057Number of pages swapped (not maintained).
fea681da 2058.TP
62e4a418 2059(37) \fIcnswap\fP \ %lu
0633f951 2060.\" cnswap was added in 2.0
4d9b6984 2061Cumulative \fInswap\fP for child processes (not maintained).
fea681da 2062.TP
62e4a418
MK
2063(38) \fIexit_signal\fP \ %d \ (since Linux 2.1.22)
2064Signal to be sent to parent when we die.
fea681da 2065.TP
62e4a418
MK
2066(39) \fIprocessor\fP \ %d \ (since Linux 2.2.8)
2067CPU number last executed on.
568105c6 2068.TP
62e4a418
MK
2069(40) \fIrt_priority\fP \ %u \ (since Linux 2.5.19)
2070Real-time scheduling priority, a number in the range 1 to 99 for
59a40ed7
MK
2071processes scheduled under a real-time policy,
2072or 0, for non-real-time processes (see
568105c6
MK
2073.BR sched_setscheduler (2)).
2074.TP
62e4a418
MK
2075(41) \fIpolicy\fP \ %u \ (since Linux 2.5.19)
2076Scheduling policy (see
568105c6 2077.BR sched_setscheduler (2)).
cd60dedd 2078Decode using the SCHED_* constants in
59a40ed7 2079.IR linux/sched.h .
2dad4c59 2080.IP
62e4a418 2081The format for this field was %lu before Linux 2.6.22.
167450d6 2082.TP
62e4a418
MK
2083(42) \fIdelayacct_blkio_ticks\fP \ %llu \ (since Linux 2.6.18)
2084Aggregated block I/O delays, measured in clock ticks (centiseconds).
14c06953 2085.TP
62e4a418
MK
2086(43) \fIguest_time\fP \ %lu \ (since Linux 2.6.24)
2087Guest time of the process (time spent running a virtual CPU
7a017e24 2088for a guest operating system), measured in clock ticks (divide by
67914165 2089.IR sysconf(_SC_CLK_TCK) ).
14c06953 2090.TP
62e4a418
MK
2091(44) \fIcguest_time\fP \ %ld \ (since Linux 2.6.24)
2092Guest time of the process's children, measured in clock ticks (divide by
67914165 2093.IR sysconf(_SC_CLK_TCK) ).
fea681da 2094.TP
b02b4b74 2095(45) \fIstart_data\fP \ %lu \ (since Linux 3.3) \ [PT]
0be30a54 2096.\" commit b3f7f573a20081910e34e99cbc91831f4f02f1ff
62e4a418 2097Address above which program initialized and
426bc8d7 2098uninitialized (BSS) data are placed.
12449ae3 2099.TP
b02b4b74 2100(46) \fIend_data\fP \ %lu \ (since Linux 3.3) \ [PT]
0be30a54 2101.\" commit b3f7f573a20081910e34e99cbc91831f4f02f1ff
62e4a418 2102Address below which program initialized and
426bc8d7 2103uninitialized (BSS) data are placed.
12449ae3 2104.TP
b02b4b74 2105(47) \fIstart_brk\fP \ %lu \ (since Linux 3.3) \ [PT]
0be30a54 2106.\" commit b3f7f573a20081910e34e99cbc91831f4f02f1ff
62e4a418 2107Address above which program heap can be expanded with
426bc8d7 2108.BR brk (2).
12449ae3 2109.TP
b02b4b74 2110(48) \fIarg_start\fP \ %lu \ (since Linux 3.5) \ [PT]
0be30a54 2111.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
62e4a418 2112Address above which program command-line arguments
426bc8d7
MK
2113.RI ( argv )
2114are placed.
12449ae3 2115.TP
b02b4b74 2116(49) \fIarg_end\fP \ %lu \ (since Linux 3.5) \ [PT]
0be30a54 2117.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
62e4a418 2118Address below program command-line arguments
426bc8d7
MK
2119.RI ( argv )
2120are placed.
12449ae3 2121.TP
b02b4b74 2122(50) \fIenv_start\fP \ %lu \ (since Linux 3.5) \ [PT]
0be30a54 2123.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
62e4a418 2124Address above which program environment is placed.
12449ae3 2125.TP
b02b4b74 2126(51) \fIenv_end\fP \ %lu \ (since Linux 3.5) \ [PT]
0be30a54 2127.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
62e4a418 2128Address below which program environment is placed.
12449ae3 2129.TP
b02b4b74 2130(52) \fIexit_code\fP \ %d \ (since Linux 3.5) \ [PT]
0be30a54 2131.\" commit 5b172087f99189416d5f47fd7ab5e6fb762a9ba3
62e4a418 2132The thread's exit status in the form reported by
426bc8d7 2133.BR waitpid (2).
12449ae3 2134.RE
2135.TP
69119dc7 2136.I /proc/[pid]/statm
59a40ed7 2137Provides information about memory usage, measured in pages.
c13182ef 2138The columns are:
37d5e699 2139.IP
a08ea57c 2140.in +4n
37d5e699 2141.EX
cb42fb56 2142size (1) total program size
69119dc7 2143 (same as VmSize in \fI/proc/[pid]/status\fP)
cb42fb56 2144resident (2) resident set size
69119dc7 2145 (same as VmRSS in \fI/proc/[pid]/status\fP)
4e6fa352
MK
2146shared (3) number of resident shared pages (i.e., backed by a file)
2147 (same as RssFile+RssShmem in \fI/proc/[pid]/status\fP)
cb42fb56 2148text (4) text (code)
59a40ed7 2149.\" (not including libs; broken, includes data segment)
d133b9b3 2150lib (5) library (unused since Linux 2.6; always 0)
cb42fb56 2151data (6) data + stack
59a40ed7 2152.\" (including libs; broken, includes library text)
d133b9b3 2153dt (7) dirty pages (unused since Linux 2.6; always 0)
37d5e699 2154.EE
a08ea57c 2155.in
fea681da 2156.TP
69119dc7 2157.I /proc/[pid]/status
fea681da 2158Provides much of the information in
69119dc7 2159.I /proc/[pid]/stat
fea681da 2160and
69119dc7 2161.I /proc/[pid]/statm
fea681da 2162in a format that's easier for humans to parse.
16b5f7ba 2163Here's an example:
37d5e699 2164.IP
16b5f7ba 2165.in +4n
37d5e699 2166.EX
b43a3b30 2167.RB "$" " cat /proc/$$/status"
16b5f7ba 2168Name: bash
a79343e9 2169Umask: 0022
16b5f7ba 2170State: S (sleeping)
aac0b30f 2171Tgid: 17248
2d2dfb69 2172Ngid: 0
aac0b30f
MK
2173Pid: 17248
2174PPid: 17200
16b5f7ba
MK
2175TracerPid: 0
2176Uid: 1000 1000 1000 1000
2177Gid: 100 100 100 100
2178FDSize: 256
2179Groups: 16 33 100
aac0b30f
MK
2180NStgid: 17248
2181NSpid: 17248
2182NSpgid: 17248
2183NSsid: 17200
06b7cee0
MK
2184VmPeak: 131168 kB
2185VmSize: 131168 kB
2186VmLck: 0 kB
2187VmPin: 0 kB
2188VmHWM: 13484 kB
2189VmRSS: 13484 kB
e546617e
MK
2190RssAnon: 10264 kB
2191RssFile: 3220 kB
2192RssShmem: 0 kB
06b7cee0
MK
2193VmData: 10332 kB
2194VmStk: 136 kB
2195VmExe: 992 kB
2196VmLib: 2104 kB
2197VmPTE: 76 kB
2198VmPMD: 12 kB
2199VmSwap: 0 kB
4084d612 2200HugetlbPages: 0 kB # 4.4
16b5f7ba
MK
2201Threads: 1
2202SigQ: 0/3067
2203SigPnd: 0000000000000000
2204ShdPnd: 0000000000000000
2205SigBlk: 0000000000010000
2206SigIgn: 0000000000384004
2207SigCgt: 000000004b813efb
2208CapInh: 0000000000000000
2209CapPrm: 0000000000000000
2210CapEff: 0000000000000000
2211CapBnd: ffffffffffffffff
6112ea97 2212CapAmb: 0000000000000000
6c0ed873 2213NoNewPrivs: 0
039b6546 2214Seccomp: 0
16b5f7ba
MK
2215Cpus_allowed: 00000001
2216Cpus_allowed_list: 0
2217Mems_allowed: 1
2218Mems_allowed_list: 0
2219voluntary_ctxt_switches: 150
2220nonvoluntary_ctxt_switches: 545
37d5e699 2221.EE
16b5f7ba
MK
2222.in
2223.IP
2224The fields are as follows:
2225.RS
2226.IP * 2
2227.IR Name :
2228Command run by this process.
2229.IP *
a79343e9 2230.IR Umask :
53473996
MK
2231Process umask, expressed in octal with a leading zero; see
2232.BR umask (2).
a79343e9
MK
2233(Since Linux 4.7.)
2234.IP *
16b5f7ba 2235.IR State :
4175f999
MK
2236Current state of the process.
2237One of
16b5f7ba
MK
2238"R (running)",
2239"S (sleeping)",
2240"D (disk sleep)",
2241"T (stopped)",
2242"T (tracing stop)",
2243"Z (zombie)",
2244or
2245"X (dead)".
2246.IP *
2247.IR Tgid :
2248Thread group ID (i.e., Process ID).
2249.IP *
2d2dfb69
MK
2250.IR Ngid :
2251NUMA group ID (0 if none; since Linux 3.13).
2252.IP *
16b5f7ba
MK
2253.IR Pid :
2254Thread ID (see
2255.BR gettid (2)).
2256.IP *
a1bc91d5
MK
2257.IR PPid :
2258PID of parent process.
2259.IP *
16b5f7ba
MK
2260.IR TracerPid :
2261PID of process tracing this process (0 if not being traced).
2262.IP *
2263.IR Uid ", " Gid :
9ee4a2b6 2264Real, effective, saved set, and filesystem UIDs (GIDs).
16b5f7ba
MK
2265.IP *
2266.IR FDSize :
2267Number of file descriptor slots currently allocated.
2268.IP *
2269.IR Groups :
2270Supplementary group list.
2271.IP *
ecc9535d 2272.I NStgid :
aac0b30f
MK
2273Thread group ID (i.e., PID) in each of the PID namespaces of which
2274.I [pid]
2275is a member.
2276The leftmost entry shows the value with respect to the PID namespace
2277of the reading process,
2278followed by the value in successively nested inner namespaces.
2279.\" commit e4bc33245124db69b74a6d853ac76c2976f472d5
2280(Since Linux 4.1.)
2281.IP *
ecc9535d 2282.IR NSpid:
aac0b30f
MK
2283Thread ID in each of the PID namespaces of which
2284.I [pid]
2285is a member.
2286The fields are ordered as for
2287.IR NStgid .
2288(Since Linux 4.1.)
2289.IP *
ecc9535d 2290.IR NSpgid :
aac0b30f
MK
2291Process group ID in each of the PID namespaces of which
2292.I [pid]
2293is a member.
2294The fields are ordered as for
2295.IR NStgid .
2296(Since Linux 4.1.)
2297.IP *
ecc9535d 2298.IR NSsid :
aac0b30f
MK
2299descendant namespace session ID hierarchy
2300Session ID in each of the PID namespaces of which
2301.I [pid]
2302is a member.
2303The fields are ordered as for
2304.IR NStgid .
2305(Since Linux 4.1.)
2306.IP *
16b5f7ba
MK
2307.IR VmPeak :
2308Peak virtual memory size.
2309.IP *
2310.IR VmSize :
2311Virtual memory size.
2312.IP *
2313.IR VmLck :
fde39195
MK
2314Locked memory size (see
2315.BR mlock (3)).
16b5f7ba 2316.IP *
15789039
TY
2317.IR VmPin :
2318Pinned memory size
2319.\" commit bc3e53f682d93df677dbd5006a404722b3adfe18
2320(since Linux 3.2).
2321These are pages that can't be moved because something needs to
2322directly access physical memory.
2323.IP *
16b5f7ba
MK
2324.IR VmHWM :
2325Peak resident set size ("high water mark").
2326.IP *
2327.IR VmRSS :
2328Resident set size.
e546617e
MK
2329Note that the value here is the sum of
2330.IR RssAnon ,
2331.IR RssFile ,
2332and
2333.IR RssShmem .
2334.IP *
2335.IR RssAnon :
2336Size of resident anonymous memory.
2337.\" commit bf9683d6990589390b5178dafe8fd06808869293
2338(since Linux 4.5).
2339.IP *
2340.IR RssFile :
2341Size of resident file mappings.
2342.\" commit bf9683d6990589390b5178dafe8fd06808869293
2343(since Linux 4.5).
2344.IP *
2345.IR RssShmem :
78230722 2346Size of resident shared memory (includes System V shared memory,
4e07c70f
MK
2347mappings from
2348.BR tmpfs (5),
2349and shared anonymous mappings).
e546617e
MK
2350.\" commit bf9683d6990589390b5178dafe8fd06808869293
2351(since Linux 4.5).
16b5f7ba
MK
2352.IP *
2353.IR VmData ", " VmStk ", " VmExe :
2354Size of data, stack, and text segments.
2355.IP *
2356.IR VmLib :
2357Shared library code size.
2358.IP *
2359.IR VmPTE :
2360Page table entries size (since Linux 2.6.10).
2361.IP *
e28af9cd
MK
2362.IR VmPMD :
2363.\" commit dc6c9a35b66b520cf67e05d8ca60ebecad3b0479
73b9cbe1 2364Size of second-level page tables (since Linux 4.0).
e28af9cd 2365.IP *
ac4b0eb3 2366.IR VmSwap :
1ddc1665 2367.\" commit b084d4353ff99d824d3bc5a5c2c22c70b1fba722
fce21149
MK
2368Swapped-out virtual memory size by anonymous private pages;
2369shmem swap usage is not included (since Linux 2.6.34).
49f6dda7 2370.IP *
4084d612
MK
2371.IR HugetlbPages :
2372Size of hugetlb memory portions.
2373.\" commit 5d317b2b6536592a9b51fe65faed43d65ca9158e
2374(since Linux 4.4).
2375.IP *
16b5f7ba
MK
2376.IR Threads :
2377Number of threads in process containing this thread.
2378.IP *
6ee625eb
MK
2379.IR SigQ :
2380This field contains two slash-separated numbers that relate to
2381queued signals for the real user ID of this process.
2382The first of these is the number of currently queued
2383signals for this real user ID, and the second is the
2384resource limit on the number of queued signals for this process
2385(see the description of
2386.BR RLIMIT_SIGPENDING
2387in
2388.BR getrlimit (2)).
2389.IP *
16b5f7ba
MK
2390.IR SigPnd ", " ShdPnd :
2391Number of signals pending for thread and for process as a whole (see
2392.BR pthreads (7)
2393and
2394.BR signal (7)).
2395.IP *
2396.IR SigBlk ", " SigIgn ", " SigCgt :
2397Masks indicating signals being blocked, ignored, and caught (see
2398.BR signal (7)).
2399.IP *
2400.IR CapInh ", " CapPrm ", " CapEff :
2401Masks of capabilities enabled in inheritable, permitted, and effective sets
2402(see
2403.BR capabilities (7)).
2404.IP *
2405.IR CapBnd :
2406Capability Bounding set
7e07d950 2407(since Linux 2.6.26, see
16b5f7ba
MK
2408.BR capabilities (7)).
2409.IP *
6112ea97
MK
2410.IR CapAmb :
2411Ambient capability set
2412(since Linux 4.3, see
2413.BR capabilities (7)).
2414.IP *
6c0ed873
MK
2415.IR NoNewPrivs :
2416.\" commit af884cd4a5ae62fcf5e321fecf0ec1014730353d
2417Value of the
2418.I no_new_privs
2419bit
2420(since Linux 4.10, see
2421.BR prctl (2)).
2422.IP *
039b6546
MK
2423.IR Seccomp :
2424.\" commit 2f4b3bf6b2318cfaa177ec5a802f4d8d6afbd816
2425Seccomp mode of the process
2426(since Linux 3.8, see
2427.BR seccomp (2)).
24280 means
2429.BR SECCOMP_MODE_DISABLED ;
24301 means
2431.BR SECCOMP_MODE_STRICT ;
24322 means
2433.BR SECCOMP_MODE_FILTER .
2434This field is provided only if the kernel was built with the
2435.BR CONFIG_SECCOMP
2436kernel configuration option enabled.
2437.IP *
16b5f7ba
MK
2438.IR Cpus_allowed :
2439Mask of CPUs on which this process may run
2440(since Linux 2.6.24, see
2441.BR cpuset (7)).
2442.IP *
2443.IR Cpus_allowed_list :
2444Same as previous, but in "list format"
2445(since Linux 2.6.26, see
2446.BR cpuset (7)).
2447.IP *
2448.IR Mems_allowed :
2449Mask of memory nodes allowed to this process
2450(since Linux 2.6.24, see
2451.BR cpuset (7)).
2452.IP *
2453.IR Mems_allowed_list :
2454Same as previous, but in "list format"
2455(since Linux 2.6.26, see
2456.BR cpuset (7)).
2457.IP *
7c82878a 2458.IR voluntary_ctxt_switches ", " nonvoluntary_ctxt_switches :
16b5f7ba
MK
2459Number of voluntary and involuntary context switches (since Linux 2.6.23).
2460.RE
afb7b014
MK
2461.TP
2462.IR /proc/[pid]/syscall " (since Linux 2.6.27)"
2463.\" commit ebcb67341fee34061430f3367f2e507e52ee051b
2464This file exposes the system call number and argument registers for the
2465system call currently being executed by the process,
2466followed by the values of the stack pointer and program counter registers.
2467The values of all six argument registers are exposed,
2468although most system calls use fewer registers.
2dad4c59 2469.IP
afb7b014 2470If the process is blocked, but not in a system call,
1fb61947 2471then the file displays \-1 in place of the system call number,
afb7b014 2472followed by just the values of the stack pointer and program counter.
64fcb6e1 2473If process is not blocked, then the file contains just the string "running".
2dad4c59 2474.IP
afb7b014
MK
2475This file is present only if the kernel was configured with
2476.BR CONFIG_HAVE_ARCH_TRACEHOOK .
2dad4c59 2477.IP
4834ae91
MK
2478Permission to access this file is governed by a ptrace access mode
2479.B PTRACE_MODE_ATTACH_FSCREDS
2480check; see
2481.BR ptrace (2).
fea681da 2482.TP
69119dc7 2483.IR /proc/[pid]/task " (since Linux 2.6.0-test6)"
afcaf646
MK
2484This is a directory that contains one subdirectory
2485for each thread in the process.
69119dc7
MK
2486The name of each subdirectory is the numerical thread ID
2487.RI ( [tid] )
2488of the thread (see
afcaf646
MK
2489.BR gettid (2)).
2490Within each of these subdirectories, there is a set of
2491files with the same names and contents as under the
69119dc7 2492.I /proc/[pid]
afcaf646
MK
2493directories.
2494For attributes that are shared by all threads, the contents for
2495each of the files under the
69119dc7 2496.I task/[tid]
afcaf646 2497subdirectories will be the same as in the corresponding
c13182ef 2498file in the parent
69119dc7 2499.I /proc/[pid]
afcaf646 2500directory
c13182ef 2501(e.g., in a multithreaded process, all of the
69119dc7 2502.I task/[tid]/cwd
c13182ef 2503files will have the same value as the
69119dc7 2504.I /proc/[pid]/cwd
c13182ef 2505file in the parent directory, since all of the threads in a process
afcaf646
MK
2506share a working directory).
2507For attributes that are distinct for each thread,
c13182ef 2508the corresponding files under
69119dc7 2509.I task/[tid]
afcaf646 2510may have different values (e.g., various fields in each of the
69119dc7 2511.I task/[tid]/status
4a40c703
JH
2512files may be different for each thread),
2513.\" in particular: "children" :/
2514or they might not exist in
2515.I /proc/[pid]
2516at all.
afcaf646
MK
2517.\" The following was still true as at kernel 2.6.13
2518In a multithreaded process, the contents of the
69119dc7 2519.I /proc/[pid]/task
c13182ef 2520directory are not available if the main thread has already terminated
afcaf646
MK
2521(typically by calling
2522.BR pthread_exit (3)).
2dad4c59 2523.IP
4a40c703
JH
2524.TP
2525.IR /proc/[pid]/task/[tid]/children " (since Linux 3.5)"
2526.\" commit 818411616baf46ceba0cff6f05af3a9b294734f7
2527A space-separated list of child tasks of this task.
2528Each child task is represented by its TID.
2dad4c59 2529.IP
4a40c703 2530.\" see comments in get_children_pid() in fs/proc/array.c
45dd5092
MK
2531This option is intended for use by the checkpoint-restore (CRIU) system,
2532and reliably provides a list of children only if all of the child processes
2533are stopped or frozen.
2534It does not work properly if children of the target task exit while
4a40c703 2535the file is being read!
45dd5092 2536Exiting children may cause non-exiting children to be omitted from the list.
4a40c703 2537This makes this interface even more unreliable than classic PID-based
45dd5092
MK
2538approaches if the inspected task and its children aren't frozen,
2539and most code should probably not use this interface.
2dad4c59 2540.IP
7ded2db4
MK
2541Until Linux 4.2, the presence of this file was governed by the
2542.B CONFIG_CHECKPOINT_RESTORE
2543kernel configuration option.
2544Since Linux 4.2,
2545.\" commit 2e13ba54a2682eea24918b87ad3edf70c2cf085b
ae34c521 2546it is governed by the
7ded2db4
MK
2547.B CONFIG_PROC_CHILDREN
2548option.
afcaf646 2549.TP
1509ca0e
MK
2550.IR /proc/[pid]/timers " (since Linux 3.10)"
2551.\" commit 5ed67f05f66c41e39880a6d61358438a25f9fee5
2552.\" commit 48f6a7a511ef8823fdff39afee0320092d43a8a0
2553A list of the POSIX timers for this process.
93691c1e 2554Each timer is listed with a line that starts with the string "ID:".
1509ca0e 2555For example:
2dad4c59 2556.IP
1509ca0e 2557.in +4n
37d5e699 2558.EX
1509ca0e
MK
2559ID: 1
2560signal: 60/00007fff86e452a8
2561notify: signal/pid.2634
2562ClockID: 0
2563ID: 0
2564signal: 60/00007fff86e452a8
2565notify: signal/pid.2634
2566ClockID: 1
37d5e699 2567.EE
1509ca0e 2568.in
2dad4c59 2569.IP
1509ca0e
MK
2570The lines shown for each timer have the following meanings:
2571.RS
2572.TP
2573.I ID
2574The ID for this timer.
2575This is not the same as the timer ID returned by
2576.BR timer_create (2);
2577rather, it is the same kernel-internal ID that is available via the
2578.I si_timerid
2579field of the
2580.IR siginfo_t
2581structure (see
2582.BR sigaction (2)).
2583.TP
2584.I signal
2585This is the signal number that this timer uses to deliver notifications
2586followed by a slash, and then the
7f1ea8fb 2587.I sigev_value
1509ca0e
MK
2588value supplied to the signal handler.
2589Valid only for timers that notify via a signal.
2590.TP
2591.I notify
2592The part before the slash specifies the mechanism
2593that this timer uses to deliver notifications,
2594and is one of "thread", "signal", or "none".
2595Immediately following the slash is either the string "tid" for timers
2596with
2597.B SIGEV_THREAD_ID
2598notification, or "pid" for timers that notify by other mechanisms.
dbe6f88b
MK
2599Following the "." is the PID of the process
2600(or the kernel thread ID of the thread) that will be delivered
1509ca0e
MK
2601a signal if the timer delivers notifications via a signal.
2602.TP
2603.I ClockID
2604This field identifies the clock that the timer uses for measuring time.
2605For most clocks, this is a number that matches one of the user-space
2606.BR CLOCK_*
9d54c087 2607constants exposed via
1509ca0e
MK
2608.IR <time.h> .
2609.B CLOCK_PROCESS_CPUTIME_ID
9bc87ed0 2610timers display with a value of \-6
1509ca0e
MK
2611in this field.
2612.B CLOCK_THREAD_CPUTIME_ID
9bc87ed0 2613timers display with a value of \-2
1509ca0e
MK
2614in this field.
2615.RE
5734da6d
MK
2616.IP
2617This file is available only when the kernel was configured with
2618.BR CONFIG_CHECKPOINT_RESTORE .
1509ca0e 2619.TP
11f60142
MK
2620.IR /proc/[pid]/timerslack_ns " (since Linux 4.6)"
2621.\" commit da8b44d5a9f8bf26da637b7336508ca534d6b319
2622.\" commit 5de23d435e88996b1efe0e2cebe242074ce67c9e
2623This file exposes the process's "current" timer slack value,
2624expressed in nanoseconds.
2625The file is writable,
2626allowing the process's timer slack value to be changed.
2627Writing 0 to this file resets the "current" timer slack to the
2628"default" timer slack value.
2629For further details, see the discussion of
2630.BR PR_SET_TIMERSLACK
2631in
2632.BR prctl (2).
2dad4c59 2633.IP
5daae264
MK
2634Initially,
2635permission to access this file was governed by a ptrace access mode
a62e0e01 2636.B PTRACE_MODE_ATTACH_FSCREDS
5daae264
MK
2637check (see
2638.BR ptrace (2)).
2639However, this was subsequently deemed too strict a requirement
2640(and had the side effect that requiring a process to have the
2641.B CAP_SYS_PTRACE
2642capability would also allow it to view and change any process's memory).
2643Therefore, since Linux 4.9,
2644.\" commit 7abbaf94049914f074306d960b0f968ffe52e59f
2645only the (weaker)
2646.B CAP_SYS_NICE
2647capability is required to access this file.
11f60142 2648.TP
b1aad373
MK
2649.IR /proc/[pid]/uid_map ", " /proc/[pid]/gid_map " (since Linux 3.5)"
2650See
2651.BR user_namespaces (7).
2652.TP
2653.IR /proc/[pid]/wchan " (since Linux 2.6.0)"
2654The symbolic name corresponding to the location
2655in the kernel where the process is sleeping.
2dad4c59 2656.IP
82664739
MK
2657Permission to access this file is governed by a ptrace access mode
2658.B PTRACE_MODE_READ_FSCREDS
2659check; see
2660.BR ptrace (2).
b1aad373
MK
2661.TP
2662.I /proc/apm
2663Advanced power management version and battery information when
2664.B CONFIG_APM
2665is defined at kernel compilation time.
2666.TP
2667.I /proc/buddyinfo
2668This file contains information which is used for diagnosing memory
2669fragmentation issues.
2670Each line starts with the identification of the node and the name
2671of the zone which together identify a memory region
2672This is then
2673followed by the count of available chunks of a certain order in
2674which these zones are split.
2675The size in bytes of a certain order is given by the formula:
2dad4c59 2676.IP
b1aad373 2677 (2^order)\ *\ PAGE_SIZE
2dad4c59 2678.IP
b1aad373
MK
2679The binary buddy allocator algorithm inside the kernel will split
2680one chunk into two chunks of a smaller order (thus with half the
2681size) or combine two contiguous chunks into one larger chunk of
2682a higher order (thus with double the size) to satisfy allocation
2683requests and to counter memory fragmentation.
2684The order matches the column number, when starting to count at zero.
2dad4c59 2685.IP
b5b0d21e 2686For example on an x86-64 system:
2dad4c59 2687.IP
b1aad373 2688.in -12n
37d5e699 2689.EX
b1aad373
MK
2690Node 0, zone DMA 1 1 1 0 2 1 1 0 1 1 3
2691Node 0, zone DMA32 65 47 4 81 52 28 13 10 5 1 404
2692Node 0, zone Normal 216 55 189 101 84 38 37 27 5 3 587
37d5e699 2693.EE
b1aad373 2694.in
2dad4c59 2695.IP
b1aad373
MK
2696In this example, there is one node containing three zones and there
2697are 11 different chunk sizes.
2698If the page size is 4 kilobytes, then the first zone called
2699.I DMA
2700(on x86 the first 16 megabyte of memory) has 1 chunk of 4 kilobytes
2701(order 0) available and has 3 chunks of 4 megabytes (order 10) available.
2dad4c59 2702.IP
b1aad373
MK
2703If the memory is heavily fragmented, the counters for higher
2704order chunks will be zero and allocation of large contiguous areas
2705will fail.
2dad4c59 2706.IP
b1aad373
MK
2707Further information about the zones can be found in
2708.IR /proc/zoneinfo .
2709.TP
2710.I /proc/bus
2711Contains subdirectories for installed busses.
2712.TP
2713.I /proc/bus/pccard
2714Subdirectory for PCMCIA devices when
2715.B CONFIG_PCMCIA
2716is set at kernel compilation time.
2717.TP
fea681da
MK
2718.I /proc/bus/pccard/drivers
2719.TP
2720.I /proc/bus/pci
c13182ef 2721Contains various bus subdirectories and pseudo-files containing
59a40ed7 2722information about PCI busses, installed devices, and device
c13182ef
MK
2723drivers.
2724Some of these files are not ASCII.
fea681da
MK
2725.TP
2726.I /proc/bus/pci/devices
59a40ed7 2727Information about PCI devices.
c13182ef 2728They may be accessed through
fea681da
MK
2729.BR lspci (8)
2730and
2731.BR setpci (8).
2732.TP
12b23dfe
MK
2733.IR /proc/cgroups " (since Linux 2.6.24)"
2734See
2735.BR cgroups (7).
2736.TP
fea681da 2737.I /proc/cmdline
c13182ef
MK
2738Arguments passed to the Linux kernel at boot time.
2739Often done via a boot manager such as
59a40ed7
MK
2740.BR lilo (8)
2741or
2742.BR grub (8).
f6e524c4
MK
2743.TP
2744.IR /proc/config.gz " (since Linux 2.6)"
2745This file exposes the configuration options that were used
c3d9780d 2746to build the currently running kernel,
f6e524c4
MK
2747in the same format as they would be shown in the
2748.I .config
2749file that resulted when configuring the kernel (using
2750.IR "make xconfig" ,
2751.IR "make config" ,
2752or similar).
2753The file contents are compressed; view or search them using
f78ed33a
MK
2754.BR zcat (1)
2755and
2756.BR zgrep (1).
f6e524c4 2757As long as no changes have been made to the following file,
250e01ec
MK
2758the contents of
2759.I /proc/config.gz
37d5e699
MK
2760are the same as those provided by:
2761.IP
f6e524c4 2762.in +4n
37d5e699 2763.EX
c3074d70 2764cat /lib/modules/$(uname \-r)/build/.config
37d5e699 2765.EE
f6e524c4 2766.in
250e01ec
MK
2767.IP
2768.I /proc/config.gz
90878f7c 2769is provided only if the kernel is configured with
250e01ec 2770.BR CONFIG_IKCONFIG_PROC .
fea681da 2771.TP
577c0e20
MK
2772.I /proc/crypto
2773A list of the ciphers provided by the kernel crypto API.
2774For details, see the kernel
2775.I "Linux Kernel Crypto API"
2776documentation available under the kernel source directory
e94de168
ES
2777.I Documentation/crypto/
2778.\" commit 3b72c814a8e8cd638e1ba0da4dfce501e9dff5af
2779(or
2780.I Documentation/DocBook
2781before 4.10;
2782the documentation can be built using a command such as
577c0e20 2783.IR "make htmldocs"
e94de168 2784in the root directory of the kernel source tree).
577c0e20 2785.TP
fea681da
MK
2786.I /proc/cpuinfo
2787This is a collection of CPU and system architecture dependent items,
2788for each supported architecture a different list.
2789Two common entries are \fIprocessor\fP which gives CPU number and
c13182ef
MK
2790\fIbogomips\fP; a system constant that is calculated
2791during kernel initialization.
2792SMP machines have information for
fea681da 2793each CPU.
a091f002
MK
2794The
2795.BR lscpu (1)
2796command gathers its information from this file.
fea681da
MK
2797.TP
2798.I /proc/devices
c13182ef
MK
2799Text listing of major numbers and device groups.
2800This can be used by MAKEDEV scripts for consistency with the kernel.
fea681da
MK
2801.TP
2802.IR /proc/diskstats " (since Linux 2.5.69)"
2803This file contains disk I/O statistics for each disk device.
66a9882e 2804See the Linux kernel source file
fea681da
MK
2805.I Documentation/iostats.txt
2806for further information.
2807.TP
2808.I /proc/dma
c13182ef 2809This is a list of the registered \fIISA\fP DMA (direct memory access)
fea681da
MK
2810channels in use.
2811.TP
2812.I /proc/driver
2813Empty subdirectory.
2814.TP
2815.I /proc/execdomains
2816List of the execution domains (ABI personalities).
2817.TP
2818.I /proc/fb
097585ed
MK
2819Frame buffer information when
2820.B CONFIG_FB
2821is defined during kernel compilation.
fea681da
MK
2822.TP
2823.I /proc/filesystems
9ee4a2b6
MK
2824A text listing of the filesystems which are supported by the kernel,
2825namely filesystems which were compiled into the kernel or whose kernel
6387216b
MK
2826modules are currently loaded.
2827(See also
fb477da2 2828.BR filesystems (5).)
9ee4a2b6 2829If a filesystem is marked with "nodev",
809d0164 2830this means that it does not require a block device to be mounted
9ee4a2b6 2831(e.g., virtual filesystem, network filesystem).
2dad4c59 2832.IP
809d0164
MK
2833Incidentally, this file may be used by
2834.BR mount (8)
9ee4a2b6
MK
2835when no filesystem is specified and it didn't manage to determine the
2836filesystem type.
2837Then filesystems contained in this file are tried
809d0164 2838(excepted those that are marked with "nodev").
fea681da
MK
2839.TP
2840.I /proc/fs
df352acc 2841.\" FIXME Much more needs to be said about /proc/fs
91085d85 2842.\"
df352acc
MK
2843Contains subdirectories that in turn contain files
2844with information about (certain) mounted filesystems.
fea681da
MK
2845.TP
2846.I /proc/ide
2847This directory
59a40ed7
MK
2848exists on systems with the IDE bus.
2849There are directories for each IDE channel and attached device.
c13182ef 2850Files include:
2dad4c59 2851.IP
a08ea57c 2852.in +4n
37d5e699 2853.EX
fea681da
MK
2854cache buffer size in KB
2855capacity number of sectors
2856driver driver version
2857geometry physical and logical geometry
9fdfa163 2858identify in hexadecimal
fea681da
MK
2859media media type
2860model manufacturer's model number
2861settings drive settings
9fdfa163
MK
2862smart_thresholds in hexadecimal
2863smart_values in hexadecimal
37d5e699 2864.EE
a08ea57c 2865.in
2dad4c59 2866.IP
c13182ef 2867The
fea681da
MK
2868.BR hdparm (8)
2869utility provides access to this information in a friendly format.
2870.TP
2871.I /proc/interrupts
23ec6ff0
MK
2872This is used to record the number of interrupts per CPU per IO device.
2873Since Linux 2.6.24,
9ea5bc66 2874for the i386 and x86-64 architectures, at least, this also includes
23ec6ff0
MK
2875interrupts internal to the system (that is, not associated with a device
2876as such), such as NMI (nonmaskable interrupt), LOC (local timer interrupt),
2877and for SMP systems, TLB (TLB flush interrupt), RES (rescheduling
2878interrupt), CAL (remote function call interrupt), and possibly others.
2879Very easy to read formatting, done in ASCII.
fea681da
MK
2880.TP
2881.I /proc/iomem
2882I/O memory map in Linux 2.4.
2883.TP
2884.I /proc/ioports
c13182ef 2885This is a list of currently registered Input-Output port regions that
fea681da
MK
2886are in use.
2887.TP
2888.IR /proc/kallsyms " (since Linux 2.5.71)"
2889This holds the kernel exported symbol definitions used by the
2890.BR modules (X)
2891tools to dynamically link and bind loadable modules.
2892In Linux 2.5.47 and earlier, a similar file with slightly different syntax
2893was named
2894.IR ksyms .
2895.TP
2896.I /proc/kcore
2897This file represents the physical memory of the system and is stored
c13182ef
MK
2898in the ELF core file format.
2899With this pseudo-file, and an unstripped
9a67332e
MK
2900kernel
2901.RI ( /usr/src/linux/vmlinux )
2902binary, GDB can be used to
fea681da 2903examine the current state of any kernel data structures.
2dad4c59 2904.IP
fea681da 2905The total length of the file is the size of physical memory (RAM) plus
ee8655b5 29064\ KiB.
fea681da 2907.TP
653836fb
MK
2908.IR /proc/keys " (since Linux 2.6.10)"
2909See
2910.BR keyrings (7).
2911.TP
2912.IR /proc/key-users " (since Linux 2.6.10)"
2913See
2914.BR keyrings (7).
2915.TP
fea681da
MK
2916.I /proc/kmsg
2917This file can be used instead of the
2918.BR syslog (2)
c13182ef
MK
2919system call to read kernel messages.
2920A process must have superuser
fea681da 2921privileges to read this file, and only one process should read this
c13182ef
MK
2922file.
2923This file should not be read if a syslog process is running
fea681da
MK
2924which uses the
2925.BR syslog (2)
2926system call facility to log kernel messages.
2dad4c59 2927.IP
fea681da 2928Information in this file is retrieved with the
c4517613 2929.BR dmesg (1)
fea681da
MK
2930program.
2931.TP
55d68a94 2932.IR /proc/kpagecgroup " (since Linux 4.3)"
0e462d71 2933.\" commit 80ae2fdceba8313b0433f899bdd9c6c463291a17
55d68a94
OE
2934This file contains a 64-bit inode number of
2935the memory cgroup each page is charged to,
2936indexed by page frame number (see the discussion of
2937.IR /proc/[pid]/pagemap ).
2938.IP
2939The
2940.IR /proc/kpagecgroup
2941file is present only if the
2942.B CONFIG_MEMCG
2943kernel configuration option is enabled.
2944.TP
ff56ac8b
MK
2945.IR /proc/kpagecount " (since Linux 2.6.25)"
2946This file contains a 64-bit count of the number of
2947times each physical page frame is mapped,
2948indexed by page frame number (see the discussion of
2949.IR /proc/[pid]/pagemap ).
2950.IP
2951The
2952.IR /proc/kpagecount
2953file is present only if the
2954.B CONFIG_PROC_PAGE_MONITOR
59d566a9
MK
2955kernel configuration option is enabled.
2956.TP
2957.IR /proc/kpageflags " (since Linux 2.6.25)"
ef4f4031 2958This file contains 64-bit masks corresponding to each physical page frame;
59d566a9
MK
2959it is indexed by page frame number (see the discussion of
2960.IR /proc/[pid]/pagemap ).
2961The bits are as follows:
2dad4c59 2962.IP
59d566a9
MK
2963 0 - KPF_LOCKED
2964 1 - KPF_ERROR
2965 2 - KPF_REFERENCED
2966 3 - KPF_UPTODATE
2967 4 - KPF_DIRTY
2968 5 - KPF_LRU
2969 6 - KPF_ACTIVE
2970 7 - KPF_SLAB
2971 8 - KPF_WRITEBACK
2972 9 - KPF_RECLAIM
2973 10 - KPF_BUDDY
2974 11 - KPF_MMAP (since Linux 2.6.31)
2975 12 - KPF_ANON (since Linux 2.6.31)
2976 13 - KPF_SWAPCACHE (since Linux 2.6.31)
2977 14 - KPF_SWAPBACKED (since Linux 2.6.31)
2978 15 - KPF_COMPOUND_HEAD (since Linux 2.6.31)
2979 16 - KPF_COMPOUND_TAIL (since Linux 2.6.31)
d0ffc687 2980 17 - KPF_HUGE (since Linux 2.6.31)
59d566a9
MK
2981 18 - KPF_UNEVICTABLE (since Linux 2.6.31)
2982 19 - KPF_HWPOISON (since Linux 2.6.31)
2983 20 - KPF_NOPAGE (since Linux 2.6.31)
2984 21 - KPF_KSM (since Linux 2.6.32)
2985 22 - KPF_THP (since Linux 3.4)
5487da4c
MK
2986 23 - KPF_BALLOON (since Linux 3.18)
2987.\" KPF_BALLOON: commit 09316c09dde33aae14f34489d9e3d243ec0d5938
f38dfdf1 2988 24 - KPF_ZERO_PAGE (since Linux 4.0)
c6f182bc 2989.\" KPF_ZERO_PAGE: commit 56873f43abdcd574b25105867a990f067747b2f4
f38dfdf1 2990 25 - KPF_IDLE (since Linux 4.3)
c6f182bc 2991.\" KPF_IDLE: commit f074a8f49eb87cde95ac9d040ad5e7ea4f029738
2dad4c59 2992.IP
59d566a9
MK
2993For further details on the meanings of these bits,
2994see the kernel source file
2995.IR Documentation/vm/pagemap.txt .
2996Before kernel 2.6.29,
2997.\" commit ad3bdefe877afb47480418fdb05ecd42842de65e
2998.\" commit e07a4b9217d1e97d2f3a62b6b070efdc61212110
2999.BR KPF_WRITEBACK ,
3000.BR KPF_RECLAIM ,
3001.BR KPF_BUDDY ,
3002and
3003.BR KPF_LOCKED
3004did not report correctly.
3005.IP
3006The
3007.IR /proc/kpageflags
3008file is present only if the
3009.B CONFIG_PROC_PAGE_MONITOR
ff56ac8b
MK
3010kernel configuration option is enabled.
3011.TP
93f18cbb 3012.IR /proc/ksyms " (Linux 1.1.23\(en2.5.47)"
fea681da
MK
3013See
3014.IR /proc/kallsyms .
3015.TP
3016.I /proc/loadavg
6b05dc38
MK
3017The first three fields in this file are load average figures
3018giving the number of jobs in the run queue (state R)
fea681da
MK
3019or waiting for disk I/O (state D) averaged over 1, 5, and 15 minutes.
3020They are the same as the load average numbers given by
3021.BR uptime (1)
3022and other programs.
6b05dc38 3023The fourth field consists of two numbers separated by a slash (/).
78fc91ec
EDB
3024The first of these is the number of currently runnable kernel
3025scheduling entities (processes, threads).
6b05dc38
MK
3026The value after the slash is the number of kernel scheduling entities
3027that currently exist on the system.
3028The fifth field is the PID of the process that was most
3029recently created on the system.
fea681da
MK
3030.TP
3031.I /proc/locks
3032This file shows current file locks
3033.RB ( flock "(2) and " fcntl (2))
3034and leases
3035.RB ( fcntl (2)).
9f1002a1
MK
3036The
3037.BR lslocks (8)
3038command provides a bit more information about each lock.
fea681da 3039.TP
89dd5f8a 3040.IR /proc/malloc " (only up to and including Linux 2.2)"
59a40ed7 3041.\" It looks like this only ever did something back in 1.0 days
90878f7c 3042This file is present only if
89dd5f8a 3043.B CONFIG_DEBUG_MALLOC
097585ed 3044was defined during compilation.
fea681da
MK
3045.TP
3046.I /proc/meminfo
77b802ec
MK
3047This file reports statistics about memory usage on the system.
3048It is used by
fea681da
MK
3049.BR free (1)
3050to report the amount of free and used memory (both physical and swap)
3051on the system as well as the shared memory and buffers used by the
3052kernel.
3ba3d5b1
MK
3053Each line of the file consists of a parameter name, followed by a colon,
3054the value of the parameter, and an option unit of measurement (e.g., "kB").
3055The list below describes the parameter names and
3056the format specifier required to read the field value.
3057Except as noted below,
3058all of the fields have been present since at least Linux 2.6.0.
86cf87d7 3059Some fields are displayed only if the kernel was configured
3ba3d5b1
MK
3060with various options; those dependencies are noted in the list.
3061.RS
3062.TP
3063.IR MemTotal " %lu"
449dd4e2 3064Total usable RAM (i.e., physical RAM minus a few reserved
99e91586 3065bits and the kernel binary code).
3ba3d5b1
MK
3066.TP
3067.IR MemFree " %lu"
7bccb7d4
DP
3068The sum of
3069.IR LowFree + HighFree .
3ba3d5b1 3070.TP
8b4b1f68
MK
3071.IR MemAvailable " %lu (since Linux 3.14)"
3072An estimate of how much memory is available for starting new
3073applications, without swapping.
3074.TP
3ba3d5b1 3075.IR Buffers " %lu"
99e91586 3076Relatively temporary storage for raw disk blocks that
3ba3d5b1
MK
3077shouldn't get tremendously large (20MB or so).
3078.TP
3079.IR Cached " %lu"
3080In-memory cache for files read from the disk (the page cache).
3081Doesn't include
3082.IR SwapCached .
3083.TP
3084.IR SwapCached " %lu"
3085Memory that once was swapped out, is swapped back in but
3086still also is in the swap file.
fa1d2749 3087(If memory pressure is high, these pages
3ba3d5b1 3088don't need to be swapped out again because they are already
99e91586 3089in the swap file.
3ba3d5b1
MK
3090This saves I/O.)
3091.TP
3092.IR Active " %lu"
3093Memory that has been used more recently and usually not
3094reclaimed unless absolutely necessary.
3095.TP
3096.IR Inactive " %lu"
3097Memory which has been less recently used.
3098It is more eligible to be reclaimed for other purposes.
3099.TP
3100.IR Active(anon) " %lu (since Linux 2.6.28)"
3101[To be documented.]
3102.TP
3103.IR Inactive(anon) " %lu (since Linux 2.6.28)"
3104[To be documented.]
3105.TP
3106.IR Active(file) " %lu (since Linux 2.6.28)"
3107[To be documented.]
3108.TP
3109.IR Inactive(file) " %lu (since Linux 2.6.28)"
3110[To be documented.]
3111.TP
3112.IR Unevictable " %lu (since Linux 2.6.28)"
3113(From Linux 2.6.28 to 2.6.30,
3114\fBCONFIG_UNEVICTABLE_LRU\fP was required.)
3115[To be documented.]
3116.TP
46fbfc07 3117.IR Mlocked " %lu (since Linux 2.6.28)"
3ba3d5b1
MK
3118(From Linux 2.6.28 to 2.6.30,
3119\fBCONFIG_UNEVICTABLE_LRU\fP was required.)
3120[To be documented.]
3121.TP
3122.IR HighTotal " %lu"
3123(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
3124Total amount of highmem.
99e91586 3125Highmem is all memory above ~860MB of physical memory.
3ba3d5b1
MK
3126Highmem areas are for use by user-space programs,
3127or for the page cache.
3128The kernel must use tricks to access
3129this memory, making it slower to access than lowmem.
3130.TP
3131.IR HighFree " %lu
3132(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
3133Amount of free highmem.
3134.TP
3135.IR LowTotal " %lu
3136(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
3137Total amount of lowmem.
3138Lowmem is memory which can be used for everything that
3139highmem can be used for, but it is also available for the
3140kernel's use for its own data structures.
3141Among many other things,
99e91586 3142it is where everything from
7bccb7d4
DP
3143.I Slab
3144is allocated.
3ba3d5b1
MK
3145Bad things happen when you're out of lowmem.
3146.TP
3147.IR LowFree " %lu
3148(Starting with Linux 2.6.19, \fBCONFIG_HIGHMEM\fP is required.)
3149Amount of free lowmem.
3150.TP
3151.IR MmapCopy " %lu (since Linux 2.6.29)"
99e91586
DP
3152.RB ( CONFIG_MMU
3153is required.)
3ba3d5b1
MK
3154[To be documented.]
3155.TP
3156.IR SwapTotal " %lu"
3157Total amount of swap space available.
3158.TP
3159.IR SwapFree " %lu"
c16d4f25 3160Amount of swap space that is currently unused.
3ba3d5b1
MK
3161.TP
3162.IR Dirty " %lu"
3163Memory which is waiting to get written back to the disk.
3164.TP
3165.IR Writeback " %lu"
3166Memory which is actively being written back to the disk.
3167.TP
3168.IR AnonPages " %lu (since Linux 2.6.18)"
3169Non-file backed pages mapped into user-space page tables.
3170.TP
3171.IR Mapped " %lu"
fda70f5b
MK
3172Files which have been mapped into memory (with
3173.BR mmap (2)),
3174such as libraries.
3ba3d5b1
MK
3175.TP
3176.IR Shmem " %lu (since Linux 2.6.32)"
eb775c04
MK
3177Amount of memory consumed in
3178.BR tmpfs (5)
3179filesystems.
3ba3d5b1
MK
3180.TP
3181.IR Slab " %lu"
3182In-kernel data structures cache.
5a5bde70
MK
3183(See
3184.BR slabinfo (5).)
3ba3d5b1
MK
3185.TP
3186.IR SReclaimable " %lu (since Linux 2.6.19)"
7bccb7d4
DP
3187Part of
3188.IR Slab ,
3189that might be reclaimed, such as caches.
3ba3d5b1
MK
3190.TP
3191.IR SUnreclaim " %lu (since Linux 2.6.19)"
7bccb7d4
DP
3192Part of
3193.IR Slab ,
3194that cannot be reclaimed on memory pressure.
3ba3d5b1
MK
3195.TP
3196.IR KernelStack " %lu (since Linux 2.6.32)"
3197Amount of memory allocated to kernel stacks.
3198.TP
3199.IR PageTables " %lu (since Linux 2.6.18)"
3200Amount of memory dedicated to the lowest level of page tables.
3201.TP
3202.IR Quicklists " %lu (since Linux 2.6.27)"
3203(\fBCONFIG_QUICKLIST\fP is required.)
3204[To be documented.]
3205.TP
3206.IR NFS_Unstable " %lu (since Linux 2.6.18)"
3207NFS pages sent to the server, but not yet committed to stable storage.
3208.TP
3209.IR Bounce " %lu (since Linux 2.6.18)"
3210Memory used for block device "bounce buffers".
3211.TP
3212.IR WritebackTmp " %lu (since Linux 2.6.26)"
3213Memory used by FUSE for temporary writeback buffers.
3214.TP
3215.IR CommitLimit " %lu (since Linux 2.6.10)"
cd7b6c40
MK
3216This is the total amount of memory currently available to
3217be allocated on the system, expressed in kilobytes.
90878f7c
MK
3218This limit is adhered to
3219only if strict overcommit accounting is enabled (mode 2 in
cd7b6c40
MK
3220.IR /proc/sys/vm/overcommit_memory ).
3221The limit is calculated according to the formula described under
3222.IR /proc/sys/vm/overcommit_memory .
3223For further details, see the kernel source file
3ba3d5b1
MK
3224.IR Documentation/vm/overcommit-accounting .
3225.TP
3226.IR Committed_AS " %lu"
3227The amount of memory presently allocated on the system.
3228The committed memory is a sum of all of the memory which
3229has been allocated by processes, even if it has not been
3230"used" by them as of yet.
3231A process which allocates 1GB of memory (using
3232.BR malloc (3)
33a0ccb2 3233or similar), but touches only 300MB of that memory will show up
90878f7c 3234as using only 300MB of memory even if it has the address space
3ba3d5b1 3235allocated for the entire 1GB.
2dad4c59 3236.IP
3ba3d5b1
MK
3237This 1GB is memory which has been "committed" to by the VM
3238and can be used at any time by the allocating application.
cd7b6c40 3239With strict overcommit enabled on the system (mode 2 in
d9e0f03d 3240.IR /proc/sys/vm/overcommit_memory ),
3ba3d5b1
MK
3241allocations which would exceed the
3242.I CommitLimit
cd7b6c40 3243will not be permitted.
3ba3d5b1
MK
3244This is useful if one needs to guarantee that processes will not
3245fail due to lack of memory once that memory has been successfully allocated.
3246.TP
3247.IR VmallocTotal " %lu"
3248Total size of vmalloc memory area.
3249.TP
3250.IR VmallocUsed " %lu"
3251Amount of vmalloc area which is used.
3252.TP
3253.IR VmallocChunk " %lu"
3254Largest contiguous block of vmalloc area which is free.
3255.TP
3256.IR HardwareCorrupted " %lu (since Linux 2.6.32)"
3257(\fBCONFIG_MEMORY_FAILURE\fP is required.)
3258[To be documented.]
3259.TP
3260.IR AnonHugePages " %lu (since Linux 2.6.38)"
3261(\fBCONFIG_TRANSPARENT_HUGEPAGE\fP is required.)
7fac88a9 3262Non-file backed huge pages mapped into user-space page tables.
3ba3d5b1 3263.TP
4ad958e1
MK
3264.IR ShmemHugePages " %lu (since Linux 4.8)"
3265(\fBCONFIG_TRANSPARENT_HUGEPAGE\fP is required.)
4e07c70f
MK
3266Memory used by shared memory (shmem) and
3267.BR tmpfs (5)
3268allocated with huge pages
4ad958e1
MK
3269.TP
3270.IR ShmemPmdMapped " %lu (since Linux 4.8)"
3271(\fBCONFIG_TRANSPARENT_HUGEPAGE\fP is required.)
956e74b4 3272Shared memory mapped into user space with huge pages.
4ad958e1 3273.TP
43179f55
MK
3274.IR CmaTotal " %lu (since Linux 3.1)"
3275Total CMA (Contiguous Memory Allocator) pages.
3276(\fBCONFIG_CMA\fP is required.)
3277.TP
3278.IR CmaFree " %lu (since Linux 3.1)"
3279Free CMA (Contiguous Memory Allocator) pages.
3280(\fBCONFIG_CMA\fP is required.)
3281.TP
3ba3d5b1
MK
3282.IR HugePages_Total " %lu"
3283(\fBCONFIG_HUGETLB_PAGE\fP is required.)
3284The size of the pool of huge pages.
3285.TP
3286.IR HugePages_Free " %lu"
3287(\fBCONFIG_HUGETLB_PAGE\fP is required.)
3288The number of huge pages in the pool that are not yet allocated.
3289.TP
3290.IR HugePages_Rsvd " %lu (since Linux 2.6.17)"
3291(\fBCONFIG_HUGETLB_PAGE\fP is required.)
3292This is the number of huge pages for
3293which a commitment to allocate from the pool has been made,
3294but no allocation has yet been made.
3295These reserved huge pages
3296guarantee that an application will be able to allocate a
3297huge page from the pool of huge pages at fault time.
3298.TP
aa8a6b4f 3299.IR HugePages_Surp " %lu (since Linux 2.6.24)"
3ba3d5b1
MK
3300(\fBCONFIG_HUGETLB_PAGE\fP is required.)
3301This is the number of huge pages in
3302the pool above the value in
3303.IR /proc/sys/vm/nr_hugepages .
3304The maximum number of surplus huge pages is controlled by
3305.IR /proc/sys/vm/nr_overcommit_hugepages .
3306.TP
3307.IR Hugepagesize " %lu"
3308(\fBCONFIG_HUGETLB_PAGE\fP is required.)
3309The size of huge pages.
d5268de1
MK
3310.TP
3311.IR DirectMap4k " %lu (since Linux 2.6.27)"
3312Number of bytes of RAM linearly mapped by kernel in 4kB pages.
3313(x86.)
3314.TP
3315.IR DirectMap4M " %lu (since Linux 2.6.27)"
3316Number of bytes of RAM linearly mapped by kernel in 4MB pages.
3317(x86 with
3318.BR CONFIG_X86_64
3319or
3320.BR CONFIG_X86_PAE
3321enabled.)
3322.TP
3323.IR DirectMap2M " %lu (since Linux 2.6.27)"
3324Number of bytes of RAM linearly mapped by kernel in 2MB pages.
3325(x86 with neither
3326.BR CONFIG_X86_64
3327nor
3328.BR CONFIG_X86_PAE
3329enabled.)
3330.TP
3331.IR DirectMap1G " %lu (since Linux 2.6.27)"
3332(x86 with
3333.BR CONFIG_X86_64
3334and
3335.B CONFIG_X86_DIRECT_GBPAGES
3336enabled.)
3ba3d5b1 3337.RE
fea681da 3338.TP
aa341984
MK
3339.I /proc/modules
3340A text list of the modules that have been loaded by the system.
3341See also
3342.BR lsmod (8).
3343.TP
fea681da 3344.I /proc/mounts
c1eea65a 3345Before kernel 2.4.19, this file was a list
9ee4a2b6 3346of all the filesystems currently mounted on the system.
ef5b47f6
MK
3347With the introduction of per-process mount namespaces in Linux 2.4.19 (see
3348.BR mount_namespaces (7)),
3349this file became a link to
c1eea65a 3350.IR /proc/self/mounts ,
732e54dd 3351which lists the mount points of the process's own mount namespace.
fea681da 3352The format of this file is documented in
31e9a9ec 3353.BR fstab (5).
fea681da 3354.TP
fea681da 3355.I /proc/mtrr
c13182ef 3356Memory Type Range Registers.
66a9882e 3357See the Linux kernel source file
a8999e1f
ES
3358.I Documentation/x86/mtrr.txt
3359.\" commit 7225e75144b9718cbbe1820d9c011c809d5773fd
3360(or
cfe70b66 3361.I Documentation/mtrr.txt
a8999e1f 3362before Linux 2.6.28)
fea681da
MK
3363for details.
3364.TP
3365.I /proc/net
ccb4bcdc
MK
3366This directory contains various files and subdirectories containing
3367information about the networking layer.
3368The files contain ASCII structures and are,
59a40ed7
MK
3369therefore, readable with
3370.BR cat (1).
c13182ef 3371However, the standard
fea681da
MK
3372.BR netstat (8)
3373suite provides much cleaner access to these files.
2dad4c59 3374.IP
9fb88bc8
MK
3375With the advent of network namespaces,
3376various information relating to the network stack is virtualized (see
3377.BR namespaces (7)).
3378Thus, since Linux 2.6.25,
3379.\" commit e9720acd728a46cb40daa52c99a979f7c4ff195c
3380.IR /proc/net
3381is a symbolic link to the directory
3382.IR /proc/self/net ,
3383which contains the same files and directories as listed below.
3384However, these files and directories now expose information
3385for the network namespace of which the process is a member.
fea681da
MK
3386.TP
3387.I /proc/net/arp
3388This holds an ASCII readable dump of the kernel ARP table used for
c13182ef 3389address resolutions.
01d0a447 3390It will show both dynamically learned and preprogrammed ARP entries.
c13182ef 3391The format is:
c1a022dc
MK
3392.IP
3393.in 7n
3394.EX
fea681da
MK
3395IP address HW type Flags HW address Mask Device
3396192.168.0.50 0x1 0x2 00:50:BF:25:68:F3 * eth0
3397192.168.0.250 0x1 0xc 00:00:00:00:00:00 * eth0
c1a022dc 3398.EE
fea681da 3399.in
c1a022dc 3400.IP
6c04f928 3401Here "IP address" is the IPv4 address of the machine and the "HW type"
c13182ef
MK
3402is the hardware type of the address from RFC\ 826.
3403The flags are the internal
9a67332e
MK
3404flags of the ARP structure (as defined in
3405.IR /usr/include/linux/if_arp.h )
3406and
6c04f928 3407the "HW address" is the data link layer mapping for that IP address if
fea681da
MK
3408it is known.
3409.TP
3410.I /proc/net/dev
c13182ef
MK
3411The dev pseudo-file contains network device status information.
3412This gives
3413the number of received and sent packets, the number of errors and
fea681da 3414collisions
c13182ef
MK
3415and other basic statistics.
3416These are used by the
fea681da 3417.BR ifconfig (8)
c13182ef
MK
3418program to report device status.
3419The format is:
c1a022dc 3420.IP
fea681da 3421.in 1n
c1a022dc 3422.EX
fea681da
MK
3423Inter-| Receive | Transmit
3424 face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
3425 lo: 2776770 11307 0 0 0 0 0 0 2776770 11307 0 0 0 0 0 0
3426 eth0: 1215645 2751 0 0 0 0 0 0 1782404 4324 0 0 0 427 0 0
3427 ppp0: 1622270 5552 1 0 0 0 0 0 354130 5669 0 0 0 0 0 0
3428 tap0: 7714 81 0 0 0 0 0 0 7714 81 0 0 0 0 0 0
c1a022dc 3429.EE
fea681da 3430.in
fea681da
MK
3431.\" .TP
3432.\" .I /proc/net/ipx
3433.\" No information.
3434.\" .TP
3435.\" .I /proc/net/ipx_route
3436.\" No information.
3437.TP
3438.I /proc/net/dev_mcast
3439Defined in
3440.IR /usr/src/linux/net/core/dev_mcast.c :
37d5e699
MK
3441.IP
3442.in +4
3443.EX
9fdfa163 3444indx interface_name dmi_u dmi_g dmi_address
fea681da
MK
34452 eth0 1 0 01005e000001
34463 eth1 1 0 01005e000001
34474 eth2 1 0 01005e000001
37d5e699 3448.EE
fea681da 3449.in
fea681da
MK
3450.TP
3451.I /proc/net/igmp
c13182ef
MK
3452Internet Group Management Protocol.
3453Defined in
fea681da
MK
3454.IR /usr/src/linux/net/core/igmp.c .
3455.TP
3456.I /proc/net/rarp
3457This file uses the same format as the
3458.I arp
3459file and contains the current reverse mapping database used to provide
3460.BR rarp (8)
c13182ef
MK
3461reverse address lookup services.
3462If RARP is not configured into the
fea681da
MK
3463kernel,
3464this file will not be present.
3465.TP
3466.I /proc/net/raw
c13182ef
MK
3467Holds a dump of the RAW socket table.
3468Much of the information is not of
fea681da 3469use
c13182ef 3470apart from debugging.
6c04f928 3471The "sl" value is the kernel hash slot for the
fea681da 3472socket,
6c04f928
MK
3473the "local_address" is the local address and protocol number pair.
3474\&"St" is
c13182ef
MK
3475the internal status of the socket.
3476The "tx_queue" and "rx_queue" are the
fea681da 3477outgoing and incoming data queue in terms of kernel memory usage.
94e9d9fe 3478The "tr", "tm\->when", and "rexmits" fields are not used by RAW.
fdc196f5
MK
3479The "uid"
3480field holds the effective UID of the creator of the socket.
fea681da
MK
3481.\" .TP
3482.\" .I /proc/net/route
3483.\" No information, but looks similar to
3484.\" .BR route (8).
3485.TP
3486.I /proc/net/snmp
c13182ef 3487This file holds the ASCII data needed for the IP, ICMP, TCP, and UDP
fea681da 3488management
763f0e47 3489information bases for an SNMP agent.
fea681da
MK
3490.TP
3491.I /proc/net/tcp
c13182ef
MK
3492Holds a dump of the TCP socket table.
3493Much of the information is not
3494of use apart from debugging.
3495The "sl" value is the kernel hash slot
6beb1671
MK
3496for the socket, the "local_address" is the local address and port number pair.
3497The "rem_address" is the remote address and port number pair
6c04f928
MK
3498(if connected).
3499\&"St" is the internal status of the socket.
3500The "tx_queue" and "rx_queue" are the
fea681da 3501outgoing and incoming data queue in terms of kernel memory usage.
94e9d9fe 3502The "tr", "tm\->when", and "rexmits" fields hold internal information of
f33774c4 3503the kernel socket state and are useful only for debugging.
fdc196f5
MK
3504The "uid"
3505field holds the effective UID of the creator of the socket.
fea681da
MK
3506.TP
3507.I /proc/net/udp
c13182ef
MK
3508Holds a dump of the UDP socket table.
3509Much of the information is not of
3510use apart from debugging.
3511The "sl" value is the kernel hash slot for the
6beb1671
MK
3512socket, the "local_address" is the local address and port number pair.
3513The "rem_address" is the remote address and port number pair
f2d607ee
MK
3514(if connected).
3515"St" is the internal status of the socket.
fea681da 3516The "tx_queue" and "rx_queue" are the outgoing and incoming data queue
c13182ef 3517in terms of kernel memory usage.
94e9d9fe 3518The "tr", "tm\->when", and "rexmits" fields
c13182ef 3519are not used by UDP.
fdc196f5
MK
3520The "uid"
3521field holds the effective UID of the creator of the socket.
fea681da 3522The format is:
c1a022dc 3523.IP
fea681da 3524.in 1n
c1a022dc 3525.EX
94e9d9fe 3526sl local_address rem_address st tx_queue rx_queue tr rexmits tm\->when uid
fea681da
MK
3527 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
3528 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
3529 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
c1a022dc 3530.EE
fea681da 3531.in
c1a022dc 3532.IP
fea681da
MK
3533.TP
3534.I /proc/net/unix
008f1ecc 3535Lists the UNIX domain sockets present within the system and their
c13182ef
MK
3536status.
3537The format is:
c1a022dc
MK
3538.IP
3539.in 1n
3540.EX
fea681da
MK
3541Num RefCount Protocol Flags Type St Path
3542 0: 00000002 00000000 00000000 0001 03
3543 1: 00000001 00000000 00010000 0001 01 /dev/printer
c1a022dc
MK
3544.EE
3545.in
3546.IP
756f55f6
MK
3547The fields are as follows:
3548.RS
3549.TP 10
3550.IR Num :
3551the kernel table slot number.
3552.TP
3553.IR RefCount :
3554the number of users of the socket.
3555.TP
3556.IR Protocol :
3557currently always 0.
3558.TP
3559.IR Flags :
3560the internal kernel flags holding the status of the socket.
3561.TP
3562.IR Type :
a405066e
MK
3563the socket type.
3564For
3565.BR SOCK_STREAM
3566sockets, this is 0001; for
3567.BR SOCK_DGRAM
3568sockets, it is 0002; and for
3569.BR SOCK_SEQPACKET
3570sockets, it is 0005.
756f55f6
MK
3571.TP
3572.IR St :
3573the internal state of the socket.
3574.TP
3575.IR Path :
3576the bound path (if any) of the socket.
8f8a46fb
MK
3577Sockets in the abstract namespace are included in the list,
3578and are shown with a
3579.I Path
3580that commences with the character '@'.
756f55f6 3581.RE
fea681da 3582.TP
ed8de0e4 3583.I /proc/net/netfilter/nfnetlink_queue
6f858d5c 3584This file contains information about netfilter user-space queueing, if used.
f2d607ee
MK
3585Each line represents a queue.
3586Queues that have not been subscribed to
6f858d5c 3587by user space are not shown.
37d5e699
MK
3588.IP
3589.in +4n
3590.EX
ed8de0e4
FW
3591 1 4207 0 2 65535 0 0 0 1
3592 (1) (2) (3)(4) (5) (6) (7) (8)
37d5e699
MK
3593.EE
3594.in
ed8de0e4
FW
3595.IP
3596The fields in each line are:
3597.RS 7
3598.TP 5
3599(1)
f2d607ee
MK
3600The ID of the queue.
3601This matches what is specified in the
ed8de0e4
FW
3602.B \-\-queue\-num
3603or
3604.B \-\-queue\-balance
3605options to the
3606.BR iptables (8)
f2d607ee
MK
3607NFQUEUE target.
3608See
ed8de0e4
FW
3609.BR iptables-extensions (8)
3610for more information.
3611.TP
3612(2)
7672e08e 3613The netlink port ID subscribed to the queue.
ed8de0e4
FW
3614.TP
3615(3)
3616The number of packets currently queued and waiting to be processed by
3617the application.
3618.TP
3619(4)
f2d607ee
MK
3620The copy mode of the queue.
3621It is either 1 (metadata only) or 2
6f858d5c 3622(also copy payload data to user space).
ed8de0e4
FW
3623.TP
3624(5)
1dea597b 3625Copy range; that is, how many bytes of packet payload should be copied to
6f858d5c 3626user space at most.
ed8de0e4
FW
3627.TP
3628(6)
f2d607ee
MK
3629queue dropped.
3630Number of packets that had to be dropped by the kernel because
6f858d5c 3631too many packets are already waiting for user space to send back the mandatory
ed8de0e4
FW
3632accept/drop verdicts.
3633.TP
3634(7)
f2d607ee
MK
3635queue user dropped.
3636Number of packets that were dropped within the netlink
3637subsystem.
3638Such drops usually happen when the corresponding socket buffer is
6f858d5c 3639full; that is, user space is not able to read messages fast enough.
ed8de0e4
FW
3640.TP
3641(8)
f2d607ee
MK
3642sequence number.
3643Every queued packet is associated with a (32-bit)
ed8de0e4
FW
3644monotonically-increasing sequence number.
3645This shows the ID of the most recent packet queued.
3646.RE
3647.IP
f33774c4 3648The last number exists only for compatibility reasons and is always 1.
ed8de0e4 3649.TP
fea681da 3650.I /proc/partitions
f042d149
MK
3651Contains the major and minor numbers of each partition as well as the number
3652of 1024-byte blocks and the partition name.
fea681da
MK
3653.TP
3654.I /proc/pci
3655This is a listing of all PCI devices found during kernel initialization
3656and their configuration.
2dad4c59 3657.IP
59a40ed7
MK
3658This file has been deprecated in favor of a new
3659.I /proc
2990d781
MK
3660interface for PCI
3661.RI ( /proc/bus/pci ).
3662It became optional in Linux 2.2 (available with
3663.B CONFIG_PCI_OLD_PROC
3664set at kernel compilation).
24b74457 3665It became once more nonoptionally enabled in Linux 2.4.
2990d781
MK
3666Next, it was deprecated in Linux 2.6 (still available with
3667.B CONFIG_PCI_LEGACY_PROC
3668set), and finally removed altogether since Linux 2.6.17.
43d42cc0 3669.\" FIXME Document /proc/sched_debug (since Linux 2.6.23)
69119dc7 3670.\" See also /proc/[pid]/sched
caea7868
MK
3671.TP
3672.IR /proc/profile " (since Linux 2.4)"
3673This file is present only if the kernel was booted with the
3674.I profile=1
3675command-line option.
3676It exposes kernel profiling information in a binary format for use by
3677.BR readprofile (1).
3678Writing (e.g., an empty string) to this file resets the profiling counters;
3679on some architectures,
3680writing a binary integer "profiling multiplier" of size
3681.IR sizeof(int)
8a3ac89a 3682sets the profiling interrupt frequency.
fea681da
MK
3683.TP
3684.I /proc/scsi
59a40ed7
MK
3685A directory with the
3686.I scsi
3687mid-level pseudo-file and various SCSI low-level
2990d781
MK
3688driver directories,
3689which contain a file for each SCSI host in this system, all of
c13182ef
MK
3690which give the status of some part of the SCSI IO subsystem.
3691These files contain ASCII structures and are, therefore, readable with
2990d781 3692.BR cat (1).
2dad4c59 3693.IP
c13182ef 3694You can also write to some of the files to reconfigure the subsystem or
59a40ed7 3695switch certain features on or off.
fea681da
MK
3696.TP
3697.I /proc/scsi/scsi
c13182ef 3698This is a listing of all SCSI devices known to the kernel.
59a40ed7 3699The listing is similar to the one seen during bootup.
c13182ef 3700scsi currently supports only the \fIadd-single-device\fP command which
59a40ed7 3701allows root to add a hotplugged device to the list of known devices.
2dad4c59 3702.IP
59a40ed7 3703The command
37d5e699 3704.IP
59a40ed7 3705.in +4n
37d5e699 3706.EX
59a40ed7 3707echo \(aqscsi add-single-device 1 0 5 0\(aq > /proc/scsi/scsi
37d5e699 3708.EE
59a40ed7 3709.in
37d5e699 3710.IP
c13182ef
MK
3711will cause
3712host scsi1 to scan on SCSI channel 0 for a device on ID 5 LUN 0.
3713If there
fea681da
MK
3714is already a device known on this address or the address is invalid, an
3715error will be returned.
3716.TP
3717.I /proc/scsi/[drivername]
c13182ef
MK
3718\fI[drivername]\fP can currently be NCR53c7xx, aha152x, aha1542, aha1740,
3719aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000, pas16, qlogic,
3720scsi_debug, seagate, t128, u15-24f, ultrastore, or wd7000.
3721These directories show up for all drivers that registered at least one
59a40ed7 3722SCSI HBA.
c13182ef 3723Every directory contains one file per registered host.
59a40ed7 3724Every host-file is named after the number the host was assigned during
c13182ef 3725initialization.
2dad4c59 3726.IP
c13182ef 3727Reading these files will usually show driver and host configuration,
f78ed33a 3728statistics, and so on.
2dad4c59 3729.IP
fea681da
MK
3730Writing to these files allows different things on different hosts.
3731For example, with the \fIlatency\fP and \fInolatency\fP commands,
3732root can switch on and off command latency measurement code in the
c13182ef
MK
3733eata_dma driver.
3734With the \fIlockup\fP and \fIunlock\fP commands,
3735root can control bus lockups simulated by the scsi_debug driver.
fea681da
MK
3736.TP
3737.I /proc/self
59a40ed7
MK
3738This directory refers to the process accessing the
3739.I /proc
9ee4a2b6 3740filesystem,
59a40ed7
MK
3741and is identical to the
3742.I /proc
3743directory named by the process ID of the same process.
fea681da
MK
3744.TP
3745.I /proc/slabinfo
c13182ef 3746Information about kernel caches.
c13182ef 3747See
fea681da
MK
3748.BR slabinfo (5)
3749for details.
3750.TP
3751.I /proc/stat
c13182ef
MK
3752kernel/system statistics.
3753Varies with architecture.
3754Common
fea681da
MK
3755entries include:
3756.RS
3757.TP
46f6dbe8
ES
3758.I cpu 10132153 290696 3084719 46828483 16683 0 25195 0 175628 0
3759.TQ
3760.I cpu0 1393280 32966 572056 13343292 6130 0 17875 0 23933 0
bfbfcd18 3761The amount of time, measured in units of
268f000b
MK
3762USER_HZ (1/100ths of a second on most architectures, use
3763.IR sysconf(_SC_CLK_TCK)
3764to obtain the right value),
b81087ab 3765.\" 1024 on Alpha and ia64
46f6dbe8
ES
3766that the system ("cpu" line) or the specific CPU ("cpu\fIN\fR" line)
3767spent in various states:
ae3b8047
MK
3768.RS
3769.TP
3770.I user
ea0841f6 3771(1) Time spent in user mode.
ae3b8047
MK
3772.TP
3773.I nice
0633f951 3774(2) Time spent in user mode with low priority (nice).
9f1b9726 3775.TP
ae3b8047 3776.I system
0633f951 3777(3) Time spent in system mode.
ae3b8047
MK
3778.TP
3779.I idle
ea0841f6 3780(4) Time spent in the idle task.
bea08fec 3781.\" FIXME . Actually, the following info about the /proc/stat 'cpu' field
e04a1f93
MK
3782.\" does not seem to be quite right (at least in 2.6.12 or 3.6):
3783.\" the idle time in /proc/uptime does not quite match this value
3784This value should be USER_HZ times the
4cb1deb7
MK
3785second entry in the
3786.I /proc/uptime
3787pseudo-file.
ae3b8047
MK
3788.TP
3789.IR iowait " (since Linux 2.5.41)"
ea0841f6 3790(5) Time waiting for I/O to complete.
e0a73a31
MK
3791This value is not reliable, for the following reasons:
3792.\" See kernel commit 9c240d757658a3ae9968dd309e674c61f07c7f48
3793.RS
3794.IP 1. 3
3795The CPU will not wait for I/O to complete;
3796iowait is the time that a task is waiting for I/O to complete.
3797When a CPU goes into idle state for outstanding task I/O,
3798another task will be scheduled on this CPU.
3799.IP 2.
3800On a multi-core CPU,
3801the task waiting for I/O to complete is not running on any CPU,
3802so the iowait of each CPU is difficult to calculate.
3803.IP 3.
3804The value in this field may
3805.I decrease
3806in certain conditions.
2d3fb75b 3807.RE
ae3b8047
MK
3808.TP
3809.IR irq " (since Linux 2.6.0-test4)"
ea0841f6 3810(6) Time servicing interrupts.
ae3b8047 3811.TP
0633f951 3812.IR softirq " (since Linux 2.6.0-test4)"
ea0841f6 3813(7) Time servicing softirqs.
ae3b8047
MK
3814.TP
3815.IR steal " (since Linux 2.6.11)"
ea0841f6 3816(8) Stolen time, which is the time spent in other operating systems when
9de1f6cc 3817running in a virtualized environment
ae3b8047
MK
3818.TP
3819.IR guest " (since Linux 2.6.24)"
0633f951 3820(9) Time spent running a virtual CPU for guest
afef1764 3821operating systems under the control of the Linux kernel.
14c06953 3822.\" See Changelog entry for 5e84cfde51cf303d368fcb48f22059f37b3872de
d4fd4120
MK
3823.TP
3824.IR guest_nice " (since Linux 2.6.33)"
3825.\" commit ce0e7b28fb75cb003cfc8d0238613aaf1c55e797
3826(10) Time spent running a niced guest (virtual CPU for guest
3827operating systems under the control of the Linux kernel).
ae3b8047 3828.RE
fea681da
MK
3829.TP
3830\fIpage 5741 1808\fP
3831The number of pages the system paged in and the number that were paged
3832out (from disk).
3833.TP
3834\fIswap 1 0\fP
3835The number of swap pages that have been brought in and out.
3836.TP
bea08fec 3837.\" FIXME . The following is not the full picture for the 'intr' of
777f5a9e 3838.\" /proc/stat on 2.6:
fea681da 3839\fIintr 1462898\fP
bfbfcd18
MK
3840This line shows counts of interrupts serviced since boot time,
3841for each of the possible system interrupts.
d63ff76e 3842The first column is the total of all interrupts serviced
d6a56978
MK
3843including unnumbered architecture specific interrupts;
3844each subsequent column is the total for that particular numbered interrupt.
d63ff76e 3845Unnumbered interrupts are not shown, only summed into the total.
fea681da
MK
3846.TP
3847\fIdisk_io: (2,0):(31,30,5764,1,2) (3,0):\fP...
636297e9 3848(major,disk_idx):(noinfo, read_io_ops, blks_read, write_io_ops, blks_written)
bfbfcd18
MK
3849.br
3850(Linux 2.4 only)
fea681da
MK
3851.TP
3852\fIctxt 115315\fP
3853The number of context switches that the system underwent.
3854.TP
3855\fIbtime 769041601\fP
f49c451a 3856boot time, in seconds since the Epoch, 1970-01-01 00:00:00 +0000 (UTC).
fea681da
MK
3857.TP
3858\fIprocesses 86031\fP
3859Number of forks since boot.
bfbfcd18
MK
3860.TP
3861\fIprocs_running 6\fP
3862Number of processes in runnable state.
5fab2e7c 3863(Linux 2.5.45 onward.)
bfbfcd18
MK
3864.TP
3865\fIprocs_blocked 2\fP
3866Number of processes blocked waiting for I/O to complete.
5fab2e7c 3867(Linux 2.5.45 onward.)
76f6f102
ES
3868.TP
3869.I softirq 229245889 94 60001584 13619 5175704 2471304 28 51212741 59130143 0 51240672
3870.\" commit d3d64df21d3d0de675a0d3ffa7c10514f3644b30
3871This line shows the number of softirq for all CPUs.
3872The first column is the total of all softirqs and
3873each subsequent column is the total for particular softirq.
d7f23d0b 3874(Linux 2.6.31 onward.)
fea681da
MK
3875.RE
3876.TP
3877.I /proc/swaps
c13182ef
MK
3878Swap areas in use.
3879See also
fea681da
MK
3880.BR swapon (8).
3881.TP
3882.I /proc/sys
3883This directory (present since 1.3.57) contains a number of files
3884and subdirectories corresponding to kernel variables.
3885These variables can be read and sometimes modified using
9ee4a2b6 3886the \fI/proc\fP filesystem, and the (deprecated)
fea681da 3887.BR sysctl (2)
c13182ef 3888system call.
2dad4c59 3889.IP
e8aa7100 3890String values may be terminated by either \(aq\\0\(aq or \(aq\\n\(aq.
2dad4c59 3891.IP
84ff8c1e
HS
3892Integer and long values may be written either in decimal or in
3893hexadecimal notation (e.g. 0x3FFF).
e8aa7100
MK
3894When writing multiple integer or long values, these may be separated
3895by any of the following whitespace characters:
3896\(aq\ \(aq, \(aq\\t\(aq, or \(aq\\n\(aq.
3897Using other separators leads to the error
84ff8c1e 3898.BR EINVAL .
fea681da 3899.TP
6ab7c0aa 3900.IR /proc/sys/abi " (since Linux 2.4.10)"
fea681da 3901This directory may contain files with application binary information.
6ab7c0aa 3902.\" On some systems, it is not present.
66a9882e 3903See the Linux kernel source file
6ab7c0aa
MK
3904.I Documentation/sysctl/abi.txt
3905for more information.
fea681da
MK
3906.TP
3907.I /proc/sys/debug
3908This directory may be empty.
3909.TP
3910.I /proc/sys/dev
e2badfdf 3911This directory contains device-specific information (e.g.,
9a67332e 3912.IR dev/cdrom/info ).
fea681da
MK
3913On
3914some systems, it may be empty.
3915.TP
3916.I /proc/sys/fs
49236d3c 3917This directory contains the files and subdirectories for kernel variables
9ee4a2b6 3918related to filesystems.
fea681da
MK
3919.TP
3920.I /proc/sys/fs/binfmt_misc
c13182ef 3921Documentation for files in this directory can be found
a2923df0
MK
3922in the Linux kernel source in the file
3923.IR Documentation/admin-guide/binfmt-misc.rst
3924(or in
3925.IR Documentation/binfmt_misc.txt
3926on older kernels).
fea681da 3927.TP
59a40ed7
MK
3928.IR /proc/sys/fs/dentry-state " (since Linux 2.2)"
3929This file contains information about the status of the
3930directory cache (dcache).
3931The file contains six numbers,
c13182ef 3932.IR nr_dentry ", " nr_unused ", " age_limit " (age in seconds), "
59a40ed7 3933.I want_pages
fea681da 3934(pages requested by system) and two dummy values.
59a40ed7
MK
3935.RS
3936.IP * 2
3937.I nr_dentry
3938is the number of allocated dentries (dcache entries).
3939This field is unused in Linux 2.2.
3940.IP *
3941.I nr_unused
3942is the number of unused dentries.
3943.IP *
3944.I age_limit
3945.\" looks like this is unused in kernels 2.2 to 2.6
3946is the age in seconds after which dcache entries
3947can be reclaimed when memory is short.
3948.IP *
3949.I want_pages
3950.\" looks like this is unused in kernels 2.2 to 2.6
c7094399 3951is nonzero when the kernel has called shrink_dcache_pages() and the
fea681da 3952dcache isn't pruned yet.
59a40ed7 3953.RE
fea681da
MK
3954.TP
3955.I /proc/sys/fs/dir-notify-enable
3956This file can be used to disable or enable the
3957.I dnotify
3958interface described in
3959.BR fcntl (2)
3960on a system-wide basis.
3961A value of 0 in this file disables the interface,
3962and a value of 1 enables it.
3963.TP
3964.I /proc/sys/fs/dquot-max
3965This file shows the maximum number of cached disk quota entries.
3966On some (2.4) systems, it is not present.
3967If the number of free cached disk quota entries is very low and
3968you have some awesome number of simultaneous system users,
3969you might want to raise the limit.
3970.TP
3971.I /proc/sys/fs/dquot-nr
3972This file shows the number of allocated disk quota
3973entries and the number of free disk quota entries.
3974.TP
24cb4a4b 3975.IR /proc/sys/fs/epoll " (since Linux 2.6.28)"
242b46af
MK
3976This directory contains the file
3977.IR max_user_watches ,
24cb4a4b
MK
3978which can be used to limit the amount of kernel memory consumed by the
3979.I epoll
3980interface.
3981For further details, see