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