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