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