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