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