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