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