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