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