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