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