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