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