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