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