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