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