1proc(5) File Formats Manual proc(5)
2
3
4
6 proc - process information, system information, and sysctl pseudo-
7 filesystem
8
10 The proc filesystem is a pseudo-filesystem which provides an interface
11 to kernel data structures. It is commonly mounted at /proc. Typi‐
12 cally, it is mounted automatically by the system, but it can also be
13 mounted manually using a command such as:
14
15 mount -t proc proc /proc
16
17 Most of the files in the proc filesystem are read-only, but some files
18 are writable, allowing kernel variables to be changed.
19
20 Mount options
21 The proc filesystem supports the following mount options:
22
23 hidepid=n (since Linux 3.3)
24 This option controls who can access the information in /proc/pid
25 directories. The argument, n, is one of the following values:
26
27 0 Everybody may access all /proc/pid directories. This is the
28 traditional behavior, and the default if this mount option
29 is not specified.
30
31 1 Users may not access files and subdirectories inside any
32 /proc/pid directories but their own (the /proc/pid directo‐
33 ries themselves remain visible). Sensitive files such as
34 /proc/pid/cmdline and /proc/pid/status are now protected
35 against other users. This makes it impossible to learn
36 whether any user is running a specific program (so long as
37 the program doesn't otherwise reveal itself by its behav‐
38 ior).
39
40 2 As for mode 1, but in addition the /proc/pid directories be‐
41 longing to other users become invisible. This means that
42 /proc/pid entries can no longer be used to discover the PIDs
43 on the system. This doesn't hide the fact that a process
44 with a specific PID value exists (it can be learned by other
45 means, for example, by "kill -0 $PID"), but it hides a
46 process's UID and GID, which could otherwise be learned by
47 employing stat(2) on a /proc/pid directory. This greatly
48 complicates an attacker's task of gathering information
49 about running processes (e.g., discovering whether some dae‐
50 mon is running with elevated privileges, whether another
51 user is running some sensitive program, whether other users
52 are running any program at all, and so on).
53
54 gid=gid (since Linux 3.3)
55 Specifies the ID of a group whose members are authorized to
56 learn process information otherwise prohibited by hidepid (i.e.,
57 users in this group behave as though /proc was mounted with
58 hidepid=0). This group should be used instead of approaches
59 such as putting nonroot users into the sudoers(5) file.
60
61 Overview
62 Underneath /proc, there are the following general groups of files and
63 subdirectories:
64
65 /proc/pid subdirectories
66 Each one of these subdirectories contains files and subdirecto‐
67 ries exposing information about the process with the correspond‐
68 ing process ID.
69
70 Underneath each of the /proc/pid directories, a task subdirec‐
71 tory contains subdirectories of the form task/tid, which contain
72 corresponding information about each of the threads in the
73 process, where tid is the kernel thread ID of the thread.
74
75 The /proc/pid subdirectories are visible when iterating through
76 /proc with getdents(2) (and thus are visible when one uses ls(1)
77 to view the contents of /proc).
78
79 /proc/tid subdirectories
80 Each one of these subdirectories contains files and subdirecto‐
81 ries exposing information about the thread with the correspond‐
82 ing thread ID. The contents of these directories are the same
83 as the corresponding /proc/pid/task/tid directories.
84
85 The /proc/tid subdirectories are not visible when iterating
86 through /proc with getdents(2) (and thus are not visible when
87 one uses ls(1) to view the contents of /proc).
88
89 /proc/self
90 When a process accesses this magic symbolic link, it resolves to
91 the process's own /proc/pid directory.
92
93 /proc/thread-self
94 When a thread accesses this magic symbolic link, it resolves to
95 the process's own /proc/self/task/tid directory.
96
97 /proc/[a-z]*
98 Various other files and subdirectories under /proc expose sys‐
99 tem-wide information.
100
101 All of the above are described in more detail below.
102
103 Files and directories
104 The following list provides details of many of the files and directo‐
105 ries under the /proc hierarchy.
106
107 /proc/pid
108 There is a numerical subdirectory for each running process; the
109 subdirectory is named by the process ID. Each /proc/pid subdi‐
110 rectory contains the pseudo-files and directories described be‐
111 low.
112
113 The files inside each /proc/pid directory are normally owned by
114 the effective user and effective group ID of the process. How‐
115 ever, as a security measure, the ownership is made root:root if
116 the process's "dumpable" attribute is set to a value other than
117 1.
118
119 Before Linux 4.11, root:root meant the "global" root user ID and
120 group ID (i.e., UID 0 and GID 0 in the initial user namespace).
121 Since Linux 4.11, if the process is in a noninitial user name‐
122 space that has a valid mapping for user (group) ID 0 inside the
123 namespace, then the user (group) ownership of the files under
124 /proc/pid is instead made the same as the root user (group) ID
125 of the namespace. This means that inside a container, things
126 work as expected for the container "root" user.
127
128 The process's "dumpable" attribute may change for the following
129 reasons:
130
131 • The attribute was explicitly set via the prctl(2)
132 PR_SET_DUMPABLE operation.
133
134 • The attribute was reset to the value in the file
135 /proc/sys/fs/suid_dumpable (described below), for the reasons
136 described in prctl(2).
137
138 Resetting the "dumpable" attribute to 1 reverts the ownership of
139 the /proc/pid/* files to the process's effective UID and GID.
140 Note, however, that if the effective UID or GID is subsequently
141 modified, then the "dumpable" attribute may be reset, as de‐
142 scribed in prctl(2). Therefore, it may be desirable to reset
143 the "dumpable" attribute after making any desired changes to the
144 process's effective UID or GID.
145
146 /proc/pid/attr
147 The files in this directory provide an API for security modules.
148 The contents of this directory are files that can be read and
149 written in order to set security-related attributes. This di‐
150 rectory was added to support SELinux, but the intention was that
151 the API be general enough to support other security modules.
152 For the purpose of explanation, examples of how SELinux uses
153 these files are provided below.
154
155 This directory is present only if the kernel was configured with
156 CONFIG_SECURITY.
157
158 /proc/pid/attr/current (since Linux 2.6.0)
159 The contents of this file represent the current security at‐
160 tributes of the process.
161
162 In SELinux, this file is used to get the security context of a
163 process. Prior to Linux 2.6.11, this file could not be used to
164 set the security context (a write was always denied), since
165 SELinux limited process security transitions to execve(2) (see
166 the description of /proc/pid/attr/exec, below). Since Linux
167 2.6.11, SELinux lifted this restriction and began supporting
168 "set" operations via writes to this node if authorized by pol‐
169 icy, although use of this operation is only suitable for appli‐
170 cations that are trusted to maintain any desired separation be‐
171 tween the old and new security contexts.
172
173 Prior to Linux 2.6.28, SELinux did not allow threads within a
174 multithreaded process to set their security context via this
175 node as it would yield an inconsistency among the security con‐
176 texts of the threads sharing the same memory space. Since Linux
177 2.6.28, SELinux lifted this restriction and began supporting
178 "set" operations for threads within a multithreaded process if
179 the new security context is bounded by the old security context,
180 where the bounded relation is defined in policy and guarantees
181 that the new security context has a subset of the permissions of
182 the old security context.
183
184 Other security modules may choose to support "set" operations
185 via writes to this node.
186
187 /proc/pid/attr/exec (since Linux 2.6.0)
188 This file represents the attributes to assign to the process
189 upon a subsequent execve(2).
190
191 In SELinux, this is needed to support role/domain transitions,
192 and execve(2) is the preferred point to make such transitions
193 because it offers better control over the initialization of the
194 process in the new security label and the inheritance of state.
195 In SELinux, this attribute is reset on execve(2) so that the new
196 program reverts to the default behavior for any execve(2) calls
197 that it may make. In SELinux, a process can set only its own
198 /proc/pid/attr/exec attribute.
199
200 /proc/pid/attr/fscreate (since Linux 2.6.0)
201 This file represents the attributes to assign to files created
202 by subsequent calls to open(2), mkdir(2), symlink(2), and
203 mknod(2)
204
205 SELinux employs this file to support creation of a file (using
206 the aforementioned system calls) in a secure state, so that
207 there is no risk of inappropriate access being obtained between
208 the time of creation and the time that attributes are set. In
209 SELinux, this attribute is reset on execve(2), so that the new
210 program reverts to the default behavior for any file creation
211 calls it may make, but the attribute will persist across multi‐
212 ple file creation calls within a program unless it is explicitly
213 reset. In SELinux, a process can set only its own
214 /proc/pid/attr/fscreate attribute.
215
216 /proc/pid/attr/keycreate (since Linux 2.6.18)
217 If a process writes a security context into this file, all sub‐
218 sequently created keys (add_key(2)) will be labeled with this
219 context. For further information, see the kernel source file
220 Documentation/security/keys/core.rst (or file Documentation/se‐
221 curity/keys.txt between Linux 3.0 and Linux 4.13, or Documenta‐
222 tion/keys.txt before Linux 3.0).
223
224 /proc/pid/attr/prev (since Linux 2.6.0)
225 This file contains the security context of the process before
226 the last execve(2); that is, the previous value of
227 /proc/pid/attr/current.
228
229 /proc/pid/attr/socketcreate (since Linux 2.6.18)
230 If a process writes a security context into this file, all sub‐
231 sequently created sockets will be labeled with this context.
232
233 /proc/pid/autogroup (since Linux 2.6.38)
234 See sched(7).
235
236 /proc/pid/auxv (since Linux 2.6.0)
237 This contains the contents of the ELF interpreter information
238 passed to the process at exec time. The format is one unsigned
239 long ID plus one unsigned long value for each entry. The last
240 entry contains two zeros. See also getauxval(3).
241
242 Permission to access this file is governed by a ptrace access
243 mode PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
244
245 /proc/pid/cgroup (since Linux 2.6.24)
246 See cgroups(7).
247
248 /proc/pid/clear_refs (since Linux 2.6.22)
249
250 This is a write-only file, writable only by owner of the
251 process.
252
253 The following values may be written to the file:
254
255 1 (since Linux 2.6.22)
256 Reset the PG_Referenced and ACCESSED/YOUNG bits for all
257 the pages associated with the process. (Before Linux
258 2.6.32, writing any nonzero value to this file had this
259 effect.)
260
261 2 (since Linux 2.6.32)
262 Reset the PG_Referenced and ACCESSED/YOUNG bits for all
263 anonymous pages associated with the process.
264
265 3 (since Linux 2.6.32)
266 Reset the PG_Referenced and ACCESSED/YOUNG bits for all
267 file-mapped pages associated with the process.
268
269 Clearing the PG_Referenced and ACCESSED/YOUNG bits provides a
270 method to measure approximately how much memory a process is us‐
271 ing. One first inspects the values in the "Referenced" fields
272 for the VMAs shown in /proc/pid/smaps to get an idea of the mem‐
273 ory footprint of the process. One then clears the PG_Referenced
274 and ACCESSED/YOUNG bits and, after some measured time interval,
275 once again inspects the values in the "Referenced" fields to get
276 an idea of the change in memory footprint of the process during
277 the measured interval. If one is interested only in inspecting
278 the selected mapping types, then the value 2 or 3 can be used
279 instead of 1.
280
281 Further values can be written to affect different properties:
282
283 4 (since Linux 3.11)
284 Clear the soft-dirty bit for all the pages associated
285 with the process. This is used (in conjunction with
286 /proc/pid/pagemap) by the check-point restore system to
287 discover which pages of a process have been dirtied since
288 the file /proc/pid/clear_refs was written to.
289
290 5 (since Linux 4.0)
291 Reset the peak resident set size ("high water mark") to
292 the process's current resident set size value.
293
294 Writing any value to /proc/pid/clear_refs other than those
295 listed above has no effect.
296
297 The /proc/pid/clear_refs file is present only if the CON‐
298 FIG_PROC_PAGE_MONITOR kernel configuration option is enabled.
299
300 /proc/pid/cmdline
301 This read-only file holds the complete command line for the
302 process, unless the process is a zombie. In the latter case,
303 there is nothing in this file: that is, a read on this file will
304 return 0 characters.
305
306 For processes which are still running, the command-line argu‐
307 ments appear in this file in the same layout as they do in
308 process memory: If the process is well-behaved, it is a set of
309 strings separated by null bytes ('\0'), with a further null byte
310 after the last string.
311
312 This is the common case, but processes have the freedom to over‐
313 ride the memory region and break assumptions about the contents
314 or format of the /proc/pid/cmdline file.
315
316 If, after an execve(2), the process modifies its argv strings,
317 those changes will show up here. This is not the same thing as
318 modifying the argv array.
319
320 Furthermore, a process may change the memory location that this
321 file refers via prctl(2) operations such as PR_SET_MM_ARG_START.
322
323 Think of this file as the command line that the process wants
324 you to see.
325
326 /proc/pid/comm (since Linux 2.6.33)
327 This file exposes the process's comm value—that is, the command
328 name associated with the process. Different threads in the same
329 process may have different comm values, accessible via
330 /proc/pid/task/tid/comm. A thread may modify its comm value, or
331 that of any of other thread in the same thread group (see the
332 discussion of CLONE_THREAD in clone(2)), by writing to the file
333 /proc/self/task/tid/comm. Strings longer than TASK_COMM_LEN
334 (16) characters (including the terminating null byte) are
335 silently truncated.
336
337 This file provides a superset of the prctl(2) PR_SET_NAME and
338 PR_GET_NAME operations, and is employed by pthread_setname_np(3)
339 when used to rename threads other than the caller. The value in
340 this file is used for the %e specifier in /proc/sys/ker‐
341 nel/core_pattern; see core(5).
342
343 /proc/pid/coredump_filter (since Linux 2.6.23)
344 See core(5).
345
346 /proc/pid/cpuset (since Linux 2.6.12)
347 See cpuset(7).
348
349 /proc/pid/cwd
350 This is a symbolic link to the current working directory of the
351 process. To find out the current working directory of process
352 20, for instance, you can do this:
353
354 $ cd /proc/20/cwd; pwd -P
355
356 In a multithreaded process, the contents of this symbolic link
357 are not available if the main thread has already terminated
358 (typically by calling pthread_exit(3)).
359
360 Permission to dereference or read (readlink(2)) this symbolic
361 link is governed by a ptrace access mode PTRACE_MODE_READ_FS‐
362 CREDS check; see ptrace(2).
363
364 /proc/pid/environ
365 This file contains the initial environment that was set when the
366 currently executing program was started via execve(2). The en‐
367 tries are separated by null bytes ('\0'), and there may be a
368 null byte at the end. Thus, to print out the environment of
369 process 1, you would do:
370
371 $ cat /proc/1/environ | tr '\000' '\n'
372
373 If, after an execve(2), the process modifies its environment
374 (e.g., by calling functions such as putenv(3) or modifying the
375 environ(7) variable directly), this file will not reflect those
376 changes.
377
378 Furthermore, a process may change the memory location that this
379 file refers via prctl(2) operations such as PR_SET_MM_ENV_START.
380
381 Permission to access this file is governed by a ptrace access
382 mode PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
383
384 /proc/pid/exe
385 Under Linux 2.2 and later, this file is a symbolic link contain‐
386 ing the actual pathname of the executed command. This symbolic
387 link can be dereferenced normally; attempting to open it will
388 open the executable. You can even type /proc/pid/exe to run an‐
389 other copy of the same executable that is being run by process
390 pid. If the pathname has been unlinked, the symbolic link will
391 contain the string ' (deleted)' appended to the original path‐
392 name. In a multithreaded process, the contents of this symbolic
393 link are not available if the main thread has already terminated
394 (typically by calling pthread_exit(3)).
395
396 Permission to dereference or read (readlink(2)) this symbolic
397 link is governed by a ptrace access mode PTRACE_MODE_READ_FS‐
398 CREDS check; see ptrace(2).
399
400 Under Linux 2.0 and earlier, /proc/pid/exe is a pointer to the
401 binary which was executed, and appears as a symbolic link. A
402 readlink(2) call on this file under Linux 2.0 returns a string
403 in the format:
404
405 [device]:inode
406
407 For example, [0301]:1502 would be inode 1502 on device major 03
408 (IDE, MFM, etc. drives) minor 01 (first partition on the first
409 drive).
410
411 find(1) with the -inum option can be used to locate the file.
412
413 /proc/pid/fd/
414 This is a subdirectory containing one entry for each file which
415 the process has open, named by its file descriptor, and which is
416 a symbolic link to the actual file. Thus, 0 is standard input,
417 1 standard output, 2 standard error, and so on.
418
419 For file descriptors for pipes and sockets, the entries will be
420 symbolic links whose content is the file type with the inode. A
421 readlink(2) call on this file returns a string in the format:
422
423 type:[inode]
424
425 For example, socket:[2248868] will be a socket and its inode is
426 2248868. For sockets, that inode can be used to find more in‐
427 formation in one of the files under /proc/net/.
428
429 For file descriptors that have no corresponding inode (e.g.,
430 file descriptors produced by bpf(2), epoll_create(2),
431 eventfd(2), inotify_init(2), perf_event_open(2), signalfd(2),
432 timerfd_create(2), and userfaultfd(2)), the entry will be a sym‐
433 bolic link with contents of the form
434
435 anon_inode:file-type
436
437 In many cases (but not all), the file-type is surrounded by
438 square brackets.
439
440 For example, an epoll file descriptor will have a symbolic link
441 whose content is the string anon_inode:[eventpoll].
442
443 In a multithreaded process, the contents of this directory are
444 not available if the main thread has already terminated (typi‐
445 cally by calling pthread_exit(3)).
446
447 Programs that take a filename as a command-line argument, but
448 don't take input from standard input if no argument is supplied,
449 and programs that write to a file named as a command-line argu‐
450 ment, but don't send their output to standard output if no argu‐
451 ment is supplied, can nevertheless be made to use standard input
452 or standard output by using /proc/pid/fd files as command-line
453 arguments. For example, assuming that -i is the flag designat‐
454 ing an input file and -o is the flag designating an output file:
455
456 $ foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
457
458 and you have a working filter.
459
460 /proc/self/fd/N is approximately the same as /dev/fd/N in some
461 UNIX and UNIX-like systems. Most Linux MAKEDEV scripts symboli‐
462 cally link /dev/fd to /proc/self/fd, in fact.
463
464 Most systems provide symbolic links /dev/stdin, /dev/stdout, and
465 /dev/stderr, which respectively link to the files 0, 1, and 2 in
466 /proc/self/fd. Thus the example command above could be written
467 as:
468
469 $ foobar -i /dev/stdin -o /dev/stdout ...
470
471 Permission to dereference or read (readlink(2)) the symbolic
472 links in this directory is governed by a ptrace access mode
473 PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
474
475 Note that for file descriptors referring to inodes (pipes and
476 sockets, see above), those inodes still have permission bits and
477 ownership information distinct from those of the /proc/pid/fd
478 entry, and that the owner may differ from the user and group IDs
479 of the process. An unprivileged process may lack permissions to
480 open them, as in this example:
481
482 $ echo test | sudo -u nobody cat
483 test
484 $ echo test | sudo -u nobody cat /proc/self/fd/0
485 cat: /proc/self/fd/0: Permission denied
486
487 File descriptor 0 refers to the pipe created by the shell and
488 owned by that shell's user, which is not nobody, so cat does not
489 have permission to create a new file descriptor to read from
490 that inode, even though it can still read from its existing file
491 descriptor 0.
492
493 /proc/pid/fdinfo/ (since Linux 2.6.22)
494 This is a subdirectory containing one entry for each file which
495 the process has open, named by its file descriptor. The files
496 in this directory are readable only by the owner of the process.
497 The contents of each file can be read to obtain information
498 about the corresponding file descriptor. The content depends on
499 the type of file referred to by the corresponding file descrip‐
500 tor.
501
502 For regular files and directories, we see something like:
503
504 $ cat /proc/12015/fdinfo/4
505 pos: 1000
506 flags: 01002002
507 mnt_id: 21
508
509 The fields are as follows:
510
511 pos This is a decimal number showing the file offset.
512
513 flags This is an octal number that displays the file access
514 mode and file status flags (see open(2)). If the close-
515 on-exec file descriptor flag is set, then flags will also
516 include the value O_CLOEXEC.
517
518 Before Linux 3.1, this field incorrectly displayed the
519 setting of O_CLOEXEC at the time the file was opened,
520 rather than the current setting of the close-on-exec
521 flag.
522
523 mnt_id This field, present since Linux 3.15, is the ID of the
524 mount containing this file. See the description of
525 /proc/pid/mountinfo.
526
527 For eventfd file descriptors (see eventfd(2)), we see (since
528 Linux 3.8) the following fields:
529
530 pos: 0
531 flags: 02
532 mnt_id: 10
533 eventfd-count: 40
534
535 eventfd-count is the current value of the eventfd counter, in
536 hexadecimal.
537
538 For epoll file descriptors (see epoll(7)), we see (since Linux
539 3.8) the following fields:
540
541 pos: 0
542 flags: 02
543 mnt_id: 10
544 tfd: 9 events: 19 data: 74253d2500000009
545 tfd: 7 events: 19 data: 74253d2500000007
546
547 Each of the lines beginning tfd describes one of the file de‐
548 scriptors being monitored via the epoll file descriptor (see
549 epoll_ctl(2) for some details). The tfd field is the number of
550 the file descriptor. The events field is a hexadecimal mask of
551 the events being monitored for this file descriptor. The data
552 field is the data value associated with this file descriptor.
553
554 For signalfd file descriptors (see signalfd(2)), we see (since
555 Linux 3.8) the following fields:
556
557 pos: 0
558 flags: 02
559 mnt_id: 10
560 sigmask: 0000000000000006
561
562 sigmask is the hexadecimal mask of signals that are accepted via
563 this signalfd file descriptor. (In this example, bits 2 and 3
564 are set, corresponding to the signals SIGINT and SIGQUIT; see
565 signal(7).)
566
567 For inotify file descriptors (see inotify(7)), we see (since
568 Linux 3.8) the following fields:
569
570 pos: 0
571 flags: 00
572 mnt_id: 11
573 inotify wd:2 ino:7ef82a sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:2af87e00220ffd73
574 inotify wd:1 ino:192627 sdev:800001 mask:800afff ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:27261900802dfd73
575
576 Each of the lines beginning with "inotify" displays information
577 about one file or directory that is being monitored. The fields
578 in this line are as follows:
579
580 wd A watch descriptor number (in decimal).
581
582 ino The inode number of the target file (in hexadecimal).
583
584 sdev The ID of the device where the target file resides (in
585 hexadecimal).
586
587 mask The mask of events being monitored for the target file
588 (in hexadecimal).
589
590 If the kernel was built with exportfs support, the path to the
591 target file is exposed as a file handle, via three hexadecimal
592 fields: fhandle-bytes, fhandle-type, and f_handle.
593
594 For fanotify file descriptors (see fanotify(7)), we see (since
595 Linux 3.8) the following fields:
596
597 pos: 0
598 flags: 02
599 mnt_id: 11
600 fanotify flags:0 event-flags:88002
601 fanotify ino:19264f sdev:800001 mflags:0 mask:1 ignored_mask:0 fhandle-bytes:8 fhandle-type:1 f_handle:4f261900a82dfd73
602
603 The fourth line displays information defined when the fanotify
604 group was created via fanotify_init(2):
605
606 flags The flags argument given to fanotify_init(2) (expressed
607 in hexadecimal).
608
609 event-flags
610 The event_f_flags argument given to fanotify_init(2) (ex‐
611 pressed in hexadecimal).
612
613 Each additional line shown in the file contains information
614 about one of the marks in the fanotify group. Most of these
615 fields are as for inotify, except:
616
617 mflags The flags associated with the mark (expressed in hexadec‐
618 imal).
619
620 mask The events mask for this mark (expressed in hexadecimal).
621
622 ignored_mask
623 The mask of events that are ignored for this mark (ex‐
624 pressed in hexadecimal).
625
626 For details on these fields, see fanotify_mark(2).
627
628 For timerfd file descriptors (see timerfd(2)), we see (since
629 Linux 3.17) the following fields:
630
631 pos: 0
632 flags: 02004002
633 mnt_id: 13
634 clockid: 0
635 ticks: 0
636 settime flags: 03
637 it_value: (7695568592, 640020877)
638 it_interval: (0, 0)
639
640 clockid
641 This is the numeric value of the clock ID (corresponding
642 to one of the CLOCK_* constants defined via <time.h>)
643 that is used to mark the progress of the timer (in this
644 example, 0 is CLOCK_REALTIME).
645
646 ticks This is the number of timer expirations that have oc‐
647 curred, (i.e., the value that read(2) on it would re‐
648 turn).
649
650 settime flags
651 This field lists the flags with which the timerfd was
652 last armed (see timerfd_settime(2)), in octal (in this
653 example, both TFD_TIMER_ABSTIME and TFD_TIMER_CAN‐
654 CEL_ON_SET are set).
655
656 it_value
657 This field contains the amount of time until the timer
658 will next expire, expressed in seconds and nanoseconds.
659 This is always expressed as a relative value, regardless
660 of whether the timer was created using the TFD_TIMER_AB‐
661 STIME flag.
662
663 it_interval
664 This field contains the interval of the timer, in seconds
665 and nanoseconds. (The it_value and it_interval fields
666 contain the values that timerfd_gettime(2) on this file
667 descriptor would return.)
668
669 /proc/pid/gid_map (since Linux 3.5)
670 See user_namespaces(7).
671
672 /proc/pid/io (since Linux 2.6.20)
673 This file contains I/O statistics for the process, for example:
674
675 # cat /proc/3828/io
676 rchar: 323934931
677 wchar: 323929600
678 syscr: 632687
679 syscw: 632675
680 read_bytes: 0
681 write_bytes: 323932160
682 cancelled_write_bytes: 0
683
684 The fields are as follows:
685
686 rchar: characters read
687 The number of bytes which this task has caused to be read
688 from storage. This is simply the sum of bytes which this
689 process passed to read(2) and similar system calls. It
690 includes things such as terminal I/O and is unaffected by
691 whether or not actual physical disk I/O was required (the
692 read might have been satisfied from pagecache).
693
694 wchar: characters written
695 The number of bytes which this task has caused, or shall
696 cause to be written to disk. Similar caveats apply here
697 as with rchar.
698
699 syscr: read syscalls
700 Attempt to count the number of read I/O operations—that
701 is, system calls such as read(2) and pread(2).
702
703 syscw: write syscalls
704 Attempt to count the number of write I/O operations—that
705 is, system calls such as write(2) and pwrite(2).
706
707 read_bytes: bytes read
708 Attempt to count the number of bytes which this process
709 really did cause to be fetched from the storage layer.
710 This is accurate for block-backed filesystems.
711
712 write_bytes: bytes written
713 Attempt to count the number of bytes which this process
714 caused to be sent to the storage layer.
715
716 cancelled_write_bytes:
717 The big inaccuracy here is truncate. If a process writes
718 1 MB to a file and then deletes the file, it will in fact
719 perform no writeout. But it will have been accounted as
720 having caused 1 MB of write. In other words: this field
721 represents the number of bytes which this process caused
722 to not happen, by truncating pagecache. A task can cause
723 "negative" I/O too. If this task truncates some dirty
724 pagecache, some I/O which another task has been accounted
725 for (in its write_bytes) will not be happening.
726
727 Note: In the current implementation, things are a bit racy on
728 32-bit systems: if process A reads process B's /proc/pid/io
729 while process B is updating one of these 64-bit counters,
730 process A could see an intermediate result.
731
732 Permission to access this file is governed by a ptrace access
733 mode PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
734
735 /proc/pid/limits (since Linux 2.6.24)
736 This file displays the soft limit, hard limit, and units of mea‐
737 surement for each of the process's resource limits (see getr‐
738 limit(2)). Up to and including Linux 2.6.35, this file is pro‐
739 tected to allow reading only by the real UID of the process.
740 Since Linux 2.6.36, this file is readable by all users on the
741 system.
742
743 /proc/pid/map_files/ (since Linux 3.3)
744 This subdirectory contains entries corresponding to memory-
745 mapped files (see mmap(2)). Entries are named by memory region
746 start and end address pair (expressed as hexadecimal numbers),
747 and are symbolic links to the mapped files themselves. Here is
748 an example, with the output wrapped and reformatted to fit on an
749 80-column display:
750
751 # ls -l /proc/self/map_files/
752 lr--------. 1 root root 64 Apr 16 21:31
753 3252e00000-3252e20000 -> /usr/lib64/ld-2.15.so
754 ...
755
756 Although these entries are present for memory regions that were
757 mapped with the MAP_FILE flag, the way anonymous shared memory
758 (regions created with the MAP_ANON | MAP_SHARED flags) is imple‐
759 mented in Linux means that such regions also appear on this di‐
760 rectory. Here is an example where the target file is the
761 deleted /dev/zero one:
762
763 lrw-------. 1 root root 64 Apr 16 21:33
764 7fc075d2f000-7fc075e6f000 -> /dev/zero (deleted)
765
766 Permission to access this file is governed by a ptrace access
767 mode PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
768
769 Until Linux 4.3, this directory appeared only if the CON‐
770 FIG_CHECKPOINT_RESTORE kernel configuration option was enabled.
771
772 Capabilities are required to read the contents of the symbolic
773 links in this directory: before Linux 5.9, the reading process
774 requires CAP_SYS_ADMIN in the initial user namespace; since
775 Linux 5.9, the reading process must have either CAP_SYS_ADMIN or
776 CAP_CHECKPOINT_RESTORE in the initial (i.e. root) user name‐
777 space.
778
779 /proc/pid/maps
780 A file containing the currently mapped memory regions and their
781 access permissions. See mmap(2) for some further information
782 about memory mappings.
783
784 Permission to access this file is governed by a ptrace access
785 mode PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
786
787 The format of the file is:
788
789 address perms offset dev inode pathname
790 00400000-00452000 r-xp 00000000 08:02 173521 /usr/bin/dbus-daemon
791 00651000-00652000 r--p 00051000 08:02 173521 /usr/bin/dbus-daemon
792 00652000-00655000 rw-p 00052000 08:02 173521 /usr/bin/dbus-daemon
793 00e03000-00e24000 rw-p 00000000 00:00 0 [heap]
794 00e24000-011f7000 rw-p 00000000 00:00 0 [heap]
795 ...
796 35b1800000-35b1820000 r-xp 00000000 08:02 135522 /usr/lib64/ld-2.15.so
797 35b1a1f000-35b1a20000 r--p 0001f000 08:02 135522 /usr/lib64/ld-2.15.so
798 35b1a20000-35b1a21000 rw-p 00020000 08:02 135522 /usr/lib64/ld-2.15.so
799 35b1a21000-35b1a22000 rw-p 00000000 00:00 0
800 35b1c00000-35b1dac000 r-xp 00000000 08:02 135870 /usr/lib64/libc-2.15.so
801 35b1dac000-35b1fac000 ---p 001ac000 08:02 135870 /usr/lib64/libc-2.15.so
802 35b1fac000-35b1fb0000 r--p 001ac000 08:02 135870 /usr/lib64/libc-2.15.so
803 35b1fb0000-35b1fb2000 rw-p 001b0000 08:02 135870 /usr/lib64/libc-2.15.so
804 ...
805 f2c6ff8c000-7f2c7078c000 rw-p 00000000 00:00 0 [stack:986]
806 ...
807 7fffb2c0d000-7fffb2c2e000 rw-p 00000000 00:00 0 [stack]
808 7fffb2d48000-7fffb2d49000 r-xp 00000000 00:00 0 [vdso]
809
810 The address field is the address space in the process that the
811 mapping occupies. The perms field is a set of permissions:
812
813 r = read
814 w = write
815 x = execute
816 s = shared
817 p = private (copy on write)
818
819 The offset field is the offset into the file/whatever; dev is
820 the device (major:minor); inode is the inode on that device. 0
821 indicates that no inode is associated with the memory region, as
822 would be the case with BSS (uninitialized data).
823
824 The pathname field will usually be the file that is backing the
825 mapping. For ELF files, you can easily coordinate with the off‐
826 set field by looking at the Offset field in the ELF program
827 headers (readelf -l).
828
829 There are additional helpful pseudo-paths:
830
831 [stack]
832 The initial process's (also known as the main thread's)
833 stack.
834
835 [stack:tid] (from Linux 3.4 to Linux 4.4)
836 A thread's stack (where the tid is a thread ID). It cor‐
837 responds to the /proc/pid/task/tid/ path. This field was
838 removed in Linux 4.5, since providing this information
839 for a process with large numbers of threads is expensive.
840
841 [vdso] The virtual dynamically linked shared object. See
842 vdso(7).
843
844 [heap] The process's heap.
845
846 [anon:name] (since Linux 5.17)
847 A named private anonymous mapping. Set with prctl(2)
848 PR_SET_VMA_ANON_NAME.
849
850 [anon_shmem:name] (since Linux 6.2)
851 A named shared anonymous mapping. Set with prctl(2)
852 PR_SET_VMA_ANON_NAME.
853
854 If the pathname field is blank, this is an anonymous mapping as
855 obtained via mmap(2). There is no easy way to coordinate this
856 back to a process's source, short of running it through gdb(1),
857 strace(1), or similar.
858
859 pathname is shown unescaped except for newline characters, which
860 are replaced with an octal escape sequence. As a result, it is
861 not possible to determine whether the original pathname con‐
862 tained a newline character or the literal \012 character se‐
863 quence.
864
865 If the mapping is file-backed and the file has been deleted, the
866 string " (deleted)" is appended to the pathname. Note that this
867 is ambiguous too.
868
869 Under Linux 2.0, there is no field giving pathname.
870
871 /proc/pid/mem
872 This file can be used to access the pages of a process's memory
873 through open(2), read(2), and lseek(2).
874
875 Permission to access this file is governed by a ptrace access
876 mode PTRACE_MODE_ATTACH_FSCREDS check; see ptrace(2).
877
878 /proc/pid/mountinfo (since Linux 2.6.26)
879 This file contains information about mounts in the process's
880 mount namespace (see mount_namespaces(7)). It supplies various
881 information (e.g., propagation state, root of mount for bind
882 mounts, identifier for each mount and its parent) that is miss‐
883 ing from the (older) /proc/pid/mounts file, and fixes various
884 other problems with that file (e.g., nonextensibility, failure
885 to distinguish per-mount versus per-superblock options).
886
887 The file contains lines of the form:
888
889 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
890 (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
891
892 The numbers in parentheses are labels for the descriptions be‐
893 low:
894
895 (1) mount ID: a unique ID for the mount (may be reused after
896 umount(2)).
897
898 (2) parent ID: the ID of the parent mount (or of self for the
899 root of this mount namespace's mount tree).
900
901 If a new mount is stacked on top of a previous existing
902 mount (so that it hides the existing mount) at pathname P,
903 then the parent of the new mount is the previous mount at
904 that location. Thus, when looking at all the mounts
905 stacked at a particular location, the top-most mount is the
906 one that is not the parent of any other mount at the same
907 location. (Note, however, that this top-most mount will be
908 accessible only if the longest path subprefix of P that is
909 a mount point is not itself hidden by a stacked mount.)
910
911 If the parent mount lies outside the process's root direc‐
912 tory (see chroot(2)), the ID shown here won't have a corre‐
913 sponding record in mountinfo whose mount ID (field 1)
914 matches this parent mount ID (because mounts that lie out‐
915 side the process's root directory are not shown in
916 mountinfo). As a special case of this point, the process's
917 root mount may have a parent mount (for the initramfs
918 filesystem) that lies outside the process's root directory,
919 and an entry for that mount will not appear in mountinfo.
920
921 (3) major:minor: the value of st_dev for files on this filesys‐
922 tem (see stat(2)).
923
924 (4) root: the pathname of the directory in the filesystem which
925 forms the root of this mount.
926
927 (5) mount point: the pathname of the mount point relative to
928 the process's root directory.
929
930 (6) mount options: per-mount options (see mount(2)).
931
932 (7) optional fields: zero or more fields of the form
933 "tag[:value]"; see below.
934
935 (8) separator: the end of the optional fields is marked by a
936 single hyphen.
937
938 (9) filesystem type: the filesystem type in the form
939 "type[.subtype]".
940
941 (10) mount source: filesystem-specific information or "none".
942
943 (11) super options: per-superblock options (see mount(2)).
944
945 Currently, the possible optional fields are shared, master,
946 propagate_from, and unbindable. See mount_namespaces(7) for a
947 description of these fields. Parsers should ignore all unrecog‐
948 nized optional fields.
949
950 For more information on mount propagation see Documenta‐
951 tion/filesystems/sharedsubtree.rst (or Documentation/filesys‐
952 tems/sharedsubtree.txt before Linux 5.8) in the Linux kernel
953 source tree.
954
955 /proc/pid/mounts (since Linux 2.4.19)
956 This file lists all the filesystems currently mounted in the
957 process's mount namespace (see mount_namespaces(7)). The format
958 of this file is documented in fstab(5).
959
960 Since Linux 2.6.15, this file is pollable: after opening the
961 file for reading, a change in this file (i.e., a filesystem
962 mount or unmount) causes select(2) to mark the file descriptor
963 as having an exceptional condition, and poll(2) and
964 epoll_wait(2) mark the file as having a priority event (POLL‐
965 PRI). (Before Linux 2.6.30, a change in this file was indicated
966 by the file descriptor being marked as readable for select(2),
967 and being marked as having an error condition for poll(2) and
968 epoll_wait(2).)
969
970 /proc/pid/mountstats (since Linux 2.6.17)
971 This file exports information (statistics, configuration infor‐
972 mation) about the mounts in the process's mount namespace (see
973 mount_namespaces(7)). Lines in this file have the form:
974
975 device /dev/sda7 mounted on /home with fstype ext3 [stats]
976 ( 1 ) ( 2 ) (3 ) ( 4 )
977
978 The fields in each line are:
979
980 (1) The name of the mounted device (or "nodevice" if there is
981 no corresponding device).
982
983 (2) The mount point within the filesystem tree.
984
985 (3) The filesystem type.
986
987 (4) Optional statistics and configuration information. Cur‐
988 rently (as at Linux 2.6.26), only NFS filesystems export
989 information via this field.
990
991 This file is readable only by the owner of the process.
992
993 /proc/pid/net (since Linux 2.6.25)
994 See the description of /proc/net.
995
996 /proc/pid/ns/ (since Linux 3.0)
997 This is a subdirectory containing one entry for each namespace
998 that supports being manipulated by setns(2). For more informa‐
999 tion, see namespaces(7).
1000
1001 /proc/pid/numa_maps (since Linux 2.6.14)
1002 See numa(7).
1003
1004 /proc/pid/oom_adj (since Linux 2.6.11)
1005 This file can be used to adjust the score used to select which
1006 process should be killed in an out-of-memory (OOM) situation.
1007 The kernel uses this value for a bit-shift operation of the
1008 process's oom_score value: valid values are in the range -16 to
1009 +15, plus the special value -17, which disables OOM-killing al‐
1010 together for this process. A positive score increases the like‐
1011 lihood of this process being killed by the OOM-killer; a nega‐
1012 tive score decreases the likelihood.
1013
1014 The default value for this file is 0; a new process inherits its
1015 parent's oom_adj setting. A process must be privileged
1016 (CAP_SYS_RESOURCE) to update this file, although a process can
1017 always increase its own oom_adj setting (since Linux 2.6.20).
1018
1019 Since Linux 2.6.36, use of this file is deprecated in favor of
1020 /proc/pid/oom_score_adj, and finally removed in Linux 3.7.
1021
1022 /proc/pid/oom_score (since Linux 2.6.11)
1023 This file displays the current score that the kernel gives to
1024 this process for the purpose of selecting a process for the OOM-
1025 killer. A higher score means that the process is more likely to
1026 be selected by the OOM-killer. The basis for this score is the
1027 amount of memory used by the process, with increases (+) or de‐
1028 creases (-) for factors including:
1029
1030 • whether the process is privileged (-).
1031
1032 Before Linux 2.6.36 the following factors were also used in the
1033 calculation of oom_score:
1034
1035 • whether the process creates a lot of children using fork(2)
1036 (+);
1037
1038 • whether the process has been running a long time, or has used
1039 a lot of CPU time (-);
1040
1041 • whether the process has a low nice value (i.e., > 0) (+); and
1042
1043 • whether the process is making direct hardware access (-).
1044
1045 The oom_score also reflects the adjustment specified by the
1046 oom_score_adj or oom_adj setting for the process.
1047
1048 /proc/pid/oom_score_adj (since Linux 2.6.36)
1049 This file can be used to adjust the badness heuristic used to
1050 select which process gets killed in out-of-memory conditions.
1051
1052 The badness heuristic assigns a value to each candidate task
1053 ranging from 0 (never kill) to 1000 (always kill) to determine
1054 which process is targeted. The units are roughly a proportion
1055 along that range of allowed memory the process may allocate
1056 from, based on an estimation of its current memory and swap use.
1057 For example, if a task is using all allowed memory, its badness
1058 score will be 1000. If it is using half of its allowed memory,
1059 its score will be 500.
1060
1061 There is an additional factor included in the badness score:
1062 root processes are given 3% extra memory over other tasks.
1063
1064 The amount of "allowed" memory depends on the context in which
1065 the OOM-killer was called. If it is due to the memory assigned
1066 to the allocating task's cpuset being exhausted, the allowed
1067 memory represents the set of mems assigned to that cpuset (see
1068 cpuset(7)). If it is due to a mempolicy's node(s) being ex‐
1069 hausted, the allowed memory represents the set of mempolicy
1070 nodes. If it is due to a memory limit (or swap limit) being
1071 reached, the allowed memory is that configured limit. Finally,
1072 if it is due to the entire system being out of memory, the al‐
1073 lowed memory represents all allocatable resources.
1074
1075 The value of oom_score_adj is added to the badness score before
1076 it is used to determine which task to kill. Acceptable values
1077 range from -1000 (OOM_SCORE_ADJ_MIN) to +1000
1078 (OOM_SCORE_ADJ_MAX). This allows user space to control the
1079 preference for OOM-killing, ranging from always preferring a
1080 certain task or completely disabling it from OOM-killing. The
1081 lowest possible value, -1000, is equivalent to disabling OOM-
1082 killing entirely for that task, since it will always report a
1083 badness score of 0.
1084
1085 Consequently, it is very simple for user space to define the
1086 amount of memory to consider for each task. Setting an
1087 oom_score_adj value of +500, for example, is roughly equivalent
1088 to allowing the remainder of tasks sharing the same system,
1089 cpuset, mempolicy, or memory controller resources to use at
1090 least 50% more memory. A value of -500, on the other hand,
1091 would be roughly equivalent to discounting 50% of the task's al‐
1092 lowed memory from being considered as scoring against the task.
1093
1094 For backward compatibility with previous kernels,
1095 /proc/pid/oom_adj can still be used to tune the badness score.
1096 Its value is scaled linearly with oom_score_adj.
1097
1098 Writing to /proc/pid/oom_score_adj or /proc/pid/oom_adj will
1099 change the other with its scaled value.
1100
1101 The choom(1) program provides a command-line interface for ad‐
1102 justing the oom_score_adj value of a running process or a newly
1103 executed command.
1104
1105 /proc/pid/pagemap (since Linux 2.6.25)
1106 This file shows the mapping of each of the process's virtual
1107 pages into physical page frames or swap area. It contains one
1108 64-bit value for each virtual page, with the bits set as fol‐
1109 lows:
1110
1111 63 If set, the page is present in RAM.
1112
1113 62 If set, the page is in swap space
1114
1115 61 (since Linux 3.5)
1116 The page is a file-mapped page or a shared anonymous
1117 page.
1118
1119 60–58 (since Linux 3.11)
1120 Zero
1121
1122 57 (since Linux 5.14)
1123 If set, the page is write-protected through user‐
1124 faultfd(2).
1125
1126 56 (since Linux 4.2)
1127 The page is exclusively mapped.
1128
1129 55 (since Linux 3.11)
1130 PTE is soft-dirty (see the kernel source file Documenta‐
1131 tion/admin-guide/mm/soft-dirty.rst).
1132
1133 54–0 If the page is present in RAM (bit 63), then these bits
1134 provide the page frame number, which can be used to index
1135 /proc/kpageflags and /proc/kpagecount. If the page is
1136 present in swap (bit 62), then bits 4–0 give the swap
1137 type, and bits 54–5 encode the swap offset.
1138
1139 Before Linux 3.11, bits 60–55 were used to encode the base-2 log
1140 of the page size.
1141
1142 To employ /proc/pid/pagemap efficiently, use /proc/pid/maps to
1143 determine which areas of memory are actually mapped and seek to
1144 skip over unmapped regions.
1145
1146 The /proc/pid/pagemap file is present only if the CON‐
1147 FIG_PROC_PAGE_MONITOR kernel configuration option is enabled.
1148
1149 Permission to access this file is governed by a ptrace access
1150 mode PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
1151
1152 /proc/pid/personality (since Linux 2.6.28)
1153 This read-only file exposes the process's execution domain, as
1154 set by personality(2). The value is displayed in hexadecimal
1155 notation.
1156
1157 Permission to access this file is governed by a ptrace access
1158 mode PTRACE_MODE_ATTACH_FSCREDS check; see ptrace(2).
1159
1160 /proc/pid/root
1161 UNIX and Linux support the idea of a per-process root of the
1162 filesystem, set by the chroot(2) system call. This file is a
1163 symbolic link that points to the process's root directory, and
1164 behaves in the same way as exe, and fd/*.
1165
1166 Note however that this file is not merely a symbolic link. It
1167 provides the same view of the filesystem (including namespaces
1168 and the set of per-process mounts) as the process itself. An
1169 example illustrates this point. In one terminal, we start a
1170 shell in new user and mount namespaces, and in that shell we
1171 create some new mounts:
1172
1173 $ PS1='sh1# ' unshare -Urnm
1174 sh1# mount -t tmpfs tmpfs /etc # Mount empty tmpfs at /etc
1175 sh1# mount --bind /usr /dev # Mount /usr at /dev
1176 sh1# echo $$
1177 27123
1178
1179 In a second terminal window, in the initial mount namespace, we
1180 look at the contents of the corresponding mounts in the initial
1181 and new namespaces:
1182
1183 $ PS1='sh2# ' sudo sh
1184 sh2# ls /etc | wc -l # In initial NS
1185 309
1186 sh2# ls /proc/27123/root/etc | wc -l # /etc in other NS
1187 0 # The empty tmpfs dir
1188 sh2# ls /dev | wc -l # In initial NS
1189 205
1190 sh2# ls /proc/27123/root/dev | wc -l # /dev in other NS
1191 11 # Actually bind
1192 # mounted to /usr
1193 sh2# ls /usr | wc -l # /usr in initial NS
1194 11
1195
1196 In a multithreaded process, the contents of the /proc/pid/root
1197 symbolic link are not available if the main thread has already
1198 terminated (typically by calling pthread_exit(3)).
1199
1200 Permission to dereference or read (readlink(2)) this symbolic
1201 link is governed by a ptrace access mode PTRACE_MODE_READ_FS‐
1202 CREDS check; see ptrace(2).
1203
1204 /proc/pid/projid_map (since Linux 3.7)
1205 See user_namespaces(7).
1206
1207 /proc/pid/seccomp (Linux 2.6.12 to Linux 2.6.22)
1208 This file can be used to read and change the process's secure
1209 computing (seccomp) mode setting. It contains the value 0 if
1210 the process is not in seccomp mode, and 1 if the process is in
1211 strict seccomp mode (see seccomp(2)). Writing 1 to this file
1212 places the process irreversibly in strict seccomp mode. (Fur‐
1213 ther attempts to write to the file fail with the EPERM error.)
1214
1215 In Linux 2.6.23, this file went away, to be replaced by the
1216 prctl(2) PR_GET_SECCOMP and PR_SET_SECCOMP operations (and later
1217 by seccomp(2) and the Seccomp field in /proc/pid/status).
1218
1219 /proc/pid/setgroups (since Linux 3.19)
1220 See user_namespaces(7).
1221
1222 /proc/pid/smaps (since Linux 2.6.14)
1223 This file shows memory consumption for each of the process's
1224 mappings. (The pmap(1) command displays similar information, in
1225 a form that may be easier for parsing.) For each mapping there
1226 is a series of lines such as the following:
1227
1228 00400000-0048a000 r-xp 00000000 fd:03 960637 /bin/bash
1229 Size: 552 kB
1230 Rss: 460 kB
1231 Pss: 100 kB
1232 Shared_Clean: 452 kB
1233 Shared_Dirty: 0 kB
1234 Private_Clean: 8 kB
1235 Private_Dirty: 0 kB
1236 Referenced: 460 kB
1237 Anonymous: 0 kB
1238 AnonHugePages: 0 kB
1239 ShmemHugePages: 0 kB
1240 ShmemPmdMapped: 0 kB
1241 Swap: 0 kB
1242 KernelPageSize: 4 kB
1243 MMUPageSize: 4 kB
1244 Locked: 0 kB
1245 ProtectionKey: 0
1246 VmFlags: rd ex mr mw me dw
1247
1248 The first of these lines shows the same information as is dis‐
1249 played for the mapping in /proc/pid/maps. The following lines
1250 show the size of the mapping, the amount of the mapping that is
1251 currently resident in RAM ("Rss"), the process's proportional
1252 share of this mapping ("Pss"), the number of clean and dirty
1253 shared pages in the mapping, and the number of clean and dirty
1254 private pages in the mapping. "Referenced" indicates the amount
1255 of memory currently marked as referenced or accessed. "Anony‐
1256 mous" shows the amount of memory that does not belong to any
1257 file. "Swap" shows how much would-be-anonymous memory is also
1258 used, but out on swap.
1259
1260 The "KernelPageSize" line (available since Linux 2.6.29) is the
1261 page size used by the kernel to back the virtual memory area.
1262 This matches the size used by the MMU in the majority of cases.
1263 However, one counter-example occurs on PPC64 kernels whereby a
1264 kernel using 64 kB as a base page size may still use 4 kB pages
1265 for the MMU on older processors. To distinguish the two at‐
1266 tributes, the "MMUPageSize" line (also available since Linux
1267 2.6.29) reports the page size used by the MMU.
1268
1269 The "Locked" indicates whether the mapping is locked in memory
1270 or not.
1271
1272 The "ProtectionKey" line (available since Linux 4.9, on x86
1273 only) contains the memory protection key (see pkeys(7)) associ‐
1274 ated with the virtual memory area. This entry is present only
1275 if the kernel was built with the CONFIG_X86_INTEL_MEMORY_PROTEC‐
1276 TION_KEYS configuration option (since Linux 4.6).
1277
1278 The "VmFlags" line (available since Linux 3.8) represents the
1279 kernel flags associated with the virtual memory area, encoded
1280 using the following two-letter codes:
1281
1282 rd - readable
1283 wr - writable
1284 ex - executable
1285 sh - shared
1286 mr - may read
1287 mw - may write
1288 me - may execute
1289 ms - may share
1290 gd - stack segment grows down
1291 pf - pure PFN range
1292 dw - disabled write to the mapped file
1293 lo - pages are locked in memory
1294 io - memory mapped I/O area
1295 sr - sequential read advise provided
1296 rr - random read advise provided
1297 dc - do not copy area on fork
1298 de - do not expand area on remapping
1299 ac - area is accountable
1300 nr - swap space is not reserved for the area
1301 ht - area uses huge tlb pages
1302 sf - perform synchronous page faults (since Linux 4.15)
1303 nl - non-linear mapping (removed in Linux 4.0)
1304 ar - architecture specific flag
1305 wf - wipe on fork (since Linux 4.14)
1306 dd - do not include area into core dump
1307 sd - soft-dirty flag (since Linux 3.13)
1308 mm - mixed map area
1309 hg - huge page advise flag
1310 nh - no-huge page advise flag
1311 mg - mergeable advise flag
1312 um - userfaultfd missing pages tracking (since Linux 4.3)
1313 uw - userfaultfd wprotect pages tracking (since Linux 4.3)
1314
1315 The /proc/pid/smaps file is present only if the CON‐
1316 FIG_PROC_PAGE_MONITOR kernel configuration option is enabled.
1317
1318 /proc/pid/stack (since Linux 2.6.29)
1319 This file provides a symbolic trace of the function calls in
1320 this process's kernel stack. This file is provided only if the
1321 kernel was built with the CONFIG_STACKTRACE configuration op‐
1322 tion.
1323
1324 Permission to access this file is governed by a ptrace access
1325 mode PTRACE_MODE_ATTACH_FSCREDS check; see ptrace(2).
1326
1327 /proc/pid/stat
1328 Status information about the process. This is used by ps(1).
1329 It is defined in the kernel source file fs/proc/array.c.
1330
1331 The fields, in order, with their proper scanf(3) format speci‐
1332 fiers, are listed below. Whether or not certain of these fields
1333 display valid information is governed by a ptrace access mode
1334 PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT check (refer to
1335 ptrace(2)). If the check denies access, then the field value is
1336 displayed as 0. The affected fields are indicated with the
1337 marking [PT].
1338
1339 (1) pid %d
1340 The process ID.
1341
1342 (2) comm %s
1343 The filename of the executable, in parentheses. Strings
1344 longer than TASK_COMM_LEN (16) characters (including the
1345 terminating null byte) are silently truncated. This is
1346 visible whether or not the executable is swapped out.
1347
1348 (3) state %c
1349 One of the following characters, indicating process
1350 state:
1351
1352 R Running
1353
1354 S Sleeping in an interruptible wait
1355
1356 D Waiting in uninterruptible disk sleep
1357
1358 Z Zombie
1359
1360 T Stopped (on a signal) or (before Linux 2.6.33)
1361 trace stopped
1362
1363 t Tracing stop (Linux 2.6.33 onward)
1364
1365 W Paging (only before Linux 2.6.0)
1366
1367 X Dead (from Linux 2.6.0 onward)
1368
1369 x Dead (Linux 2.6.33 to 3.13 only)
1370
1371 K Wakekill (Linux 2.6.33 to 3.13 only)
1372
1373 W Waking (Linux 2.6.33 to 3.13 only)
1374
1375 P Parked (Linux 3.9 to 3.13 only)
1376
1377 I Idle (Linux 4.14 onward)
1378
1379 (4) ppid %d
1380 The PID of the parent of this process.
1381
1382 (5) pgrp %d
1383 The process group ID of the process.
1384
1385 (6) session %d
1386 The session ID of the process.
1387
1388 (7) tty_nr %d
1389 The controlling terminal of the process. (The minor de‐
1390 vice number is contained in the combination of bits 31 to
1391 20 and 7 to 0; the major device number is in bits 15 to
1392 8.)
1393
1394 (8) tpgid %d
1395 The ID of the foreground process group of the controlling
1396 terminal of the process.
1397
1398 (9) flags %u
1399 The kernel flags word of the process. For bit meanings,
1400 see the PF_* defines in the Linux kernel source file in‐
1401 clude/linux/sched.h. Details depend on the kernel ver‐
1402 sion.
1403
1404 The format for this field was %lu before Linux 2.6.
1405
1406 (10) minflt %lu
1407 The number of minor faults the process has made which
1408 have not required loading a memory page from disk.
1409
1410 (11) cminflt %lu
1411 The number of minor faults that the process's waited-for
1412 children have made.
1413
1414 (12) majflt %lu
1415 The number of major faults the process has made which
1416 have required loading a memory page from disk.
1417
1418 (13) cmajflt %lu
1419 The number of major faults that the process's waited-for
1420 children have made.
1421
1422 (14) utime %lu
1423 Amount of time that this process has been scheduled in
1424 user mode, measured in clock ticks (divide by
1425 sysconf(_SC_CLK_TCK)). This includes guest time,
1426 guest_time (time spent running a virtual CPU, see below),
1427 so that applications that are not aware of the guest time
1428 field do not lose that time from their calculations.
1429
1430 (15) stime %lu
1431 Amount of time that this process has been scheduled in
1432 kernel mode, measured in clock ticks (divide by
1433 sysconf(_SC_CLK_TCK)).
1434
1435 (16) cutime %ld
1436 Amount of time that this process's waited-for children
1437 have been scheduled in user mode, measured in clock ticks
1438 (divide by sysconf(_SC_CLK_TCK)). (See also times(2).)
1439 This includes guest time, cguest_time (time spent running
1440 a virtual CPU, see below).
1441
1442 (17) cstime %ld
1443 Amount of time that this process's waited-for children
1444 have been scheduled in kernel mode, measured in clock
1445 ticks (divide by sysconf(_SC_CLK_TCK)).
1446
1447 (18) priority %ld
1448 (Explanation for Linux 2.6) For processes running a real-
1449 time scheduling policy (policy below; see sched_setsched‐
1450 uler(2)), this is the negated scheduling priority, minus
1451 one; that is, a number in the range -2 to -100, corre‐
1452 sponding to real-time priorities 1 to 99. For processes
1453 running under a non-real-time scheduling policy, this is
1454 the raw nice value (setpriority(2)) as represented in the
1455 kernel. The kernel stores nice values as numbers in the
1456 range 0 (high) to 39 (low), corresponding to the user-
1457 visible nice range of -20 to 19.
1458
1459 Before Linux 2.6, this was a scaled value based on the
1460 scheduler weighting given to this process.
1461
1462 (19) nice %ld
1463 The nice value (see setpriority(2)), a value in the range
1464 19 (low priority) to -20 (high priority).
1465
1466 (20) num_threads %ld
1467 Number of threads in this process (since Linux 2.6). Be‐
1468 fore Linux 2.6, this field was hard coded to 0 as a
1469 placeholder for an earlier removed field.
1470
1471 (21) itrealvalue %ld
1472 The time in jiffies before the next SIGALRM is sent to
1473 the process due to an interval timer. Since Linux
1474 2.6.17, this field is no longer maintained, and is hard
1475 coded as 0.
1476
1477 (22) starttime %llu
1478 The time the process started after system boot. Before
1479 Linux 2.6, this value was expressed in jiffies. Since
1480 Linux 2.6, the value is expressed in clock ticks (divide
1481 by sysconf(_SC_CLK_TCK)).
1482
1483 The format for this field was %lu before Linux 2.6.
1484
1485 (23) vsize %lu
1486 Virtual memory size in bytes.
1487
1488 (24) rss %ld
1489 Resident Set Size: number of pages the process has in
1490 real memory. This is just the pages which count toward
1491 text, data, or stack space. This does not include pages
1492 which have not been demand-loaded in, or which are
1493 swapped out. This value is inaccurate; see
1494 /proc/pid/statm below.
1495
1496 (25) rsslim %lu
1497 Current soft limit in bytes on the rss of the process;
1498 see the description of RLIMIT_RSS in getrlimit(2).
1499
1500 (26) startcode %lu [PT]
1501 The address above which program text can run.
1502
1503 (27) endcode %lu [PT]
1504 The address below which program text can run.
1505
1506 (28) startstack %lu [PT]
1507 The address of the start (i.e., bottom) of the stack.
1508
1509 (29) kstkesp %lu [PT]
1510 The current value of ESP (stack pointer), as found in the
1511 kernel stack page for the process.
1512
1513 (30) kstkeip %lu [PT]
1514 The current EIP (instruction pointer).
1515
1516 (31) signal %lu
1517 The bitmap of pending signals, displayed as a decimal
1518 number. Obsolete, because it does not provide informa‐
1519 tion on real-time signals; use /proc/pid/status instead.
1520
1521 (32) blocked %lu
1522 The bitmap of blocked signals, displayed as a decimal
1523 number. Obsolete, because it does not provide informa‐
1524 tion on real-time signals; use /proc/pid/status instead.
1525
1526 (33) sigignore %lu
1527 The bitmap of ignored signals, displayed as a decimal
1528 number. Obsolete, because it does not provide informa‐
1529 tion on real-time signals; use /proc/pid/status instead.
1530
1531 (34) sigcatch %lu
1532 The bitmap of caught signals, displayed as a decimal num‐
1533 ber. Obsolete, because it does not provide information
1534 on real-time signals; use /proc/pid/status instead.
1535
1536 (35) wchan %lu [PT]
1537 This is the "channel" in which the process is waiting.
1538 It is the address of a location in the kernel where the
1539 process is sleeping. The corresponding symbolic name can
1540 be found in /proc/pid/wchan.
1541
1542 (36) nswap %lu
1543 Number of pages swapped (not maintained).
1544
1545 (37) cnswap %lu
1546 Cumulative nswap for child processes (not maintained).
1547
1548 (38) exit_signal %d (since Linux 2.1.22)
1549 Signal to be sent to parent when we die.
1550
1551 (39) processor %d (since Linux 2.2.8)
1552 CPU number last executed on.
1553
1554 (40) rt_priority %u (since Linux 2.5.19)
1555 Real-time scheduling priority, a number in the range 1 to
1556 99 for processes scheduled under a real-time policy, or
1557 0, for non-real-time processes (see sched_setsched‐
1558 uler(2)).
1559
1560 (41) policy %u (since Linux 2.5.19)
1561 Scheduling policy (see sched_setscheduler(2)). Decode
1562 using the SCHED_* constants in linux/sched.h.
1563
1564 The format for this field was %lu before Linux 2.6.22.
1565
1566 (42) delayacct_blkio_ticks %llu (since Linux 2.6.18)
1567 Aggregated block I/O delays, measured in clock ticks
1568 (centiseconds).
1569
1570 (43) guest_time %lu (since Linux 2.6.24)
1571 Guest time of the process (time spent running a virtual
1572 CPU for a guest operating system), measured in clock
1573 ticks (divide by sysconf(_SC_CLK_TCK)).
1574
1575 (44) cguest_time %ld (since Linux 2.6.24)
1576 Guest time of the process's children, measured in clock
1577 ticks (divide by sysconf(_SC_CLK_TCK)).
1578
1579 (45) start_data %lu (since Linux 3.3) [PT]
1580 Address above which program initialized and uninitialized
1581 (BSS) data are placed.
1582
1583 (46) end_data %lu (since Linux 3.3) [PT]
1584 Address below which program initialized and uninitialized
1585 (BSS) data are placed.
1586
1587 (47) start_brk %lu (since Linux 3.3) [PT]
1588 Address above which program heap can be expanded with
1589 brk(2).
1590
1591 (48) arg_start %lu (since Linux 3.5) [PT]
1592 Address above which program command-line arguments (argv)
1593 are placed.
1594
1595 (49) arg_end %lu (since Linux 3.5) [PT]
1596 Address below program command-line arguments (argv) are
1597 placed.
1598
1599 (50) env_start %lu (since Linux 3.5) [PT]
1600 Address above which program environment is placed.
1601
1602 (51) env_end %lu (since Linux 3.5) [PT]
1603 Address below which program environment is placed.
1604
1605 (52) exit_code %d (since Linux 3.5) [PT]
1606 The thread's exit status in the form reported by wait‐
1607 pid(2).
1608
1609 /proc/pid/statm
1610 Provides information about memory usage, measured in pages. The
1611 columns are:
1612
1613 size (1) total program size
1614 (same as VmSize in /proc/pid/status)
1615 resident (2) resident set size
1616 (inaccurate; same as VmRSS in /proc/pid/status)
1617 shared (3) number of resident shared pages
1618 (i.e., backed by a file)
1619 (inaccurate; same as RssFile+RssShmem in
1620 /proc/pid/status)
1621 text (4) text (code)
1622 lib (5) library (unused since Linux 2.6; always 0)
1623 data (6) data + stack
1624 dt (7) dirty pages (unused since Linux 2.6; always 0)
1625
1626 Some of these values are inaccurate because of a kernel-internal
1627 scalability optimization. If accurate values are required, use
1628 /proc/pid/smaps or /proc/pid/smaps_rollup instead, which are
1629 much slower but provide accurate, detailed information.
1630
1631 /proc/pid/status
1632 Provides much of the information in /proc/pid/stat and
1633 /proc/pid/statm in a format that's easier for humans to parse.
1634 Here's an example:
1635
1636 $ cat /proc/$$/status
1637 Name: bash
1638 Umask: 0022
1639 State: S (sleeping)
1640 Tgid: 17248
1641 Ngid: 0
1642 Pid: 17248
1643 PPid: 17200
1644 TracerPid: 0
1645 Uid: 1000 1000 1000 1000
1646 Gid: 100 100 100 100
1647 FDSize: 256
1648 Groups: 16 33 100
1649 NStgid: 17248
1650 NSpid: 17248
1651 NSpgid: 17248
1652 NSsid: 17200
1653 VmPeak: 131168 kB
1654 VmSize: 131168 kB
1655 VmLck: 0 kB
1656 VmPin: 0 kB
1657 VmHWM: 13484 kB
1658 VmRSS: 13484 kB
1659 RssAnon: 10264 kB
1660 RssFile: 3220 kB
1661 RssShmem: 0 kB
1662 VmData: 10332 kB
1663 VmStk: 136 kB
1664 VmExe: 992 kB
1665 VmLib: 2104 kB
1666 VmPTE: 76 kB
1667 VmPMD: 12 kB
1668 VmSwap: 0 kB
1669 HugetlbPages: 0 kB # 4.4
1670 CoreDumping: 0 # 4.15
1671 Threads: 1
1672 SigQ: 0/3067
1673 SigPnd: 0000000000000000
1674 ShdPnd: 0000000000000000
1675 SigBlk: 0000000000010000
1676 SigIgn: 0000000000384004
1677 SigCgt: 000000004b813efb
1678 CapInh: 0000000000000000
1679 CapPrm: 0000000000000000
1680 CapEff: 0000000000000000
1681 CapBnd: ffffffffffffffff
1682 CapAmb: 0000000000000000
1683 NoNewPrivs: 0
1684 Seccomp: 0
1685 Speculation_Store_Bypass: vulnerable
1686 Cpus_allowed: 00000001
1687 Cpus_allowed_list: 0
1688 Mems_allowed: 1
1689 Mems_allowed_list: 0
1690 voluntary_ctxt_switches: 150
1691 nonvoluntary_ctxt_switches: 545
1692
1693 The fields are as follows:
1694
1695 Name Command run by this process. Strings longer than
1696 TASK_COMM_LEN (16) characters (including the terminating
1697 null byte) are silently truncated.
1698
1699 Umask Process umask, expressed in octal with a leading zero;
1700 see umask(2). (Since Linux 4.7.)
1701
1702 State Current state of the process. One of "R (running)", "S
1703 (sleeping)", "D (disk sleep)", "T (stopped)", "t (tracing
1704 stop)", "Z (zombie)", or "X (dead)".
1705
1706 Tgid Thread group ID (i.e., Process ID).
1707
1708 Ngid NUMA group ID (0 if none; since Linux 3.13).
1709
1710 Pid Thread ID (see gettid(2)).
1711
1712 PPid PID of parent process.
1713
1714 TracerPid
1715 PID of process tracing this process (0 if not being
1716 traced).
1717
1718 Uid, Gid
1719 Real, effective, saved set, and filesystem UIDs (GIDs).
1720
1721 FDSize Number of file descriptor slots currently allocated.
1722
1723 Groups Supplementary group list.
1724
1725 NStgid Thread group ID (i.e., PID) in each of the PID namespaces
1726 of which pid is a member. The leftmost entry shows the
1727 value with respect to the PID namespace of the process
1728 that mounted this procfs (or the root namespace if
1729 mounted by the kernel), followed by the value in succes‐
1730 sively nested inner namespaces. (Since Linux 4.1.)
1731
1732 NSpid Thread ID in each of the PID namespaces of which pid is a
1733 member. The fields are ordered as for NStgid. (Since
1734 Linux 4.1.)
1735
1736 NSpgid Process group ID in each of the PID namespaces of which
1737 pid is a member. The fields are ordered as for NStgid.
1738 (Since Linux 4.1.)
1739
1740 NSsid descendant namespace session ID hierarchy Session ID in
1741 each of the PID namespaces of which pid is a member. The
1742 fields are ordered as for NStgid. (Since Linux 4.1.)
1743
1744 VmPeak Peak virtual memory size.
1745
1746 VmSize Virtual memory size.
1747
1748 VmLck Locked memory size (see mlock(2)).
1749
1750 VmPin Pinned memory size (since Linux 3.2). These are pages
1751 that can't be moved because something needs to directly
1752 access physical memory.
1753
1754 VmHWM Peak resident set size ("high water mark"). This value
1755 is inaccurate; see /proc/pid/statm above.
1756
1757 VmRSS Resident set size. Note that the value here is the sum
1758 of RssAnon, RssFile, and RssShmem. This value is inaccu‐
1759 rate; see /proc/pid/statm above.
1760
1761 RssAnon
1762 Size of resident anonymous memory. (since Linux 4.5).
1763 This value is inaccurate; see /proc/pid/statm above.
1764
1765 RssFile
1766 Size of resident file mappings. (since Linux 4.5). This
1767 value is inaccurate; see /proc/pid/statm above.
1768
1769 RssShmem
1770 Size of resident shared memory (includes System V shared
1771 memory, mappings from tmpfs(5), and shared anonymous map‐
1772 pings). (since Linux 4.5).
1773
1774 VmData, VmStk, VmExe
1775 Size of data, stack, and text segments. This value is
1776 inaccurate; see /proc/pid/statm above.
1777
1778 VmLib Shared library code size.
1779
1780 VmPTE Page table entries size (since Linux 2.6.10).
1781
1782 VmPMD Size of second-level page tables (added in Linux 4.0; re‐
1783 moved in Linux 4.15).
1784
1785 VmSwap Swapped-out virtual memory size by anonymous private
1786 pages; shmem swap usage is not included (since Linux
1787 2.6.34). This value is inaccurate; see /proc/pid/statm
1788 above.
1789
1790 HugetlbPages
1791 Size of hugetlb memory portions (since Linux 4.4).
1792
1793 CoreDumping
1794 Contains the value 1 if the process is currently dumping
1795 core, and 0 if it is not (since Linux 4.15). This infor‐
1796 mation can be used by a monitoring process to avoid
1797 killing a process that is currently dumping core, which
1798 could result in a corrupted core dump file.
1799
1800 Threads
1801 Number of threads in process containing this thread.
1802
1803 SigQ This field contains two slash-separated numbers that re‐
1804 late to queued signals for the real user ID of this
1805 process. The first of these is the number of currently
1806 queued signals for this real user ID, and the second is
1807 the resource limit on the number of queued signals for
1808 this process (see the description of RLIMIT_SIGPENDING in
1809 getrlimit(2)).
1810
1811 SigPnd, ShdPnd
1812 Mask (expressed in hexadecimal) of signals pending for
1813 thread and for process as a whole (see pthreads(7) and
1814 signal(7)).
1815
1816 SigBlk, SigIgn, SigCgt
1817 Masks (expressed in hexadecimal) indicating signals being
1818 blocked, ignored, and caught (see signal(7)).
1819
1820 CapInh, CapPrm, CapEff
1821 Masks (expressed in hexadecimal) of capabilities enabled
1822 in inheritable, permitted, and effective sets (see capa‐
1823 bilities(7)).
1824
1825 CapBnd Capability bounding set, expressed in hexadecimal (since
1826 Linux 2.6.26, see capabilities(7)).
1827
1828 CapAmb Ambient capability set, expressed in hexadecimal (since
1829 Linux 4.3, see capabilities(7)).
1830
1831 NoNewPrivs
1832 Value of the no_new_privs bit (since Linux 4.10, see
1833 prctl(2)).
1834
1835 Seccomp
1836 Seccomp mode of the process (since Linux 3.8, see sec‐
1837 comp(2)). 0 means SECCOMP_MODE_DISABLED; 1 means SEC‐
1838 COMP_MODE_STRICT; 2 means SECCOMP_MODE_FILTER. This
1839 field is provided only if the kernel was built with the
1840 CONFIG_SECCOMP kernel configuration option enabled.
1841
1842 Speculation_Store_Bypass
1843 Speculation flaw mitigation state (since Linux 4.17, see
1844 prctl(2)).
1845
1846 Cpus_allowed
1847 Hexadecimal mask of CPUs on which this process may run
1848 (since Linux 2.6.24, see cpuset(7)).
1849
1850 Cpus_allowed_list
1851 Same as previous, but in "list format" (since Linux
1852 2.6.26, see cpuset(7)).
1853
1854 Mems_allowed
1855 Mask of memory nodes allowed to this process (since Linux
1856 2.6.24, see cpuset(7)).
1857
1858 Mems_allowed_list
1859 Same as previous, but in "list format" (since Linux
1860 2.6.26, see cpuset(7)).
1861
1862 voluntary_ctxt_switches, nonvoluntary_ctxt_switches
1863 Number of voluntary and involuntary context switches
1864 (since Linux 2.6.23).
1865
1866 /proc/pid/syscall (since Linux 2.6.27)
1867 This file exposes the system call number and argument registers
1868 for the system call currently being executed by the process,
1869 followed by the values of the stack pointer and program counter
1870 registers. The values of all six argument registers are ex‐
1871 posed, although most system calls use fewer registers.
1872
1873 If the process is blocked, but not in a system call, then the
1874 file displays -1 in place of the system call number, followed by
1875 just the values of the stack pointer and program counter. If
1876 process is not blocked, then the file contains just the string
1877 "running".
1878
1879 This file is present only if the kernel was configured with CON‐
1880 FIG_HAVE_ARCH_TRACEHOOK.
1881
1882 Permission to access this file is governed by a ptrace access
1883 mode PTRACE_MODE_ATTACH_FSCREDS check; see ptrace(2).
1884
1885 /proc/pid/task (since Linux 2.6.0)
1886 This is a directory that contains one subdirectory for each
1887 thread in the process. The name of each subdirectory is the nu‐
1888 merical thread ID (tid) of the thread (see gettid(2)).
1889
1890 Within each of these subdirectories, there is a set of files
1891 with the same names and contents as under the /proc/pid directo‐
1892 ries. For attributes that are shared by all threads, the con‐
1893 tents for each of the files under the task/tid subdirectories
1894 will be the same as in the corresponding file in the parent
1895 /proc/pid directory (e.g., in a multithreaded process, all of
1896 the task/tid/cwd files will have the same value as the
1897 /proc/pid/cwd file in the parent directory, since all of the
1898 threads in a process share a working directory). For attributes
1899 that are distinct for each thread, the corresponding files under
1900 task/tid may have different values (e.g., various fields in each
1901 of the task/tid/status files may be different for each thread),
1902 or they might not exist in /proc/pid at all.
1903
1904 In a multithreaded process, the contents of the /proc/pid/task
1905 directory are not available if the main thread has already ter‐
1906 minated (typically by calling pthread_exit(3)).
1907
1908 /proc/pid/task/tid/children (since Linux 3.5)
1909 A space-separated list of child tasks of this task. Each child
1910 task is represented by its TID.
1911
1912 This option is intended for use by the checkpoint-restore (CRIU)
1913 system, and reliably provides a list of children only if all of
1914 the child processes are stopped or frozen. It does not work
1915 properly if children of the target task exit while the file is
1916 being read! Exiting children may cause non-exiting children to
1917 be omitted from the list. This makes this interface even more
1918 unreliable than classic PID-based approaches if the inspected
1919 task and its children aren't frozen, and most code should proba‐
1920 bly not use this interface.
1921
1922 Until Linux 4.2, the presence of this file was governed by the
1923 CONFIG_CHECKPOINT_RESTORE kernel configuration option. Since
1924 Linux 4.2, it is governed by the CONFIG_PROC_CHILDREN option.
1925
1926 /proc/pid/timers (since Linux 3.10)
1927 A list of the POSIX timers for this process. Each timer is
1928 listed with a line that starts with the string "ID:". For exam‐
1929 ple:
1930
1931 ID: 1
1932 signal: 60/00007fff86e452a8
1933 notify: signal/pid.2634
1934 ClockID: 0
1935 ID: 0
1936 signal: 60/00007fff86e452a8
1937 notify: signal/pid.2634
1938 ClockID: 1
1939
1940 The lines shown for each timer have the following meanings:
1941
1942 ID The ID for this timer. This is not the same as the timer
1943 ID returned by timer_create(2); rather, it is the same
1944 kernel-internal ID that is available via the si_timerid
1945 field of the siginfo_t structure (see sigaction(2)).
1946
1947 signal This is the signal number that this timer uses to deliver
1948 notifications followed by a slash, and then the
1949 sigev_value value supplied to the signal handler. Valid
1950 only for timers that notify via a signal.
1951
1952 notify The part before the slash specifies the mechanism that
1953 this timer uses to deliver notifications, and is one of
1954 "thread", "signal", or "none". Immediately following the
1955 slash is either the string "tid" for timers with
1956 SIGEV_THREAD_ID notification, or "pid" for timers that
1957 notify by other mechanisms. Following the "." is the PID
1958 of the process (or the kernel thread ID of the thread)
1959 that will be delivered a signal if the timer delivers no‐
1960 tifications via a signal.
1961
1962 ClockID
1963 This field identifies the clock that the timer uses for
1964 measuring time. For most clocks, this is a number that
1965 matches one of the user-space CLOCK_* constants exposed
1966 via <time.h>. CLOCK_PROCESS_CPUTIME_ID timers display
1967 with a value of -6 in this field.
1968 CLOCK_THREAD_CPUTIME_ID timers display with a value of -2
1969 in this field.
1970
1971 This file is available only when the kernel was configured with
1972 CONFIG_CHECKPOINT_RESTORE.
1973
1974 /proc/pid/timerslack_ns (since Linux 4.6)
1975 This file exposes the process's "current" timer slack value, ex‐
1976 pressed in nanoseconds. The file is writable, allowing the
1977 process's timer slack value to be changed. Writing 0 to this
1978 file resets the "current" timer slack to the "default" timer
1979 slack value. For further details, see the discussion of
1980 PR_SET_TIMERSLACK in prctl(2).
1981
1982 Initially, permission to access this file was governed by a
1983 ptrace access mode PTRACE_MODE_ATTACH_FSCREDS check (see
1984 ptrace(2)). However, this was subsequently deemed too strict a
1985 requirement (and had the side effect that requiring a process to
1986 have the CAP_SYS_PTRACE capability would also allow it to view
1987 and change any process's memory). Therefore, since Linux 4.9,
1988 only the (weaker) CAP_SYS_NICE capability is required to access
1989 this file.
1990
1991 /proc/pid/uid_map (since Linux 3.5)
1992 See user_namespaces(7).
1993
1994 /proc/pid/wchan (since Linux 2.6.0)
1995 The symbolic name corresponding to the location in the kernel
1996 where the process is sleeping.
1997
1998 Permission to access this file is governed by a ptrace access
1999 mode PTRACE_MODE_READ_FSCREDS check; see ptrace(2).
2000
2001 /proc/tid
2002 There is a numerical subdirectory for each running thread that
2003 is not a thread group leader (i.e., a thread whose thread ID is
2004 not the same as its process ID); the subdirectory is named by
2005 the thread ID. Each one of these subdirectories contains files
2006 and subdirectories exposing information about the thread with
2007 the thread ID tid. The contents of these directories are the
2008 same as the corresponding /proc/pid/task/tid directories.
2009
2010 The /proc/tid subdirectories are not visible when iterating
2011 through /proc with getdents(2) (and thus are not visible when
2012 one uses ls(1) to view the contents of /proc). However, the
2013 pathnames of these directories are visible to (i.e., usable as
2014 arguments in) system calls that operate on pathnames.
2015
2016 /proc/apm
2017 Advanced power management version and battery information when
2018 CONFIG_APM is defined at kernel compilation time.
2019
2020 /proc/buddyinfo
2021 This file contains information which is used for diagnosing mem‐
2022 ory fragmentation issues. Each line starts with the identifica‐
2023 tion of the node and the name of the zone which together iden‐
2024 tify a memory region. This is then followed by the count of
2025 available chunks of a certain order in which these zones are
2026 split. The size in bytes of a certain order is given by the
2027 formula:
2028
2029 (2^order) * PAGE_SIZE
2030
2031 The binary buddy allocator algorithm inside the kernel will
2032 split one chunk into two chunks of a smaller order (thus with
2033 half the size) or combine two contiguous chunks into one larger
2034 chunk of a higher order (thus with double the size) to satisfy
2035 allocation requests and to counter memory fragmentation. The
2036 order matches the column number, when starting to count at zero.
2037
2038 For example on an x86-64 system:
2039 Node 0, zone DMA 1 1 1 0 2 1 1 0 1 1 3
2040 Node 0, zone DMA32 65 47 4 81 52 28 13 10 5 1 404
2041 Node 0, zone Normal 216 55 189 101 84 38 37 27 5 3 587
2042
2043 In this example, there is one node containing three zones and
2044 there are 11 different chunk sizes. If the page size is 4 kilo‐
2045 bytes, then the first zone called DMA (on x86 the first 16
2046 megabyte of memory) has 1 chunk of 4 kilobytes (order 0) avail‐
2047 able and has 3 chunks of 4 megabytes (order 10) available.
2048
2049 If the memory is heavily fragmented, the counters for higher or‐
2050 der chunks will be zero and allocation of large contiguous areas
2051 will fail.
2052
2053 Further information about the zones can be found in /proc/zone‐
2054 info.
2055
2056 /proc/bus
2057 Contains subdirectories for installed buses.
2058
2059 /proc/bus/pccard
2060 Subdirectory for PCMCIA devices when CONFIG_PCMCIA is set at
2061 kernel compilation time.
2062
2063 /proc/bus/pccard/drivers
2064
2065 /proc/bus/pci
2066 Contains various bus subdirectories and pseudo-files containing
2067 information about PCI buses, installed devices, and device driv‐
2068 ers. Some of these files are not ASCII.
2069
2070 /proc/bus/pci/devices
2071 Information about PCI devices. They may be accessed through
2072 lspci(8) and setpci(8).
2073
2074 /proc/cgroups (since Linux 2.6.24)
2075 See cgroups(7).
2076
2077 /proc/cmdline
2078 Arguments passed to the Linux kernel at boot time. Often done
2079 via a boot manager such as lilo(8) or grub(8). Any arguments
2080 embedded in the kernel image or initramfs via CONFIG_BOOT_CONFIG
2081 will also be displayed.
2082
2083 /proc/config.gz (since Linux 2.6)
2084 This file exposes the configuration options that were used to
2085 build the currently running kernel, in the same format as they
2086 would be shown in the .config file that resulted when configur‐
2087 ing the kernel (using make xconfig, make config, or similar).
2088 The file contents are compressed; view or search them using
2089 zcat(1) and zgrep(1). As long as no changes have been made to
2090 the following file, the contents of /proc/config.gz are the same
2091 as those provided by:
2092
2093 cat /lib/modules/$(uname -r)/build/.config
2094
2095 /proc/config.gz is provided only if the kernel is configured
2096 with CONFIG_IKCONFIG_PROC.
2097
2098 /proc/crypto
2099 A list of the ciphers provided by the kernel crypto API. For
2100 details, see the kernel Linux Kernel Crypto API documentation
2101 available under the kernel source directory Documenta‐
2102 tion/crypto/ (or Documentation/DocBook before Linux 4.10; the
2103 documentation can be built using a command such as make htmldocs
2104 in the root directory of the kernel source tree).
2105
2106 /proc/cpuinfo
2107 This is a collection of CPU and system architecture dependent
2108 items, for each supported architecture a different list. Two
2109 common entries are processor which gives CPU number and bo‐
2110 gomips; a system constant that is calculated during kernel ini‐
2111 tialization. SMP machines have information for each CPU. The
2112 lscpu(1) command gathers its information from this file.
2113
2114 /proc/devices
2115 Text listing of major numbers and device groups. This can be
2116 used by MAKEDEV scripts for consistency with the kernel.
2117
2118 /proc/diskstats (since Linux 2.5.69)
2119 This file contains disk I/O statistics for each disk device.
2120 See the Linux kernel source file Documentation/ad‐
2121 min-guide/iostats.rst (or Documentation/iostats.txt before Linux
2122 5.3) for further information.
2123
2124 /proc/dma
2125 This is a list of the registered ISA DMA (direct memory access)
2126 channels in use.
2127
2128 /proc/driver
2129 Empty subdirectory.
2130
2131 /proc/execdomains
2132 Used to list ABI personalities before Linux 4.1; now contains a
2133 constant string for userspace compatibility.
2134
2135 /proc/fb
2136 Frame buffer information when CONFIG_FB is defined during kernel
2137 compilation.
2138
2139 /proc/filesystems
2140 A text listing of the filesystems which are supported by the
2141 kernel, namely filesystems which were compiled into the kernel
2142 or whose kernel modules are currently loaded. (See also
2143 filesystems(5).) If a filesystem is marked with "nodev", this
2144 means that it does not require a block device to be mounted
2145 (e.g., virtual filesystem, network filesystem).
2146
2147 Incidentally, this file may be used by mount(8) when no filesys‐
2148 tem is specified and it didn't manage to determine the filesys‐
2149 tem type. Then filesystems contained in this file are tried
2150 (excepted those that are marked with "nodev").
2151
2152 /proc/fs
2153 Contains subdirectories that in turn contain files with informa‐
2154 tion about (certain) mounted filesystems.
2155
2156 /proc/ide
2157 This directory exists on systems with the IDE bus. There are
2158 directories for each IDE channel and attached device. Files in‐
2159 clude:
2160
2161 cache buffer size in KB
2162 capacity number of sectors
2163 driver driver version
2164 geometry physical and logical geometry
2165 identify in hexadecimal
2166 media media type
2167 model manufacturer's model number
2168 settings drive settings
2169 smart_thresholds IDE disk management thresholds (in hex)
2170 smart_values IDE disk management values (in hex)
2171
2172 The hdparm(8) utility provides access to this information in a
2173 friendly format.
2174
2175 /proc/interrupts
2176 This is used to record the number of interrupts per CPU per IO
2177 device. Since Linux 2.6.24, for the i386 and x86-64 architec‐
2178 tures, at least, this also includes interrupts internal to the
2179 system (that is, not associated with a device as such), such as
2180 NMI (nonmaskable interrupt), LOC (local timer interrupt), and
2181 for SMP systems, TLB (TLB flush interrupt), RES (rescheduling
2182 interrupt), CAL (remote function call interrupt), and possibly
2183 others. Very easy to read formatting, done in ASCII.
2184
2185 /proc/iomem
2186 I/O memory map in Linux 2.4.
2187
2188 /proc/ioports
2189 This is a list of currently registered Input-Output port regions
2190 that are in use.
2191
2192 /proc/kallsyms (since Linux 2.5.71)
2193 This holds the kernel exported symbol definitions used by the
2194 modules(X) tools to dynamically link and bind loadable modules.
2195 In Linux 2.5.47 and earlier, a similar file with slightly dif‐
2196 ferent syntax was named ksyms.
2197
2198 /proc/kcore
2199 This file represents the physical memory of the system and is
2200 stored in the ELF core file format. With this pseudo-file, and
2201 an unstripped kernel (/usr/src/linux/vmlinux) binary, GDB can be
2202 used to examine the current state of any kernel data structures.
2203
2204 The total length of the file is the size of physical memory
2205 (RAM) plus 4 KiB.
2206
2207 /proc/keys (since Linux 2.6.10)
2208 See keyrings(7).
2209
2210 /proc/key-users (since Linux 2.6.10)
2211 See keyrings(7).
2212
2213 /proc/kmsg
2214 This file can be used instead of the syslog(2) system call to
2215 read kernel messages. A process must have superuser privileges
2216 to read this file, and only one process should read this file.
2217 This file should not be read if a syslog process is running
2218 which uses the syslog(2) system call facility to log kernel mes‐
2219 sages.
2220
2221 Information in this file is retrieved with the dmesg(1) program.
2222
2223 /proc/kpagecgroup (since Linux 4.3)
2224 This file contains a 64-bit inode number of the memory cgroup
2225 each page is charged to, indexed by page frame number (see the
2226 discussion of /proc/pid/pagemap).
2227
2228 The /proc/kpagecgroup file is present only if the CONFIG_MEMCG
2229 kernel configuration option is enabled.
2230
2231 /proc/kpagecount (since Linux 2.6.25)
2232 This file contains a 64-bit count of the number of times each
2233 physical page frame is mapped, indexed by page frame number (see
2234 the discussion of /proc/pid/pagemap).
2235
2236 The /proc/kpagecount file is present only if the CON‐
2237 FIG_PROC_PAGE_MONITOR kernel configuration option is enabled.
2238
2239 /proc/kpageflags (since Linux 2.6.25)
2240 This file contains 64-bit masks corresponding to each physical
2241 page frame; it is indexed by page frame number (see the discus‐
2242 sion of /proc/pid/pagemap). The bits are as follows:
2243
2244 0 - KPF_LOCKED
2245 1 - KPF_ERROR
2246 2 - KPF_REFERENCED
2247 3 - KPF_UPTODATE
2248 4 - KPF_DIRTY
2249 5 - KPF_LRU
2250 6 - KPF_ACTIVE
2251 7 - KPF_SLAB
2252 8 - KPF_WRITEBACK
2253 9 - KPF_RECLAIM
2254 10 - KPF_BUDDY
2255 11 - KPF_MMAP (since Linux 2.6.31)
2256 12 - KPF_ANON (since Linux 2.6.31)
2257 13 - KPF_SWAPCACHE (since Linux 2.6.31)
2258 14 - KPF_SWAPBACKED (since Linux 2.6.31)
2259 15 - KPF_COMPOUND_HEAD (since Linux 2.6.31)
2260 16 - KPF_COMPOUND_TAIL (since Linux 2.6.31)
2261 17 - KPF_HUGE (since Linux 2.6.31)
2262 18 - KPF_UNEVICTABLE (since Linux 2.6.31)
2263 19 - KPF_HWPOISON (since Linux 2.6.31)
2264 20 - KPF_NOPAGE (since Linux 2.6.31)
2265 21 - KPF_KSM (since Linux 2.6.32)
2266 22 - KPF_THP (since Linux 3.4)
2267 23 - KPF_BALLOON (since Linux 3.18)
2268 24 - KPF_ZERO_PAGE (since Linux 4.0)
2269 25 - KPF_IDLE (since Linux 4.3)
2270 26 - KPF_PGTABLE (since Linux 4.18)
2271
2272 For further details on the meanings of these bits, see the ker‐
2273 nel source file Documentation/admin-guide/mm/pagemap.rst. Be‐
2274 fore Linux 2.6.29, KPF_WRITEBACK, KPF_RECLAIM, KPF_BUDDY, and
2275 KPF_LOCKED did not report correctly.
2276
2277 The /proc/kpageflags file is present only if the CON‐
2278 FIG_PROC_PAGE_MONITOR kernel configuration option is enabled.
2279
2280 /proc/ksyms (Linux 1.1.23–2.5.47)
2281 See /proc/kallsyms.
2282
2283 /proc/loadavg
2284 The first three fields in this file are load average figures
2285 giving the number of jobs in the run queue (state R) or waiting
2286 for disk I/O (state D) averaged over 1, 5, and 15 minutes. They
2287 are the same as the load average numbers given by uptime(1) and
2288 other programs. The fourth field consists of two numbers sepa‐
2289 rated by a slash (/). The first of these is the number of cur‐
2290 rently runnable kernel scheduling entities (processes, threads).
2291 The value after the slash is the number of kernel scheduling en‐
2292 tities that currently exist on the system. The fifth field is
2293 the PID of the process that was most recently created on the
2294 system.
2295
2296 /proc/locks
2297 This file shows current file locks (flock(2) and fcntl(2)) and
2298 leases (fcntl(2)).
2299
2300 An example of the content shown in this file is the following:
2301
2302 1: POSIX ADVISORY READ 5433 08:01:7864448 128 128
2303 2: FLOCK ADVISORY WRITE 2001 08:01:7864554 0 EOF
2304 3: FLOCK ADVISORY WRITE 1568 00:2f:32388 0 EOF
2305 4: POSIX ADVISORY WRITE 699 00:16:28457 0 EOF
2306 5: POSIX ADVISORY WRITE 764 00:16:21448 0 0
2307 6: POSIX ADVISORY READ 3548 08:01:7867240 1 1
2308 7: POSIX ADVISORY READ 3548 08:01:7865567 1826 2335
2309 8: OFDLCK ADVISORY WRITE -1 08:01:8713209 128 191
2310
2311 The fields shown in each line are as follows:
2312
2313 [1] The ordinal position of the lock in the list.
2314
2315 [2] The lock type. Values that may appear here include:
2316
2317 FLOCK This is a BSD file lock created using flock(2).
2318
2319 OFDLCK This is an open file description (OFD) lock created
2320 using fcntl(2).
2321
2322 POSIX This is a POSIX byte-range lock created using fc‐
2323 ntl(2).
2324
2325 [3] Among the strings that can appear here are the following:
2326
2327 ADVISORY
2328 This is an advisory lock.
2329
2330 MANDATORY
2331 This is a mandatory lock.
2332
2333 [4] The type of lock. Values that can appear here are:
2334
2335 READ This is a POSIX or OFD read lock, or a BSD shared
2336 lock.
2337
2338 WRITE This is a POSIX or OFD write lock, or a BSD exclu‐
2339 sive lock.
2340
2341 [5] The PID of the process that owns the lock.
2342
2343 Because OFD locks are not owned by a single process (since
2344 multiple processes may have file descriptors that refer to
2345 the same open file description), the value -1 is displayed
2346 in this field for OFD locks. (Before Linux 4.14, a bug
2347 meant that the PID of the process that initially acquired
2348 the lock was displayed instead of the value -1.)
2349
2350 [6] Three colon-separated subfields that identify the major and
2351 minor device ID of the device containing the filesystem
2352 where the locked file resides, followed by the inode number
2353 of the locked file.
2354
2355 [7] The byte offset of the first byte of the lock. For BSD
2356 locks, this value is always 0.
2357
2358 [8] The byte offset of the last byte of the lock. EOF in this
2359 field means that the lock extends to the end of the file.
2360 For BSD locks, the value shown is always EOF.
2361
2362 Since Linux 4.9, the list of locks shown in /proc/locks is fil‐
2363 tered to show just the locks for the processes in the PID name‐
2364 space (see pid_namespaces(7)) for which the /proc filesystem was
2365 mounted. (In the initial PID namespace, there is no filtering
2366 of the records shown in this file.)
2367
2368 The lslocks(8) command provides a bit more information about
2369 each lock.
2370
2371 /proc/malloc (only up to and including Linux 2.2)
2372 This file is present only if CONFIG_DEBUG_MALLOC was defined
2373 during compilation.
2374
2375 /proc/meminfo
2376 This file reports statistics about memory usage on the system.
2377 It is used by free(1) to report the amount of free and used mem‐
2378 ory (both physical and swap) on the system as well as the shared
2379 memory and buffers used by the kernel. Each line of the file
2380 consists of a parameter name, followed by a colon, the value of
2381 the parameter, and an option unit of measurement (e.g., "kB").
2382 The list below describes the parameter names and the format
2383 specifier required to read the field value. Except as noted be‐
2384 low, all of the fields have been present since at least Linux
2385 2.6.0. Some fields are displayed only if the kernel was config‐
2386 ured with various options; those dependencies are noted in the
2387 list.
2388
2389 MemTotal %lu
2390 Total usable RAM (i.e., physical RAM minus a few reserved
2391 bits and the kernel binary code).
2392
2393 MemFree %lu
2394 The sum of LowFree+HighFree.
2395
2396 MemAvailable %lu (since Linux 3.14)
2397 An estimate of how much memory is available for starting
2398 new applications, without swapping.
2399
2400 Buffers %lu
2401 Relatively temporary storage for raw disk blocks that
2402 shouldn't get tremendously large (20 MB or so).
2403
2404 Cached %lu
2405 In-memory cache for files read from the disk (the page
2406 cache). Doesn't include SwapCached.
2407
2408 SwapCached %lu
2409 Memory that once was swapped out, is swapped back in but
2410 still also is in the swap file. (If memory pressure is
2411 high, these pages don't need to be swapped out again be‐
2412 cause they are already in the swap file. This saves
2413 I/O.)
2414
2415 Active %lu
2416 Memory that has been used more recently and usually not
2417 reclaimed unless absolutely necessary.
2418
2419 Inactive %lu
2420 Memory which has been less recently used. It is more el‐
2421 igible to be reclaimed for other purposes.
2422
2423 Active(anon) %lu (since Linux 2.6.28)
2424 [To be documented.]
2425
2426 Inactive(anon) %lu (since Linux 2.6.28)
2427 [To be documented.]
2428
2429 Active(file) %lu (since Linux 2.6.28)
2430 [To be documented.]
2431
2432 Inactive(file) %lu (since Linux 2.6.28)
2433 [To be documented.]
2434
2435 Unevictable %lu (since Linux 2.6.28)
2436 (From Linux 2.6.28 to Linux 2.6.30, CONFIG_UN‐
2437 EVICTABLE_LRU was required.) [To be documented.]
2438
2439 Mlocked %lu (since Linux 2.6.28)
2440 (From Linux 2.6.28 to Linux 2.6.30, CONFIG_UN‐
2441 EVICTABLE_LRU was required.) [To be documented.]
2442
2443 HighTotal %lu
2444 (Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.)
2445 Total amount of highmem. Highmem is all memory above
2446 ~860 MB of physical memory. Highmem areas are for use by
2447 user-space programs, or for the page cache. The kernel
2448 must use tricks to access this memory, making it slower
2449 to access than lowmem.
2450
2451 HighFree %lu
2452 (Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.)
2453 Amount of free highmem.
2454
2455 LowTotal %lu
2456 (Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.)
2457 Total amount of lowmem. Lowmem is memory which can be
2458 used for everything that highmem can be used for, but it
2459 is also available for the kernel's use for its own data
2460 structures. Among many other things, it is where every‐
2461 thing from Slab is allocated. Bad things happen when
2462 you're out of lowmem.
2463
2464 LowFree %lu
2465 (Starting with Linux 2.6.19, CONFIG_HIGHMEM is required.)
2466 Amount of free lowmem.
2467
2468 MmapCopy %lu (since Linux 2.6.29)
2469 (CONFIG_MMU is required.) [To be documented.]
2470
2471 SwapTotal %lu
2472 Total amount of swap space available.
2473
2474 SwapFree %lu
2475 Amount of swap space that is currently unused.
2476
2477 Dirty %lu
2478 Memory which is waiting to get written back to the disk.
2479
2480 Writeback %lu
2481 Memory which is actively being written back to the disk.
2482
2483 AnonPages %lu (since Linux 2.6.18)
2484 Non-file backed pages mapped into user-space page tables.
2485
2486 Mapped %lu
2487 Files which have been mapped into memory (with mmap(2)),
2488 such as libraries.
2489
2490 Shmem %lu (since Linux 2.6.32)
2491 Amount of memory consumed in tmpfs(5) filesystems.
2492
2493 KReclaimable %lu (since Linux 4.20)
2494 Kernel allocations that the kernel will attempt to re‐
2495 claim under memory pressure. Includes SReclaimable (be‐
2496 low), and other direct allocations with a shrinker.
2497
2498 Slab %lu
2499 In-kernel data structures cache. (See slabinfo(5).)
2500
2501 SReclaimable %lu (since Linux 2.6.19)
2502 Part of Slab, that might be reclaimed, such as caches.
2503
2504 SUnreclaim %lu (since Linux 2.6.19)
2505 Part of Slab, that cannot be reclaimed on memory pres‐
2506 sure.
2507
2508 KernelStack %lu (since Linux 2.6.32)
2509 Amount of memory allocated to kernel stacks.
2510
2511 PageTables %lu (since Linux 2.6.18)
2512 Amount of memory dedicated to the lowest level of page
2513 tables.
2514
2515 Quicklists %lu (since Linux 2.6.27)
2516 (CONFIG_QUICKLIST is required.) [To be documented.]
2517
2518 NFS_Unstable %lu (since Linux 2.6.18)
2519 NFS pages sent to the server, but not yet committed to
2520 stable storage.
2521
2522 Bounce %lu (since Linux 2.6.18)
2523 Memory used for block device "bounce buffers".
2524
2525 WritebackTmp %lu (since Linux 2.6.26)
2526 Memory used by FUSE for temporary writeback buffers.
2527
2528 CommitLimit %lu (since Linux 2.6.10)
2529 This is the total amount of memory currently available to
2530 be allocated on the system, expressed in kilobytes. This
2531 limit is adhered to only if strict overcommit accounting
2532 is enabled (mode 2 in /proc/sys/vm/overcommit_memory).
2533 The limit is calculated according to the formula de‐
2534 scribed under /proc/sys/vm/overcommit_memory. For fur‐
2535 ther details, see the kernel source file Documenta‐
2536 tion/vm/overcommit-accounting.rst.
2537
2538 Committed_AS %lu
2539 The amount of memory presently allocated on the system.
2540 The committed memory is a sum of all of the memory which
2541 has been allocated by processes, even if it has not been
2542 "used" by them as of yet. A process which allocates 1 GB
2543 of memory (using malloc(3) or similar), but touches only
2544 300 MB of that memory will show up as using only 300 MB
2545 of memory even if it has the address space allocated for
2546 the entire 1 GB.
2547
2548 This 1 GB is memory which has been "committed" to by the
2549 VM and can be used at any time by the allocating applica‐
2550 tion. With strict overcommit enabled on the system (mode
2551 2 in /proc/sys/vm/overcommit_memory), allocations which
2552 would exceed the CommitLimit will not be permitted. This
2553 is useful if one needs to guarantee that processes will
2554 not fail due to lack of memory once that memory has been
2555 successfully allocated.
2556
2557 VmallocTotal %lu
2558 Total size of vmalloc memory area.
2559
2560 VmallocUsed %lu
2561 Amount of vmalloc area which is used. Since Linux 4.4,
2562 this field is no longer calculated, and is hard coded as
2563 0. See /proc/vmallocinfo.
2564
2565 VmallocChunk %lu
2566 Largest contiguous block of vmalloc area which is free.
2567 Since Linux 4.4, this field is no longer calculated and
2568 is hard coded as 0. See /proc/vmallocinfo.
2569
2570 HardwareCorrupted %lu (since Linux 2.6.32)
2571 (CONFIG_MEMORY_FAILURE is required.) [To be documented.]
2572
2573 LazyFree %lu (since Linux 4.12)
2574 Shows the amount of memory marked by madvise(2)
2575 MADV_FREE.
2576
2577 AnonHugePages %lu (since Linux 2.6.38)
2578 (CONFIG_TRANSPARENT_HUGEPAGE is required.) Non-file
2579 backed huge pages mapped into user-space page tables.
2580
2581 ShmemHugePages %lu (since Linux 4.8)
2582 (CONFIG_TRANSPARENT_HUGEPAGE is required.) Memory used
2583 by shared memory (shmem) and tmpfs(5) allocated with huge
2584 pages.
2585
2586 ShmemPmdMapped %lu (since Linux 4.8)
2587 (CONFIG_TRANSPARENT_HUGEPAGE is required.) Shared memory
2588 mapped into user space with huge pages.
2589
2590 CmaTotal %lu (since Linux 3.1)
2591 Total CMA (Contiguous Memory Allocator) pages. (CON‐
2592 FIG_CMA is required.)
2593
2594 CmaFree %lu (since Linux 3.1)
2595 Free CMA (Contiguous Memory Allocator) pages. (CON‐
2596 FIG_CMA is required.)
2597
2598 HugePages_Total %lu
2599 (CONFIG_HUGETLB_PAGE is required.) The size of the pool
2600 of huge pages.
2601
2602 HugePages_Free %lu
2603 (CONFIG_HUGETLB_PAGE is required.) The number of huge
2604 pages in the pool that are not yet allocated.
2605
2606 HugePages_Rsvd %lu (since Linux 2.6.17)
2607 (CONFIG_HUGETLB_PAGE is required.) This is the number of
2608 huge pages for which a commitment to allocate from the
2609 pool has been made, but no allocation has yet been made.
2610 These reserved huge pages guarantee that an application
2611 will be able to allocate a huge page from the pool of
2612 huge pages at fault time.
2613
2614 HugePages_Surp %lu (since Linux 2.6.24)
2615 (CONFIG_HUGETLB_PAGE is required.) This is the number of
2616 huge pages in the pool above the value in
2617 /proc/sys/vm/nr_hugepages. The maximum number of surplus
2618 huge pages is controlled by /proc/sys/vm/nr_overcom‐
2619 mit_hugepages.
2620
2621 Hugepagesize %lu
2622 (CONFIG_HUGETLB_PAGE is required.) The size of huge
2623 pages.
2624
2625 DirectMap4k %lu (since Linux 2.6.27)
2626 Number of bytes of RAM linearly mapped by kernel in 4 kB
2627 pages. (x86.)
2628
2629 DirectMap4M %lu (since Linux 2.6.27)
2630 Number of bytes of RAM linearly mapped by kernel in 4 MB
2631 pages. (x86 with CONFIG_X86_64 or CONFIG_X86_PAE en‐
2632 abled.)
2633
2634 DirectMap2M %lu (since Linux 2.6.27)
2635 Number of bytes of RAM linearly mapped by kernel in 2 MB
2636 pages. (x86 with neither CONFIG_X86_64 nor CON‐
2637 FIG_X86_PAE enabled.)
2638
2639 DirectMap1G %lu (since Linux 2.6.27)
2640 (x86 with CONFIG_X86_64 and CONFIG_X86_DIRECT_GBPAGES en‐
2641 abled.)
2642
2643 /proc/modules
2644 A text list of the modules that have been loaded by the system.
2645 See also lsmod(8).
2646
2647 /proc/mounts
2648 Before Linux 2.4.19, this file was a list of all the filesystems
2649 currently mounted on the system. With the introduction of per-
2650 process mount namespaces in Linux 2.4.19 (see mount_name‐
2651 spaces(7)), this file became a link to /proc/self/mounts, which
2652 lists the mounts of the process's own mount namespace. The for‐
2653 mat of this file is documented in fstab(5).
2654
2655 /proc/mtrr
2656 Memory Type Range Registers. See the Linux kernel source file
2657 Documentation/x86/mtrr.rst (or Documentation/x86/mtrr.txt before
2658 Linux 5.2, or Documentation/mtrr.txt before Linux 2.6.28) for
2659 details.
2660
2661 /proc/net
2662 This directory contains various files and subdirectories con‐
2663 taining information about the networking layer. The files con‐
2664 tain ASCII structures and are, therefore, readable with cat(1).
2665 However, the standard netstat(8) suite provides much cleaner ac‐
2666 cess to these files.
2667
2668 With the advent of network namespaces, various information re‐
2669 lating to the network stack is virtualized (see network_name‐
2670 spaces(7)). Thus, since Linux 2.6.25, /proc/net is a symbolic
2671 link to the directory /proc/self/net, which contains the same
2672 files and directories as listed below. However, these files and
2673 directories now expose information for the network namespace of
2674 which the process is a member.
2675
2676 /proc/net/arp
2677 This holds an ASCII readable dump of the kernel ARP table used
2678 for address resolutions. It will show both dynamically learned
2679 and preprogrammed ARP entries. The format is:
2680
2681 IP address HW type Flags HW address Mask Device
2682 192.168.0.50 0x1 0x2 00:50:BF:25:68:F3 * eth0
2683 192.168.0.250 0x1 0xc 00:00:00:00:00:00 * eth0
2684
2685 Here "IP address" is the IPv4 address of the machine and the "HW
2686 type" is the hardware type of the address from RFC 826. The
2687 flags are the internal flags of the ARP structure (as defined in
2688 /usr/include/linux/if_arp.h) and the "HW address" is the data
2689 link layer mapping for that IP address if it is known.
2690
2691 /proc/net/dev
2692 The dev pseudo-file contains network device status information.
2693 This gives the number of received and sent packets, the number
2694 of errors and collisions and other basic statistics. These are
2695 used by the ifconfig(8) program to report device status. The
2696 format is:
2697
2698 Inter-| Receive | Transmit
2699 face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
2700 lo: 2776770 11307 0 0 0 0 0 0 2776770 11307 0 0 0 0 0 0
2701 eth0: 1215645 2751 0 0 0 0 0 0 1782404 4324 0 0 0 427 0 0
2702 ppp0: 1622270 5552 1 0 0 0 0 0 354130 5669 0 0 0 0 0 0
2703 tap0: 7714 81 0 0 0 0 0 0 7714 81 0 0 0 0 0 0
2704
2705 /proc/net/dev_mcast
2706 Defined in /usr/src/linux/net/core/dev_mcast.c:
2707
2708 indx interface_name dmi_u dmi_g dmi_address
2709 2 eth0 1 0 01005e000001
2710 3 eth1 1 0 01005e000001
2711 4 eth2 1 0 01005e000001
2712
2713 /proc/net/igmp
2714 Internet Group Management Protocol. Defined in
2715 /usr/src/linux/net/core/igmp.c.
2716
2717 /proc/net/rarp
2718 This file uses the same format as the arp file and contains the
2719 current reverse mapping database used to provide rarp(8) reverse
2720 address lookup services. If RARP is not configured into the
2721 kernel, this file will not be present.
2722
2723 /proc/net/raw
2724 Holds a dump of the RAW socket table. Much of the information
2725 is not of use apart from debugging. The "sl" value is the ker‐
2726 nel hash slot for the socket, the "local_address" is the local
2727 address and protocol number pair. "St" is the internal status
2728 of the socket. The "tx_queue" and "rx_queue" are the outgoing
2729 and incoming data queue in terms of kernel memory usage. The
2730 "tr", "tm->when", and "rexmits" fields are not used by RAW. The
2731 "uid" field holds the effective UID of the creator of the
2732 socket.
2733
2734 /proc/net/snmp
2735 This file holds the ASCII data needed for the IP, ICMP, TCP, and
2736 UDP management information bases for an SNMP agent.
2737
2738 /proc/net/tcp
2739 Holds a dump of the TCP socket table. Much of the information
2740 is not of use apart from debugging. The "sl" value is the ker‐
2741 nel hash slot for the socket, the "local_address" is the local
2742 address and port number pair. The "rem_address" is the remote
2743 address and port number pair (if connected). "St" is the inter‐
2744 nal status of the socket. The "tx_queue" and "rx_queue" are the
2745 outgoing and incoming data queue in terms of kernel memory us‐
2746 age. The "tr", "tm->when", and "rexmits" fields hold internal
2747 information of the kernel socket state and are useful only for
2748 debugging. The "uid" field holds the effective UID of the cre‐
2749 ator of the socket.
2750
2751 /proc/net/udp
2752 Holds a dump of the UDP socket table. Much of the information
2753 is not of use apart from debugging. The "sl" value is the ker‐
2754 nel hash slot for the socket, the "local_address" is the local
2755 address and port number pair. The "rem_address" is the remote
2756 address and port number pair (if connected). "St" is the inter‐
2757 nal status of the socket. The "tx_queue" and "rx_queue" are the
2758 outgoing and incoming data queue in terms of kernel memory us‐
2759 age. The "tr", "tm->when", and "rexmits" fields are not used by
2760 UDP. The "uid" field holds the effective UID of the creator of
2761 the socket. The format is:
2762
2763 sl local_address rem_address st tx_queue rx_queue tr rexmits tm->when uid
2764 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
2765 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
2766 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
2767
2768 /proc/net/unix
2769 Lists the UNIX domain sockets present within the system and
2770 their status. The format is:
2771
2772 Num RefCount Protocol Flags Type St Inode Path
2773 0: 00000002 00000000 00000000 0001 03 42
2774 1: 00000001 00000000 00010000 0001 01 1948 /dev/printer
2775
2776 The fields are as follows:
2777
2778 Num: the kernel table slot number.
2779
2780 RefCount: the number of users of the socket.
2781
2782 Protocol: currently always 0.
2783
2784 Flags: the internal kernel flags holding the status of the
2785 socket.
2786
2787 Type: the socket type. For SOCK_STREAM sockets, this is
2788 0001; for SOCK_DGRAM sockets, it is 0002; and for
2789 SOCK_SEQPACKET sockets, it is 0005.
2790
2791 St: the internal state of the socket.
2792
2793 Inode: the inode number of the socket.
2794
2795 Path: the bound pathname (if any) of the socket. Sockets in
2796 the abstract namespace are included in the list, and
2797 are shown with a Path that commences with the charac‐
2798 ter '@'.
2799
2800 /proc/net/netfilter/nfnetlink_queue
2801 This file contains information about netfilter user-space queue‐
2802 ing, if used. Each line represents a queue. Queues that have
2803 not been subscribed to by user space are not shown.
2804
2805 1 4207 0 2 65535 0 0 0 1
2806 (1) (2) (3)(4) (5) (6) (7) (8)
2807
2808 The fields in each line are:
2809
2810 (1) The ID of the queue. This matches what is specified in the
2811 --queue-num or --queue-balance options to the iptables(8)
2812 NFQUEUE target. See iptables-extensions(8) for more infor‐
2813 mation.
2814
2815 (2) The netlink port ID subscribed to the queue.
2816
2817 (3) The number of packets currently queued and waiting to be
2818 processed by the application.
2819
2820 (4) The copy mode of the queue. It is either 1 (metadata only)
2821 or 2 (also copy payload data to user space).
2822
2823 (5) Copy range; that is, how many bytes of packet payload
2824 should be copied to user space at most.
2825
2826 (6) queue dropped. Number of packets that had to be dropped by
2827 the kernel because too many packets are already waiting for
2828 user space to send back the mandatory accept/drop verdicts.
2829
2830 (7) queue user dropped. Number of packets that were dropped
2831 within the netlink subsystem. Such drops usually happen
2832 when the corresponding socket buffer is full; that is, user
2833 space is not able to read messages fast enough.
2834
2835 (8) sequence number. Every queued packet is associated with a
2836 (32-bit) monotonically increasing sequence number. This
2837 shows the ID of the most recent packet queued.
2838
2839 The last number exists only for compatibility reasons and is al‐
2840 ways 1.
2841
2842 /proc/partitions
2843 Contains the major and minor numbers of each partition as well
2844 as the number of 1024-byte blocks and the partition name.
2845
2846 /proc/pci
2847 This is a listing of all PCI devices found during kernel ini‐
2848 tialization and their configuration.
2849
2850 This file has been deprecated in favor of a new /proc interface
2851 for PCI (/proc/bus/pci). It became optional in Linux 2.2
2852 (available with CONFIG_PCI_OLD_PROC set at kernel compilation).
2853 It became once more nonoptionally enabled in Linux 2.4. Next,
2854 it was deprecated in Linux 2.6 (still available with CON‐
2855 FIG_PCI_LEGACY_PROC set), and finally removed altogether since
2856 Linux 2.6.17.
2857
2858 /proc/profile (since Linux 2.4)
2859 This file is present only if the kernel was booted with the pro‐
2860 file=1 command-line option. It exposes kernel profiling infor‐
2861 mation in a binary format for use by readprofile(1). Writing
2862 (e.g., an empty string) to this file resets the profiling coun‐
2863 ters; on some architectures, writing a binary integer "profiling
2864 multiplier" of size sizeof(int) sets the profiling interrupt
2865 frequency.
2866
2867 /proc/scsi
2868 A directory with the scsi mid-level pseudo-file and various SCSI
2869 low-level driver directories, which contain a file for each SCSI
2870 host in this system, all of which give the status of some part
2871 of the SCSI IO subsystem. These files contain ASCII structures
2872 and are, therefore, readable with cat(1).
2873
2874 You can also write to some of the files to reconfigure the sub‐
2875 system or switch certain features on or off.
2876
2877 /proc/scsi/scsi
2878 This is a listing of all SCSI devices known to the kernel. The
2879 listing is similar to the one seen during bootup. scsi cur‐
2880 rently supports only the add-single-device command which allows
2881 root to add a hotplugged device to the list of known devices.
2882
2883 The command
2884
2885 echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi
2886
2887 will cause host scsi1 to scan on SCSI channel 0 for a device on
2888 ID 5 LUN 0. If there is already a device known on this address
2889 or the address is invalid, an error will be returned.
2890
2891 /proc/scsi/drivername
2892 drivername can currently be NCR53c7xx, aha152x, aha1542,
2893 aha1740, aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000,
2894 pas16, qlogic, scsi_debug, seagate, t128, u15-24f, ultrastore,
2895 or wd7000. These directories show up for all drivers that reg‐
2896 istered at least one SCSI HBA. Every directory contains one
2897 file per registered host. Every host-file is named after the
2898 number the host was assigned during initialization.
2899
2900 Reading these files will usually show driver and host configura‐
2901 tion, statistics, and so on.
2902
2903 Writing to these files allows different things on different
2904 hosts. For example, with the latency and nolatency commands,
2905 root can switch on and off command latency measurement code in
2906 the eata_dma driver. With the lockup and unlock commands, root
2907 can control bus lockups simulated by the scsi_debug driver.
2908
2909 /proc/self
2910 This directory refers to the process accessing the /proc
2911 filesystem, and is identical to the /proc directory named by the
2912 process ID of the same process.
2913
2914 /proc/slabinfo
2915 Information about kernel caches. See slabinfo(5) for details.
2916
2917 /proc/stat
2918 kernel/system statistics. Varies with architecture. Common en‐
2919 tries include:
2920
2921 cpu 10132153 290696 3084719 46828483 16683 0 25195 0 175628 0
2922 cpu0 1393280 32966 572056 13343292 6130 0 17875 0 23933 0
2923 The amount of time, measured in units of USER_HZ
2924 (1/100ths of a second on most architectures, use
2925 sysconf(_SC_CLK_TCK) to obtain the right value), that the
2926 system ("cpu" line) or the specific CPU ("cpuN" line)
2927 spent in various states:
2928
2929 user (1) Time spent in user mode.
2930
2931 nice (2) Time spent in user mode with low priority
2932 (nice).
2933
2934 system (3) Time spent in system mode.
2935
2936 idle (4) Time spent in the idle task. This value
2937 should be USER_HZ times the second entry in the
2938 /proc/uptime pseudo-file.
2939
2940 iowait (since Linux 2.5.41)
2941 (5) Time waiting for I/O to complete. This value
2942 is not reliable, for the following reasons:
2943
2944 • The CPU will not wait for I/O to complete;
2945 iowait is the time that a task is waiting for
2946 I/O to complete. When a CPU goes into idle
2947 state for outstanding task I/O, another task
2948 will be scheduled on this CPU.
2949
2950 • On a multi-core CPU, the task waiting for I/O
2951 to complete is not running on any CPU, so the
2952 iowait of each CPU is difficult to calculate.
2953
2954 • The value in this field may decrease in certain
2955 conditions.
2956
2957 irq (since Linux 2.6.0)
2958 (6) Time servicing interrupts.
2959
2960 softirq (since Linux 2.6.0)
2961 (7) Time servicing softirqs.
2962
2963 steal (since Linux 2.6.11)
2964 (8) Stolen time, which is the time spent in other
2965 operating systems when running in a virtualized
2966 environment
2967
2968 guest (since Linux 2.6.24)
2969 (9) Time spent running a virtual CPU for guest op‐
2970 erating systems under the control of the Linux
2971 kernel.
2972
2973 guest_nice (since Linux 2.6.33)
2974 (10) Time spent running a niced guest (virtual CPU
2975 for guest operating systems under the control of
2976 the Linux kernel).
2977
2978 page 5741 1808
2979 The number of pages the system paged in and the number
2980 that were paged out (from disk).
2981
2982 swap 1 0
2983 The number of swap pages that have been brought in and
2984 out.
2985
2986 intr 1462898
2987 This line shows counts of interrupts serviced since boot
2988 time, for each of the possible system interrupts. The
2989 first column is the total of all interrupts serviced in‐
2990 cluding unnumbered architecture specific interrupts; each
2991 subsequent column is the total for that particular num‐
2992 bered interrupt. Unnumbered interrupts are not shown,
2993 only summed into the total.
2994
2995 disk_io: (2,0):(31,30,5764,1,2) (3,0):...
2996 (major,disk_idx):(noinfo, read_io_ops, blks_read,
2997 write_io_ops, blks_written)
2998 (Linux 2.4 only)
2999
3000 ctxt 115315
3001 The number of context switches that the system underwent.
3002
3003 btime 769041601
3004 boot time, in seconds since the Epoch, 1970-01-01
3005 00:00:00 +0000 (UTC).
3006
3007 processes 86031
3008 Number of forks since boot.
3009
3010 procs_running 6
3011 Number of processes in runnable state. (Linux 2.5.45 on‐
3012 ward.)
3013
3014 procs_blocked 2
3015 Number of processes blocked waiting for I/O to complete.
3016 (Linux 2.5.45 onward.)
3017
3018 softirq 229245889 94 60001584 13619 5175704 2471304 28 51212741
3019 59130143 0 51240672
3020 This line shows the number of softirq for all CPUs. The
3021 first column is the total of all softirqs and each subse‐
3022 quent column is the total for particular softirq. (Linux
3023 2.6.31 onward.)
3024
3025 /proc/swaps
3026 Swap areas in use. See also swapon(8).
3027
3028 /proc/sys
3029 This directory (present since Linux 1.3.57) contains a number of
3030 files and subdirectories corresponding to kernel variables.
3031 These variables can be read and in some cases modified using the
3032 /proc filesystem, and the (deprecated) sysctl(2) system call.
3033
3034 String values may be terminated by either '\0' or '\n'.
3035
3036 Integer and long values may be written either in decimal or in
3037 hexadecimal notation (e.g., 0x3FFF). When writing multiple in‐
3038 teger or long values, these may be separated by any of the fol‐
3039 lowing whitespace characters: ' ', '\t', or '\n'. Using other
3040 separators leads to the error EINVAL.
3041
3042 /proc/sys/abi (since Linux 2.4.10)
3043 This directory may contain files with application binary infor‐
3044 mation. See the Linux kernel source file Documenta‐
3045 tion/sysctl/abi.rst (or Documentation/sysctl/abi.txt before
3046 Linux 5.3) for more information.
3047
3048 /proc/sys/debug
3049 This directory may be empty.
3050
3051 /proc/sys/dev
3052 This directory contains device-specific information (e.g.,
3053 dev/cdrom/info). On some systems, it may be empty.
3054
3055 /proc/sys/fs
3056 This directory contains the files and subdirectories for kernel
3057 variables related to filesystems.
3058
3059 /proc/sys/fs/aio-max-nr and /proc/sys/fs/aio-nr (since Linux 2.6.4)
3060 aio-nr is the running total of the number of events specified by
3061 io_setup(2) calls for all currently active AIO contexts. If
3062 aio-nr reaches aio-max-nr, then io_setup(2) will fail with the
3063 error EAGAIN. Raising aio-max-nr does not result in the preal‐
3064 location or resizing of any kernel data structures.
3065
3066 /proc/sys/fs/binfmt_misc
3067 Documentation for files in this directory can be found in the
3068 Linux kernel source in the file Documentation/ad‐
3069 min-guide/binfmt-misc.rst (or in Documentation/binfmt_misc.txt
3070 on older kernels).
3071
3072 /proc/sys/fs/dentry-state (since Linux 2.2)
3073 This file contains information about the status of the directory
3074 cache (dcache). The file contains six numbers, nr_dentry,
3075 nr_unused, age_limit (age in seconds), want_pages (pages re‐
3076 quested by system) and two dummy values.
3077
3078 • nr_dentry is the number of allocated dentries (dcache en‐
3079 tries). This field is unused in Linux 2.2.
3080
3081 • nr_unused is the number of unused dentries.
3082
3083 • age_limit is the age in seconds after which dcache entries
3084 can be reclaimed when memory is short.
3085
3086 • want_pages is nonzero when the kernel has called
3087 shrink_dcache_pages() and the dcache isn't pruned yet.
3088
3089 /proc/sys/fs/dir-notify-enable
3090 This file can be used to disable or enable the dnotify interface
3091 described in fcntl(2) on a system-wide basis. A value of 0 in
3092 this file disables the interface, and a value of 1 enables it.
3093
3094 /proc/sys/fs/dquot-max
3095 This file shows the maximum number of cached disk quota entries.
3096 On some (2.4) systems, it is not present. If the number of free
3097 cached disk quota entries is very low and you have some awesome
3098 number of simultaneous system users, you might want to raise the
3099 limit.
3100
3101 /proc/sys/fs/dquot-nr
3102 This file shows the number of allocated disk quota entries and
3103 the number of free disk quota entries.
3104
3105 /proc/sys/fs/epoll (since Linux 2.6.28)
3106 This directory contains the file max_user_watches, which can be
3107 used to limit the amount of kernel memory consumed by the epoll
3108 interface. For further details, see epoll(7).
3109
3110 /proc/sys/fs/file-max
3111 This file defines a system-wide limit on the number of open
3112 files for all processes. System calls that fail when encounter‐
3113 ing this limit fail with the error ENFILE. (See also setr‐
3114 limit(2), which can be used by a process to set the per-process
3115 limit, RLIMIT_NOFILE, on the number of files it may open.) If
3116 you get lots of error messages in the kernel log about running
3117 out of file handles (open file descriptions) (look for "VFS:
3118 file-max limit <number> reached"), try increasing this value:
3119
3120 echo 100000 > /proc/sys/fs/file-max
3121
3122 Privileged processes (CAP_SYS_ADMIN) can override the file-max
3123 limit.
3124
3125 /proc/sys/fs/file-nr
3126 This (read-only) file contains three numbers: the number of al‐
3127 located file handles (i.e., the number of open file descrip‐
3128 tions; see open(2)); the number of free file handles; and the
3129 maximum number of file handles (i.e., the same value as
3130 /proc/sys/fs/file-max). If the number of allocated file handles
3131 is close to the maximum, you should consider increasing the max‐
3132 imum. Before Linux 2.6, the kernel allocated file handles dy‐
3133 namically, but it didn't free them again. Instead the free file
3134 handles were kept in a list for reallocation; the "free file
3135 handles" value indicates the size of that list. A large number
3136 of free file handles indicates that there was a past peak in the
3137 usage of open file handles. Since Linux 2.6, the kernel does
3138 deallocate freed file handles, and the "free file handles" value
3139 is always zero.
3140
3141 /proc/sys/fs/inode-max (only present until Linux 2.2)
3142 This file contains the maximum number of in-memory inodes. This
3143 value should be 3–4 times larger than the value in file-max,
3144 since stdin, stdout and network sockets also need an inode to
3145 handle them. When you regularly run out of inodes, you need to
3146 increase this value.
3147
3148 Starting with Linux 2.4, there is no longer a static limit on
3149 the number of inodes, and this file is removed.
3150
3151 /proc/sys/fs/inode-nr
3152 This file contains the first two values from inode-state.
3153
3154 /proc/sys/fs/inode-state
3155 This file contains seven numbers: nr_inodes, nr_free_inodes,
3156 preshrink, and four dummy values (always zero).
3157
3158 nr_inodes is the number of inodes the system has allocated.
3159 nr_free_inodes represents the number of free inodes.
3160
3161 preshrink is nonzero when the nr_inodes > inode-max and the sys‐
3162 tem needs to prune the inode list instead of allocating more;
3163 since Linux 2.4, this field is a dummy value (always zero).
3164
3165 /proc/sys/fs/inotify (since Linux 2.6.13)
3166 This directory contains files max_queued_events, max_user_in‐
3167 stances, and max_user_watches, that can be used to limit the
3168 amount of kernel memory consumed by the inotify interface. For
3169 further details, see inotify(7).
3170
3171 /proc/sys/fs/lease-break-time
3172 This file specifies the grace period that the kernel grants to a
3173 process holding a file lease (fcntl(2)) after it has sent a sig‐
3174 nal to that process notifying it that another process is waiting
3175 to open the file. If the lease holder does not remove or down‐
3176 grade the lease within this grace period, the kernel forcibly
3177 breaks the lease.
3178
3179 /proc/sys/fs/leases-enable
3180 This file can be used to enable or disable file leases (fc‐
3181 ntl(2)) on a system-wide basis. If this file contains the value
3182 0, leases are disabled. A nonzero value enables leases.
3183
3184 /proc/sys/fs/mount-max (since Linux 4.9)
3185 The value in this file specifies the maximum number of mounts
3186 that may exist in a mount namespace. The default value in this
3187 file is 100,000.
3188
3189 /proc/sys/fs/mqueue (since Linux 2.6.6)
3190 This directory contains files msg_max, msgsize_max, and
3191 queues_max, controlling the resources used by POSIX message
3192 queues. See mq_overview(7) for details.
3193
3194 /proc/sys/fs/nr_open (since Linux 2.6.25)
3195 This file imposes a ceiling on the value to which the
3196 RLIMIT_NOFILE resource limit can be raised (see getrlimit(2)).
3197 This ceiling is enforced for both unprivileged and privileged
3198 process. The default value in this file is 1048576. (Before
3199 Linux 2.6.25, the ceiling for RLIMIT_NOFILE was hard-coded to
3200 the same value.)
3201
3202 /proc/sys/fs/overflowgid and /proc/sys/fs/overflowuid
3203 These files allow you to change the value of the fixed UID and
3204 GID. The default is 65534. Some filesystems support only
3205 16-bit UIDs and GIDs, although in Linux UIDs and GIDs are 32
3206 bits. When one of these filesystems is mounted with writes en‐
3207 abled, any UID or GID that would exceed 65535 is translated to
3208 the overflow value before being written to disk.
3209
3210 /proc/sys/fs/pipe-max-size (since Linux 2.6.35)
3211 See pipe(7).
3212
3213 /proc/sys/fs/pipe-user-pages-hard (since Linux 4.5)
3214 See pipe(7).
3215
3216 /proc/sys/fs/pipe-user-pages-soft (since Linux 4.5)
3217 See pipe(7).
3218
3219 /proc/sys/fs/protected_fifos (since Linux 4.19)
3220 The value in this file is/can be set to one of the following:
3221
3222 0 Writing to FIFOs is unrestricted.
3223
3224 1 Don't allow O_CREAT open(2) on FIFOs that the caller doesn't
3225 own in world-writable sticky directories, unless the FIFO is
3226 owned by the owner of the directory.
3227
3228 2 As for the value 1, but the restriction also applies to
3229 group-writable sticky directories.
3230
3231 The intent of the above protections is to avoid unintentional
3232 writes to an attacker-controlled FIFO when a program expected to
3233 create a regular file.
3234
3235 /proc/sys/fs/protected_hardlinks (since Linux 3.6)
3236 When the value in this file is 0, no restrictions are placed on
3237 the creation of hard links (i.e., this is the historical behav‐
3238 ior before Linux 3.6). When the value in this file is 1, a hard
3239 link can be created to a target file only if one of the follow‐
3240 ing conditions is true:
3241
3242 • The calling process has the CAP_FOWNER capability in its user
3243 namespace and the file UID has a mapping in the namespace.
3244
3245 • The filesystem UID of the process creating the link matches
3246 the owner (UID) of the target file (as described in creden‐
3247 tials(7), a process's filesystem UID is normally the same as
3248 its effective UID).
3249
3250 • All of the following conditions are true:
3251
3252 • the target is a regular file;
3253
3254 • the target file does not have its set-user-ID mode bit
3255 enabled;
3256
3257 • the target file does not have both its set-group-ID and
3258 group-executable mode bits enabled; and
3259
3260 • the caller has permission to read and write the target
3261 file (either via the file's permissions mask or because
3262 it has suitable capabilities).
3263
3264 The default value in this file is 0. Setting the value to 1
3265 prevents a longstanding class of security issues caused by hard-
3266 link-based time-of-check, time-of-use races, most commonly seen
3267 in world-writable directories such as /tmp. The common method
3268 of exploiting this flaw is to cross privilege boundaries when
3269 following a given hard link (i.e., a root process follows a hard
3270 link created by another user). Additionally, on systems without
3271 separated partitions, this stops unauthorized users from "pin‐
3272 ning" vulnerable set-user-ID and set-group-ID files against be‐
3273 ing upgraded by the administrator, or linking to special files.
3274
3275 /proc/sys/fs/protected_regular (since Linux 4.19)
3276 The value in this file is/can be set to one of the following:
3277
3278 0 Writing to regular files is unrestricted.
3279
3280 1 Don't allow O_CREAT open(2) on regular files that the caller
3281 doesn't own in world-writable sticky directories, unless the
3282 regular file is owned by the owner of the directory.
3283
3284 2 As for the value 1, but the restriction also applies to
3285 group-writable sticky directories.
3286
3287 The intent of the above protections is similar to protected_fi‐
3288 fos, but allows an application to avoid writes to an attacker-
3289 controlled regular file, where the application expected to cre‐
3290 ate one.
3291
3292 /proc/sys/fs/protected_symlinks (since Linux 3.6)
3293 When the value in this file is 0, no restrictions are placed on
3294 following symbolic links (i.e., this is the historical behavior
3295 before Linux 3.6). When the value in this file is 1, symbolic
3296 links are followed only in the following circumstances:
3297
3298 • the filesystem UID of the process following the link matches
3299 the owner (UID) of the symbolic link (as described in creden‐
3300 tials(7), a process's filesystem UID is normally the same as
3301 its effective UID);
3302
3303 • the link is not in a sticky world-writable directory; or
3304
3305 • the symbolic link and its parent directory have the same
3306 owner (UID)
3307
3308 A system call that fails to follow a symbolic link because of
3309 the above restrictions returns the error EACCES in errno.
3310
3311 The default value in this file is 0. Setting the value to 1
3312 avoids a longstanding class of security issues based on time-of-
3313 check, time-of-use races when accessing symbolic links.
3314
3315 /proc/sys/fs/suid_dumpable (since Linux 2.6.13)
3316 The value in this file is assigned to a process's "dumpable"
3317 flag in the circumstances described in prctl(2). In effect, the
3318 value in this file determines whether core dump files are pro‐
3319 duced for set-user-ID or otherwise protected/tainted binaries.
3320 The "dumpable" setting also affects the ownership of files in a
3321 process's /proc/pid directory, as described above.
3322
3323 Three different integer values can be specified:
3324
3325 0 (default)
3326 This provides the traditional (pre-Linux 2.6.13) behav‐
3327 ior. A core dump will not be produced for a process
3328 which has changed credentials (by calling seteuid(2),
3329 setgid(2), or similar, or by executing a set-user-ID or
3330 set-group-ID program) or whose binary does not have read
3331 permission enabled.
3332
3333 1 ("debug")
3334 All processes dump core when possible. (Reasons why a
3335 process might nevertheless not dump core are described in
3336 core(5).) The core dump is owned by the filesystem user
3337 ID of the dumping process and no security is applied.
3338 This is intended for system debugging situations only:
3339 this mode is insecure because it allows unprivileged
3340 users to examine the memory contents of privileged pro‐
3341 cesses.
3342
3343 2 ("suidsafe")
3344 Any binary which normally would not be dumped (see "0"
3345 above) is dumped readable by root only. This allows the
3346 user to remove the core dump file but not to read it.
3347 For security reasons core dumps in this mode will not
3348 overwrite one another or other files. This mode is ap‐
3349 propriate when administrators are attempting to debug
3350 problems in a normal environment.
3351
3352 Additionally, since Linux 3.6, /proc/sys/kernel/core_pat‐
3353 tern must either be an absolute pathname or a pipe com‐
3354 mand, as detailed in core(5). Warnings will be written
3355 to the kernel log if core_pattern does not follow these
3356 rules, and no core dump will be produced.
3357
3358 For details of the effect of a process's "dumpable" setting on
3359 ptrace access mode checking, see ptrace(2).
3360
3361 /proc/sys/fs/super-max
3362 This file controls the maximum number of superblocks, and thus
3363 the maximum number of mounted filesystems the kernel can have.
3364 You need increase only super-max if you need to mount more
3365 filesystems than the current value in super-max allows you to.
3366
3367 /proc/sys/fs/super-nr
3368 This file contains the number of filesystems currently mounted.
3369
3370 /proc/sys/kernel
3371 This directory contains files controlling a range of kernel pa‐
3372 rameters, as described below.
3373
3374 /proc/sys/kernel/acct
3375 This file contains three numbers: highwater, lowwater, and fre‐
3376 quency. If BSD-style process accounting is enabled, these val‐
3377 ues control its behavior. If free space on filesystem where the
3378 log lives goes below lowwater percent, accounting suspends. If
3379 free space gets above highwater percent, accounting resumes.
3380 frequency determines how often the kernel checks the amount of
3381 free space (value is in seconds). Default values are 4, 2, and
3382 30. That is, suspend accounting if 2% or less space is free;
3383 resume it if 4% or more space is free; consider information
3384 about amount of free space valid for 30 seconds.
3385
3386 /proc/sys/kernel/auto_msgmni (Linux 2.6.27 to Linux 3.18)
3387 From Linux 2.6.27 to Linux 3.18, this file was used to control
3388 recomputing of the value in /proc/sys/kernel/msgmni upon the ad‐
3389 dition or removal of memory or upon IPC namespace creation/re‐
3390 moval. Echoing "1" into this file enabled msgmni automatic re‐
3391 computing (and triggered a recomputation of msgmni based on the
3392 current amount of available memory and number of IPC name‐
3393 spaces). Echoing "0" disabled automatic recomputing. (Auto‐
3394 matic recomputing was also disabled if a value was explicitly
3395 assigned to /proc/sys/kernel/msgmni.) The default value in
3396 auto_msgmni was 1.
3397
3398 Since Linux 3.19, the content of this file has no effect (be‐
3399 cause msgmni defaults to near the maximum value possible), and
3400 reads from this file always return the value "0".
3401
3402 /proc/sys/kernel/cap_last_cap (since Linux 3.2)
3403 See capabilities(7).
3404
3405 /proc/sys/kernel/cap-bound (from Linux 2.2 to Linux 2.6.24)
3406 This file holds the value of the kernel capability bounding set
3407 (expressed as a signed decimal number). This set is ANDed
3408 against the capabilities permitted to a process during ex‐
3409 ecve(2). Starting with Linux 2.6.25, the system-wide capability
3410 bounding set disappeared, and was replaced by a per-thread
3411 bounding set; see capabilities(7).
3412
3413 /proc/sys/kernel/core_pattern
3414 See core(5).
3415
3416 /proc/sys/kernel/core_pipe_limit
3417 See core(5).
3418
3419 /proc/sys/kernel/core_uses_pid
3420 See core(5).
3421
3422 /proc/sys/kernel/ctrl-alt-del
3423 This file controls the handling of Ctrl-Alt-Del from the key‐
3424 board. When the value in this file is 0, Ctrl-Alt-Del is
3425 trapped and sent to the init(1) program to handle a graceful
3426 restart. When the value is greater than zero, Linux's reaction
3427 to a Vulcan Nerve Pinch (tm) will be an immediate reboot, with‐
3428 out even syncing its dirty buffers. Note: when a program (like
3429 dosemu) has the keyboard in "raw" mode, the Ctrl-Alt-Del is in‐
3430 tercepted by the program before it ever reaches the kernel tty
3431 layer, and it's up to the program to decide what to do with it.
3432
3433 /proc/sys/kernel/dmesg_restrict (since Linux 2.6.37)
3434 The value in this file determines who can see kernel syslog con‐
3435 tents. A value of 0 in this file imposes no restrictions. If
3436 the value is 1, only privileged users can read the kernel sys‐
3437 log. (See syslog(2) for more details.) Since Linux 3.4, only
3438 users with the CAP_SYS_ADMIN capability may change the value in
3439 this file.
3440
3441 /proc/sys/kernel/domainname and /proc/sys/kernel/hostname
3442 can be used to set the NIS/YP domainname and the hostname of
3443 your box in exactly the same way as the commands domainname(1)
3444 and hostname(1), that is:
3445
3446 # echo 'darkstar' > /proc/sys/kernel/hostname
3447 # echo 'mydomain' > /proc/sys/kernel/domainname
3448
3449 has the same effect as
3450
3451 # hostname 'darkstar'
3452 # domainname 'mydomain'
3453
3454 Note, however, that the classic darkstar.frop.org has the host‐
3455 name "darkstar" and DNS (Internet Domain Name Server) domainname
3456 "frop.org", not to be confused with the NIS (Network Information
3457 Service) or YP (Yellow Pages) domainname. These two domain
3458 names are in general different. For a detailed discussion see
3459 the hostname(1) man page.
3460
3461 /proc/sys/kernel/hotplug
3462 This file contains the pathname for the hotplug policy agent.
3463 The default value in this file is /sbin/hotplug.
3464
3465 /proc/sys/kernel/htab-reclaim (before Linux 2.4.9.2)
3466 (PowerPC only) If this file is set to a nonzero value, the Pow‐
3467 erPC htab (see kernel file Documentation/powerpc/ppc_htab.txt)
3468 is pruned each time the system hits the idle loop.
3469
3470 /proc/sys/kernel/keys/*
3471 This directory contains various files that define parameters and
3472 limits for the key-management facility. These files are de‐
3473 scribed in keyrings(7).
3474
3475 /proc/sys/kernel/kptr_restrict (since Linux 2.6.38)
3476 The value in this file determines whether kernel addresses are
3477 exposed via /proc files and other interfaces. A value of 0 in
3478 this file imposes no restrictions. If the value is 1, kernel
3479 pointers printed using the %pK format specifier will be replaced
3480 with zeros unless the user has the CAP_SYSLOG capability. If
3481 the value is 2, kernel pointers printed using the %pK format
3482 specifier will be replaced with zeros regardless of the user's
3483 capabilities. The initial default value for this file was 1,
3484 but the default was changed to 0 in Linux 2.6.39. Since Linux
3485 3.4, only users with the CAP_SYS_ADMIN capability can change the
3486 value in this file.
3487
3488 /proc/sys/kernel/l2cr
3489 (PowerPC only) This file contains a flag that controls the L2
3490 cache of G3 processor boards. If 0, the cache is disabled. En‐
3491 abled if nonzero.
3492
3493 /proc/sys/kernel/modprobe
3494 This file contains the pathname for the kernel module loader.
3495 The default value is /sbin/modprobe. The file is present only
3496 if the kernel is built with the CONFIG_MODULES (CONFIG_KMOD in
3497 Linux 2.6.26 and earlier) option enabled. It is described by
3498 the Linux kernel source file Documentation/kmod.txt (present
3499 only in Linux 2.4 and earlier).
3500
3501 /proc/sys/kernel/modules_disabled (since Linux 2.6.31)
3502 A toggle value indicating if modules are allowed to be loaded in
3503 an otherwise modular kernel. This toggle defaults to off (0),
3504 but can be set true (1). Once true, modules can be neither
3505 loaded nor unloaded, and the toggle cannot be set back to false.
3506 The file is present only if the kernel is built with the CON‐
3507 FIG_MODULES option enabled.
3508
3509 /proc/sys/kernel/msgmax (since Linux 2.2)
3510 This file defines a system-wide limit specifying the maximum
3511 number of bytes in a single message written on a System V mes‐
3512 sage queue.
3513
3514 /proc/sys/kernel/msgmni (since Linux 2.4)
3515 This file defines the system-wide limit on the number of message
3516 queue identifiers. See also /proc/sys/kernel/auto_msgmni.
3517
3518 /proc/sys/kernel/msgmnb (since Linux 2.2)
3519 This file defines a system-wide parameter used to initialize the
3520 msg_qbytes setting for subsequently created message queues. The
3521 msg_qbytes setting specifies the maximum number of bytes that
3522 may be written to the message queue.
3523
3524 /proc/sys/kernel/ngroups_max (since Linux 2.6.4)
3525 This is a read-only file that displays the upper limit on the
3526 number of a process's group memberships.
3527
3528 /proc/sys/kernel/ns_last_pid (since Linux 3.3)
3529 See pid_namespaces(7).
3530
3531 /proc/sys/kernel/ostype and /proc/sys/kernel/osrelease
3532 These files give substrings of /proc/version.
3533
3534 /proc/sys/kernel/overflowgid and /proc/sys/kernel/overflowuid
3535 These files duplicate the files /proc/sys/fs/overflowgid and
3536 /proc/sys/fs/overflowuid.
3537
3538 /proc/sys/kernel/panic
3539 This file gives read/write access to the kernel variable
3540 panic_timeout. If this is zero, the kernel will loop on a
3541 panic; if nonzero, it indicates that the kernel should autore‐
3542 boot after this number of seconds. When you use the software
3543 watchdog device driver, the recommended setting is 60.
3544
3545 /proc/sys/kernel/panic_on_oops (since Linux 2.5.68)
3546 This file controls the kernel's behavior when an oops or BUG is
3547 encountered. If this file contains 0, then the system tries to
3548 continue operation. If it contains 1, then the system delays a
3549 few seconds (to give klogd time to record the oops output) and
3550 then panics. If the /proc/sys/kernel/panic file is also non‐
3551 zero, then the machine will be rebooted.
3552
3553 /proc/sys/kernel/pid_max (since Linux 2.5.34)
3554 This file specifies the value at which PIDs wrap around (i.e.,
3555 the value in this file is one greater than the maximum PID).
3556 PIDs greater than this value are not allocated; thus, the value
3557 in this file also acts as a system-wide limit on the total num‐
3558 ber of processes and threads. The default value for this file,
3559 32768, results in the same range of PIDs as on earlier kernels.
3560 On 32-bit platforms, 32768 is the maximum value for pid_max. On
3561 64-bit systems, pid_max can be set to any value up to 2^22
3562 (PID_MAX_LIMIT, approximately 4 million).
3563
3564 /proc/sys/kernel/powersave-nap (PowerPC only)
3565 This file contains a flag. If set, Linux-PPC will use the "nap"
3566 mode of powersaving, otherwise the "doze" mode will be used.
3567
3568 /proc/sys/kernel/printk
3569 See syslog(2).
3570
3571 /proc/sys/kernel/pty (since Linux 2.6.4)
3572 This directory contains two files relating to the number of UNIX
3573 98 pseudoterminals (see pts(4)) on the system.
3574
3575 /proc/sys/kernel/pty/max
3576 This file defines the maximum number of pseudoterminals.
3577
3578 /proc/sys/kernel/pty/nr
3579 This read-only file indicates how many pseudoterminals are cur‐
3580 rently in use.
3581
3582 /proc/sys/kernel/random
3583 This directory contains various parameters controlling the oper‐
3584 ation of the file /dev/random. See random(4) for further infor‐
3585 mation.
3586
3587 /proc/sys/kernel/random/uuid (since Linux 2.4)
3588 Each read from this read-only file returns a randomly generated
3589 128-bit UUID, as a string in the standard UUID format.
3590
3591 /proc/sys/kernel/randomize_va_space (since Linux 2.6.12)
3592 Select the address space layout randomization (ASLR) policy for
3593 the system (on architectures that support ASLR). Three values
3594 are supported for this file:
3595
3596 0 Turn ASLR off. This is the default for architectures
3597 that don't support ASLR, and when the kernel is booted
3598 with the norandmaps parameter.
3599
3600 1 Make the addresses of mmap(2) allocations, the stack, and
3601 the VDSO page randomized. Among other things, this means
3602 that shared libraries will be loaded at randomized ad‐
3603 dresses. The text segment of PIE-linked binaries will
3604 also be loaded at a randomized address. This value is
3605 the default if the kernel was configured with CONFIG_COM‐
3606 PAT_BRK.
3607
3608 2 (Since Linux 2.6.25) Also support heap randomization.
3609 This value is the default if the kernel was not config‐
3610 ured with CONFIG_COMPAT_BRK.
3611
3612 /proc/sys/kernel/real-root-dev
3613 This file is documented in the Linux kernel source file Documen‐
3614 tation/admin-guide/initrd.rst (or Documentation/initrd.txt be‐
3615 fore Linux 4.10).
3616
3617 /proc/sys/kernel/reboot-cmd (Sparc only)
3618 This file seems to be a way to give an argument to the SPARC
3619 ROM/Flash boot loader. Maybe to tell it what to do after re‐
3620 booting?
3621
3622 /proc/sys/kernel/rtsig-max
3623 (Up to and including Linux 2.6.7; see setrlimit(2)) This file
3624 can be used to tune the maximum number of POSIX real-time
3625 (queued) signals that can be outstanding in the system.
3626
3627 /proc/sys/kernel/rtsig-nr
3628 (Up to and including Linux 2.6.7.) This file shows the number
3629 of POSIX real-time signals currently queued.
3630
3631 /proc/pid/sched_autogroup_enabled (since Linux 2.6.38)
3632 See sched(7).
3633
3634 /proc/sys/kernel/sched_child_runs_first (since Linux 2.6.23)
3635 If this file contains the value zero, then, after a fork(2), the
3636 parent is first scheduled on the CPU. If the file contains a
3637 nonzero value, then the child is scheduled first on the CPU.
3638 (Of course, on a multiprocessor system, the parent and the child
3639 might both immediately be scheduled on a CPU.)
3640
3641 /proc/sys/kernel/sched_rr_timeslice_ms (since Linux 3.9)
3642 See sched_rr_get_interval(2).
3643
3644 /proc/sys/kernel/sched_rt_period_us (since Linux 2.6.25)
3645 See sched(7).
3646
3647 /proc/sys/kernel/sched_rt_runtime_us (since Linux 2.6.25)
3648 See sched(7).
3649
3650 /proc/sys/kernel/seccomp (since Linux 4.14)
3651 This directory provides additional seccomp information and con‐
3652 figuration. See seccomp(2) for further details.
3653
3654 /proc/sys/kernel/sem (since Linux 2.4)
3655 This file contains 4 numbers defining limits for System V IPC
3656 semaphores. These fields are, in order:
3657
3658 SEMMSL The maximum semaphores per semaphore set.
3659
3660 SEMMNS A system-wide limit on the number of semaphores in all
3661 semaphore sets.
3662
3663 SEMOPM The maximum number of operations that may be specified in
3664 a semop(2) call.
3665
3666 SEMMNI A system-wide limit on the maximum number of semaphore
3667 identifiers.
3668
3669 /proc/sys/kernel/sg-big-buff
3670 This file shows the size of the generic SCSI device (sg) buffer.
3671 You can't tune it just yet, but you could change it at compile
3672 time by editing include/scsi/sg.h and changing the value of
3673 SG_BIG_BUFF. However, there shouldn't be any reason to change
3674 this value.
3675
3676 /proc/sys/kernel/shm_rmid_forced (since Linux 3.1)
3677 If this file is set to 1, all System V shared memory segments
3678 will be marked for destruction as soon as the number of attached
3679 processes falls to zero; in other words, it is no longer possi‐
3680 ble to create shared memory segments that exist independently of
3681 any attached process.
3682
3683 The effect is as though a shmctl(2) IPC_RMID is performed on all
3684 existing segments as well as all segments created in the future
3685 (until this file is reset to 0). Note that existing segments
3686 that are attached to no process will be immediately destroyed
3687 when this file is set to 1. Setting this option will also de‐
3688 stroy segments that were created, but never attached, upon ter‐
3689 mination of the process that created the segment with shmget(2).
3690
3691 Setting this file to 1 provides a way of ensuring that all Sys‐
3692 tem V shared memory segments are counted against the resource
3693 usage and resource limits (see the description of RLIMIT_AS in
3694 getrlimit(2)) of at least one process.
3695
3696 Because setting this file to 1 produces behavior that is non‐
3697 standard and could also break existing applications, the default
3698 value in this file is 0. Set this file to 1 only if you have a
3699 good understanding of the semantics of the applications using
3700 System V shared memory on your system.
3701
3702 /proc/sys/kernel/shmall (since Linux 2.2)
3703 This file contains the system-wide limit on the total number of
3704 pages of System V shared memory.
3705
3706 /proc/sys/kernel/shmmax (since Linux 2.2)
3707 This file can be used to query and set the run-time limit on the
3708 maximum (System V IPC) shared memory segment size that can be
3709 created. Shared memory segments up to 1 GB are now supported in
3710 the kernel. This value defaults to SHMMAX.
3711
3712 /proc/sys/kernel/shmmni (since Linux 2.4)
3713 This file specifies the system-wide maximum number of System V
3714 shared memory segments that can be created.
3715
3716 /proc/sys/kernel/sysctl_writes_strict (since Linux 3.16)
3717 The value in this file determines how the file offset affects
3718 the behavior of updating entries in files under /proc/sys. The
3719 file has three possible values:
3720
3721 -1 This provides legacy handling, with no printk warnings.
3722 Each write(2) must fully contain the value to be written,
3723 and multiple writes on the same file descriptor will over‐
3724 write the entire value, regardless of the file position.
3725
3726 0 (default) This provides the same behavior as for -1, but
3727 printk warnings are written for processes that perform
3728 writes when the file offset is not 0.
3729
3730 1 Respect the file offset when writing strings into /proc/sys
3731 files. Multiple writes will append to the value buffer.
3732 Anything written beyond the maximum length of the value buf‐
3733 fer will be ignored. Writes to numeric /proc/sys entries
3734 must always be at file offset 0 and the value must be fully
3735 contained in the buffer provided to write(2).
3736
3737 /proc/sys/kernel/sysrq
3738 This file controls the functions allowed to be invoked by the
3739 SysRq key. By default, the file contains 1 meaning that every
3740 possible SysRq request is allowed (in older kernel versions,
3741 SysRq was disabled by default, and you were required to specifi‐
3742 cally enable it at run-time, but this is not the case any more).
3743 Possible values in this file are:
3744
3745 0 Disable sysrq completely
3746
3747 1 Enable all functions of sysrq
3748
3749 > 1 Bit mask of allowed sysrq functions, as follows:
3750 2 Enable control of console logging level
3751 4 Enable control of keyboard (SAK, unraw)
3752 8 Enable debugging dumps of processes etc.
3753 16 Enable sync command
3754 32 Enable remount read-only
3755 64 Enable signaling of processes (term, kill, oom-kill)
3756 128 Allow reboot/poweroff
3757 256 Allow nicing of all real-time tasks
3758
3759 This file is present only if the CONFIG_MAGIC_SYSRQ kernel con‐
3760 figuration option is enabled. For further details see the Linux
3761 kernel source file Documentation/admin-guide/sysrq.rst (or Docu‐
3762 mentation/sysrq.txt before Linux 4.10).
3763
3764 /proc/sys/kernel/version
3765 This file contains a string such as:
3766
3767 #5 Wed Feb 25 21:49:24 MET 1998
3768
3769 The "#5" means that this is the fifth kernel built from this
3770 source base and the date following it indicates the time the
3771 kernel was built.
3772
3773 /proc/sys/kernel/threads-max (since Linux 2.3.11)
3774 This file specifies the system-wide limit on the number of
3775 threads (tasks) that can be created on the system.
3776
3777 Since Linux 4.1, the value that can be written to threads-max is
3778 bounded. The minimum value that can be written is 20. The max‐
3779 imum value that can be written is given by the constant FU‐
3780 TEX_TID_MASK [22m(0x3fffffff). If a value outside of this range is
3781 written to threads-max, the error EINVAL occurs.
3782
3783 The value written is checked against the available RAM pages.
3784 If the thread structures would occupy too much (more than 1/8th)
3785 of the available RAM pages, threads-max is reduced accordingly.
3786
3787 /proc/sys/kernel/yama/ptrace_scope (since Linux 3.5)
3788 See ptrace(2).
3789
3790 /proc/sys/kernel/zero-paged (PowerPC only)
3791 This file contains a flag. When enabled (nonzero), Linux-PPC
3792 will pre-zero pages in the idle loop, possibly speeding up
3793 get_free_pages.
3794
3795 /proc/sys/net
3796 This directory contains networking stuff. Explanations for some
3797 of the files under this directory can be found in tcp(7) and
3798 ip(7).
3799
3800 /proc/sys/net/core/bpf_jit_enable
3801 See bpf(2).
3802
3803 /proc/sys/net/core/somaxconn
3804 This file defines a ceiling value for the backlog argument of
3805 listen(2); see the listen(2) manual page for details.
3806
3807 /proc/sys/proc
3808 This directory may be empty.
3809
3810 /proc/sys/sunrpc
3811 This directory supports Sun remote procedure call for network
3812 filesystem (NFS). On some systems, it is not present.
3813
3814 /proc/sys/user (since Linux 4.9)
3815 See namespaces(7).
3816
3817 /proc/sys/vm
3818 This directory contains files for memory management tuning, buf‐
3819 fer, and cache management.
3820
3821 /proc/sys/vm/admin_reserve_kbytes (since Linux 3.10)
3822 This file defines the amount of free memory (in KiB) on the sys‐
3823 tem that should be reserved for users with the capability
3824 CAP_SYS_ADMIN.
3825
3826 The default value in this file is the minimum of [3% of free
3827 pages, 8MiB] expressed as KiB. The default is intended to pro‐
3828 vide enough for the superuser to log in and kill a process, if
3829 necessary, under the default overcommit 'guess' mode (i.e., 0 in
3830 /proc/sys/vm/overcommit_memory).
3831
3832 Systems running in "overcommit never" mode (i.e., 2 in
3833 /proc/sys/vm/overcommit_memory) should increase the value in
3834 this file to account for the full virtual memory size of the
3835 programs used to recover (e.g., login(1) ssh(1), and top(1))
3836 Otherwise, the superuser may not be able to log in to recover
3837 the system. For example, on x86-64 a suitable value is 131072
3838 (128MiB reserved).
3839
3840 Changing the value in this file takes effect whenever an appli‐
3841 cation requests memory.
3842
3843 /proc/sys/vm/compact_memory (since Linux 2.6.35)
3844 When 1 is written to this file, all zones are compacted such
3845 that free memory is available in contiguous blocks where possi‐
3846 ble. The effect of this action can be seen by examining
3847 /proc/buddyinfo.
3848
3849 Present only if the kernel was configured with CONFIG_COM‐
3850 PACTION.
3851
3852 /proc/sys/vm/drop_caches (since Linux 2.6.16)
3853 Writing to this file causes the kernel to drop clean caches,
3854 dentries, and inodes from memory, causing that memory to become
3855 free. This can be useful for memory management testing and per‐
3856 forming reproducible filesystem benchmarks. Because writing to
3857 this file causes the benefits of caching to be lost, it can de‐
3858 grade overall system performance.
3859
3860 To free pagecache, use:
3861
3862 echo 1 > /proc/sys/vm/drop_caches
3863
3864 To free dentries and inodes, use:
3865
3866 echo 2 > /proc/sys/vm/drop_caches
3867
3868 To free pagecache, dentries, and inodes, use:
3869
3870 echo 3 > /proc/sys/vm/drop_caches
3871
3872 Because writing to this file is a nondestructive operation and
3873 dirty objects are not freeable, the user should run sync(1)
3874 first.
3875
3876 /proc/sys/vm/sysctl_hugetlb_shm_group (since Linux 2.6.7)
3877 This writable file contains a group ID that is allowed to allo‐
3878 cate memory using huge pages. If a process has a filesystem
3879 group ID or any supplementary group ID that matches this group
3880 ID, then it can make huge-page allocations without holding the
3881 CAP_IPC_LOCK capability; see memfd_create(2), mmap(2), and
3882 shmget(2).
3883
3884 /proc/sys/vm/legacy_va_layout (since Linux 2.6.9)
3885 If nonzero, this disables the new 32-bit memory-mapping layout;
3886 the kernel will use the legacy (2.4) layout for all processes.
3887
3888 /proc/sys/vm/memory_failure_early_kill (since Linux 2.6.32)
3889 Control how to kill processes when an uncorrected memory error
3890 (typically a 2-bit error in a memory module) that cannot be han‐
3891 dled by the kernel is detected in the background by hardware.
3892 In some cases (like the page still having a valid copy on disk),
3893 the kernel will handle the failure transparently without affect‐
3894 ing any applications. But if there is no other up-to-date copy
3895 of the data, it will kill processes to prevent any data corrup‐
3896 tions from propagating.
3897
3898 The file has one of the following values:
3899
3900 1 Kill all processes that have the corrupted-and-not-
3901 reloadable page mapped as soon as the corruption is de‐
3902 tected. Note that this is not supported for a few types
3903 of pages, such as kernel internally allocated data or the
3904 swap cache, but works for the majority of user pages.
3905
3906 0 Unmap the corrupted page from all processes and kill a
3907 process only if it tries to access the page.
3908
3909 The kill is performed using a SIGBUS signal with si_code set to
3910 BUS_MCEERR_AO. Processes can handle this if they want to; see
3911 sigaction(2) for more details.
3912
3913 This feature is active only on architectures/platforms with ad‐
3914 vanced machine check handling and depends on the hardware capa‐
3915 bilities.
3916
3917 Applications can override the memory_failure_early_kill setting
3918 individually with the prctl(2) PR_MCE_KILL operation.
3919
3920 Present only if the kernel was configured with CONFIG_MEM‐
3921 ORY_FAILURE.
3922
3923 /proc/sys/vm/memory_failure_recovery (since Linux 2.6.32)
3924 Enable memory failure recovery (when supported by the platform).
3925
3926 1 Attempt recovery.
3927
3928 0 Always panic on a memory failure.
3929
3930 Present only if the kernel was configured with CONFIG_MEM‐
3931 ORY_FAILURE.
3932
3933 /proc/sys/vm/oom_dump_tasks (since Linux 2.6.25)
3934 Enables a system-wide task dump (excluding kernel threads) to be
3935 produced when the kernel performs an OOM-killing. The dump in‐
3936 cludes the following information for each task (thread,
3937 process): thread ID, real user ID, thread group ID (process ID),
3938 virtual memory size, resident set size, the CPU that the task is
3939 scheduled on, oom_adj score (see the description of
3940 /proc/pid/oom_adj), and command name. This is helpful to deter‐
3941 mine why the OOM-killer was invoked and to identify the rogue
3942 task that caused it.
3943
3944 If this contains the value zero, this information is suppressed.
3945 On very large systems with thousands of tasks, it may not be
3946 feasible to dump the memory state information for each one.
3947 Such systems should not be forced to incur a performance penalty
3948 in OOM situations when the information may not be desired.
3949
3950 If this is set to nonzero, this information is shown whenever
3951 the OOM-killer actually kills a memory-hogging task.
3952
3953 The default value is 0.
3954
3955 /proc/sys/vm/oom_kill_allocating_task (since Linux 2.6.24)
3956 This enables or disables killing the OOM-triggering task in out-
3957 of-memory situations.
3958
3959 If this is set to zero, the OOM-killer will scan through the en‐
3960 tire tasklist and select a task based on heuristics to kill.
3961 This normally selects a rogue memory-hogging task that frees up
3962 a large amount of memory when killed.
3963
3964 If this is set to nonzero, the OOM-killer simply kills the task
3965 that triggered the out-of-memory condition. This avoids a pos‐
3966 sibly expensive tasklist scan.
3967
3968 If /proc/sys/vm/panic_on_oom is nonzero, it takes precedence
3969 over whatever value is used in /proc/sys/vm/oom_kill_allocat‐
3970 ing_task.
3971
3972 The default value is 0.
3973
3974 /proc/sys/vm/overcommit_kbytes (since Linux 3.14)
3975 This writable file provides an alternative to /proc/sys/vm/over‐
3976 commit_ratio for controlling the CommitLimit when
3977 /proc/sys/vm/overcommit_memory has the value 2. It allows the
3978 amount of memory overcommitting to be specified as an absolute
3979 value (in kB), rather than as a percentage, as is done with
3980 overcommit_ratio. This allows for finer-grained control of Com‐
3981 mitLimit on systems with extremely large memory sizes.
3982
3983 Only one of overcommit_kbytes or overcommit_ratio can have an
3984 effect: if overcommit_kbytes has a nonzero value, then it is
3985 used to calculate CommitLimit, otherwise overcommit_ratio is
3986 used. Writing a value to either of these files causes the value
3987 in the other file to be set to zero.
3988
3989 /proc/sys/vm/overcommit_memory
3990 This file contains the kernel virtual memory accounting mode.
3991 Values are:
3992
3993 0: heuristic overcommit (this is the default)
3994 1: always overcommit, never check
3995 2: always check, never overcommit
3996
3997 In mode 0, calls of mmap(2) with MAP_NORESERVE are not checked,
3998 and the default check is very weak, leading to the risk of get‐
3999 ting a process "OOM-killed".
4000
4001 In mode 1, the kernel pretends there is always enough memory,
4002 until memory actually runs out. One use case for this mode is
4003 scientific computing applications that employ large sparse ar‐
4004 rays. Before Linux 2.6.0, any nonzero value implies mode 1.
4005
4006 In mode 2 (available since Linux 2.6), the total virtual address
4007 space that can be allocated (CommitLimit in /proc/meminfo) is
4008 calculated as
4009
4010 CommitLimit = (total_RAM - total_huge_TLB) *
4011 overcommit_ratio / 100 + total_swap
4012
4013 where:
4014
4015 • total_RAM is the total amount of RAM on the system;
4016
4017 • total_huge_TLB is the amount of memory set aside for huge
4018 pages;
4019
4020 • overcommit_ratio is the value in /proc/sys/vm/overcommit_ra‐
4021 tio; and
4022
4023 • total_swap is the amount of swap space.
4024
4025 For example, on a system with 16 GB of physical RAM, 16 GB of
4026 swap, no space dedicated to huge pages, and an overcommit_ratio
4027 of 50, this formula yields a CommitLimit of 24 GB.
4028
4029 Since Linux 3.14, if the value in /proc/sys/vm/overcommit_kbytes
4030 is nonzero, then CommitLimit is instead calculated as:
4031
4032 CommitLimit = overcommit_kbytes + total_swap
4033
4034 See also the description of /proc/sys/vm/admin_reserve_kbytes
4035 and /proc/sys/vm/user_reserve_kbytes.
4036
4037 /proc/sys/vm/overcommit_ratio (since Linux 2.6.0)
4038 This writable file defines a percentage by which memory can be
4039 overcommitted. The default value in the file is 50. See the
4040 description of /proc/sys/vm/overcommit_memory.
4041
4042 /proc/sys/vm/panic_on_oom (since Linux 2.6.18)
4043 This enables or disables a kernel panic in an out-of-memory sit‐
4044 uation.
4045
4046 If this file is set to the value 0, the kernel's OOM-killer will
4047 kill some rogue process. Usually, the OOM-killer is able to
4048 kill a rogue process and the system will survive.
4049
4050 If this file is set to the value 1, then the kernel normally
4051 panics when out-of-memory happens. However, if a process limits
4052 allocations to certain nodes using memory policies (mbind(2)
4053 MPOL_BIND) or cpusets (cpuset(7)) and those nodes reach memory
4054 exhaustion status, one process may be killed by the OOM-killer.
4055 No panic occurs in this case: because other nodes' memory may be
4056 free, this means the system as a whole may not have reached an
4057 out-of-memory situation yet.
4058
4059 If this file is set to the value 2, the kernel always panics
4060 when an out-of-memory condition occurs.
4061
4062 The default value is 0. 1 and 2 are for failover of clustering.
4063 Select either according to your policy of failover.
4064
4065 /proc/sys/vm/swappiness
4066 The value in this file controls how aggressively the kernel will
4067 swap memory pages. Higher values increase aggressiveness, lower
4068 values decrease aggressiveness. The default value is 60.
4069
4070 /proc/sys/vm/user_reserve_kbytes (since Linux 3.10)
4071 Specifies an amount of memory (in KiB) to reserve for user pro‐
4072 cesses. This is intended to prevent a user from starting a sin‐
4073 gle memory hogging process, such that they cannot recover (kill
4074 the hog). The value in this file has an effect only when
4075 /proc/sys/vm/overcommit_memory is set to 2 ("overcommit never"
4076 mode). In this case, the system reserves an amount of memory
4077 that is the minimum of [3% of current process size, user_re‐
4078 serve_kbytes].
4079
4080 The default value in this file is the minimum of [3% of free
4081 pages, 128MiB] expressed as KiB.
4082
4083 If the value in this file is set to zero, then a user will be
4084 allowed to allocate all free memory with a single process (minus
4085 the amount reserved by /proc/sys/vm/admin_reserve_kbytes). Any
4086 subsequent attempts to execute a command will result in "fork:
4087 Cannot allocate memory".
4088
4089 Changing the value in this file takes effect whenever an appli‐
4090 cation requests memory.
4091
4092 /proc/sys/vm/unprivileged_userfaultfd (since Linux 5.2)
4093 This (writable) file exposes a flag that controls whether un‐
4094 privileged processes are allowed to employ userfaultfd(2). If
4095 this file has the value 1, then unprivileged processes may use
4096 userfaultfd(2). If this file has the value 0, then only pro‐
4097 cesses that have the CAP_SYS_PTRACE capability may employ user‐
4098 faultfd(2). The default value in this file is 1.
4099
4100 /proc/sysrq-trigger (since Linux 2.4.21)
4101 Writing a character to this file triggers the same SysRq func‐
4102 tion as typing ALT-SysRq-<character> (see the description of
4103 /proc/sys/kernel/sysrq). This file is normally writable only by
4104 root. For further details see the Linux kernel source file Doc‐
4105 umentation/admin-guide/sysrq.rst (or Documentation/sysrq.txt be‐
4106 fore Linux 4.10).
4107
4108 /proc/sysvipc
4109 Subdirectory containing the pseudo-files msg, sem and shm.
4110 These files list the System V Interprocess Communication (IPC)
4111 objects (respectively: message queues, semaphores, and shared
4112 memory) that currently exist on the system, providing similar
4113 information to that available via ipcs(1). These files have
4114 headers and are formatted (one IPC object per line) for easy un‐
4115 derstanding. sysvipc(7) provides further background on the in‐
4116 formation shown by these files.
4117
4118 /proc/thread-self (since Linux 3.17)
4119 This directory refers to the thread accessing the /proc filesys‐
4120 tem, and is identical to the /proc/self/task/tid directory named
4121 by the process thread ID (tid) of the same thread.
4122
4123 /proc/timer_list (since Linux 2.6.21)
4124 This read-only file exposes a list of all currently pending
4125 (high-resolution) timers, all clock-event sources, and their pa‐
4126 rameters in a human-readable form.
4127
4128 /proc/timer_stats (from Linux 2.6.21 until Linux 4.10)
4129 This is a debugging facility to make timer (ab)use in a Linux
4130 system visible to kernel and user-space developers. It can be
4131 used by kernel and user-space developers to verify that their
4132 code does not make undue use of timers. The goal is to avoid
4133 unnecessary wakeups, thereby optimizing power consumption.
4134
4135 If enabled in the kernel (CONFIG_TIMER_STATS), but not used, it
4136 has almost zero run-time overhead and a relatively small data-
4137 structure overhead. Even if collection is enabled at run time,
4138 overhead is low: all the locking is per-CPU and lookup is
4139 hashed.
4140
4141 The /proc/timer_stats file is used both to control sampling fa‐
4142 cility and to read out the sampled information.
4143
4144 The timer_stats functionality is inactive on bootup. A sampling
4145 period can be started using the following command:
4146
4147 # echo 1 > /proc/timer_stats
4148
4149 The following command stops a sampling period:
4150
4151 # echo 0 > /proc/timer_stats
4152
4153 The statistics can be retrieved by:
4154
4155 $ cat /proc/timer_stats
4156
4157 While sampling is enabled, each readout from /proc/timer_stats
4158 will see newly updated statistics. Once sampling is disabled,
4159 the sampled information is kept until a new sample period is
4160 started. This allows multiple readouts.
4161
4162 Sample output from /proc/timer_stats:
4163
4164 $ cat /proc/timer_stats
4165 Timer Stats Version: v0.3
4166 Sample period: 1.764 s
4167 Collection: active
4168 255, 0 swapper/3 hrtimer_start_range_ns (tick_sched_timer)
4169 71, 0 swapper/1 hrtimer_start_range_ns (tick_sched_timer)
4170 58, 0 swapper/0 hrtimer_start_range_ns (tick_sched_timer)
4171 4, 1694 gnome-shell mod_delayed_work_on (delayed_work_timer_fn)
4172 17, 7 rcu_sched rcu_gp_kthread (process_timeout)
4173 ...
4174 1, 4911 kworker/u16:0 mod_delayed_work_on (delayed_work_timer_fn)
4175 1D, 2522 kworker/0:0 queue_delayed_work_on (delayed_work_timer_fn)
4176 1029 total events, 583.333 events/sec
4177
4178 The output columns are:
4179
4180 [1] a count of the number of events, optionally (since Linux
4181 2.6.23) followed by the letter 'D' if this is a deferrable
4182 timer;
4183
4184 [2] the PID of the process that initialized the timer;
4185
4186 [3] the name of the process that initialized the timer;
4187
4188 [4] the function where the timer was initialized; and (in
4189 parentheses) the callback function that is associated with
4190 the timer.
4191
4192 During the Linux 4.11 development cycle, this file was removed
4193 because of security concerns, as it exposes information across
4194 namespaces. Furthermore, it is possible to obtain the same in‐
4195 formation via in-kernel tracing facilities such as ftrace.
4196
4197 /proc/tty
4198 Subdirectory containing the pseudo-files and subdirectories for
4199 tty drivers and line disciplines.
4200
4201 /proc/uptime
4202 This file contains two numbers (values in seconds): the uptime
4203 of the system (including time spent in suspend) and the amount
4204 of time spent in the idle process.
4205
4206 /proc/version
4207 This string identifies the kernel version that is currently run‐
4208 ning. It includes the contents of /proc/sys/kernel/ostype,
4209 /proc/sys/kernel/osrelease, and /proc/sys/kernel/version. For
4210 example:
4211
4212 Linux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994
4213
4214 /proc/vmstat (since Linux 2.6.0)
4215 This file displays various virtual memory statistics. Each line
4216 of this file contains a single name-value pair, delimited by
4217 white space. Some lines are present only if the kernel was con‐
4218 figured with suitable options. (In some cases, the options re‐
4219 quired for particular files have changed across kernel versions,
4220 so they are not listed here. Details can be found by consulting
4221 the kernel source code.) The following fields may be present:
4222
4223 nr_free_pages (since Linux 2.6.31)
4224
4225 nr_alloc_batch (since Linux 3.12)
4226
4227 nr_inactive_anon (since Linux 2.6.28)
4228
4229 nr_active_anon (since Linux 2.6.28)
4230
4231 nr_inactive_file (since Linux 2.6.28)
4232
4233 nr_active_file (since Linux 2.6.28)
4234
4235 nr_unevictable (since Linux 2.6.28)
4236
4237 nr_mlock (since Linux 2.6.28)
4238
4239 nr_anon_pages (since Linux 2.6.18)
4240
4241 nr_mapped (since Linux 2.6.0)
4242
4243 nr_file_pages (since Linux 2.6.18)
4244
4245 nr_dirty (since Linux 2.6.0)
4246
4247 nr_writeback (since Linux 2.6.0)
4248
4249 nr_slab_reclaimable (since Linux 2.6.19)
4250
4251 nr_slab_unreclaimable (since Linux 2.6.19)
4252
4253 nr_page_table_pages (since Linux 2.6.0)
4254
4255 nr_kernel_stack (since Linux 2.6.32)
4256 Amount of memory allocated to kernel stacks.
4257
4258 nr_unstable (since Linux 2.6.0)
4259
4260 nr_bounce (since Linux 2.6.12)
4261
4262 nr_vmscan_write (since Linux 2.6.19)
4263
4264 nr_vmscan_immediate_reclaim (since Linux 3.2)
4265
4266 nr_writeback_temp (since Linux 2.6.26)
4267
4268 nr_isolated_anon (since Linux 2.6.32)
4269
4270 nr_isolated_file (since Linux 2.6.32)
4271
4272 nr_shmem (since Linux 2.6.32)
4273 Pages used by shmem and tmpfs(5).
4274
4275 nr_dirtied (since Linux 2.6.37)
4276
4277 nr_written (since Linux 2.6.37)
4278
4279 nr_pages_scanned (since Linux 3.17)
4280
4281 numa_hit (since Linux 2.6.18)
4282
4283 numa_miss (since Linux 2.6.18)
4284
4285 numa_foreign (since Linux 2.6.18)
4286
4287 numa_interleave (since Linux 2.6.18)
4288
4289 numa_local (since Linux 2.6.18)
4290
4291 numa_other (since Linux 2.6.18)
4292
4293 workingset_refault (since Linux 3.15)
4294
4295 workingset_activate (since Linux 3.15)
4296
4297 workingset_nodereclaim (since Linux 3.15)
4298
4299 nr_anon_transparent_hugepages (since Linux 2.6.38)
4300
4301 nr_free_cma (since Linux 3.7)
4302 Number of free CMA (Contiguous Memory Allocator) pages.
4303
4304 nr_dirty_threshold (since Linux 2.6.37)
4305
4306 nr_dirty_background_threshold (since Linux 2.6.37)
4307
4308 pgpgin (since Linux 2.6.0)
4309
4310 pgpgout (since Linux 2.6.0)
4311
4312 pswpin (since Linux 2.6.0)
4313
4314 pswpout (since Linux 2.6.0)
4315
4316 pgalloc_dma (since Linux 2.6.5)
4317
4318 pgalloc_dma32 (since Linux 2.6.16)
4319
4320 pgalloc_normal (since Linux 2.6.5)
4321
4322 pgalloc_high (since Linux 2.6.5)
4323
4324 pgalloc_movable (since Linux 2.6.23)
4325
4326 pgfree (since Linux 2.6.0)
4327
4328 pgactivate (since Linux 2.6.0)
4329
4330 pgdeactivate (since Linux 2.6.0)
4331
4332 pgfault (since Linux 2.6.0)
4333
4334 pgmajfault (since Linux 2.6.0)
4335
4336 pgrefill_dma (since Linux 2.6.5)
4337
4338 pgrefill_dma32 (since Linux 2.6.16)
4339
4340 pgrefill_normal (since Linux 2.6.5)
4341
4342 pgrefill_high (since Linux 2.6.5)
4343
4344 pgrefill_movable (since Linux 2.6.23)
4345
4346 pgsteal_kswapd_dma (since Linux 3.4)
4347
4348 pgsteal_kswapd_dma32 (since Linux 3.4)
4349
4350 pgsteal_kswapd_normal (since Linux 3.4)
4351
4352 pgsteal_kswapd_high (since Linux 3.4)
4353
4354 pgsteal_kswapd_movable (since Linux 3.4)
4355
4356 pgsteal_direct_dma
4357
4358 pgsteal_direct_dma32 (since Linux 3.4)
4359
4360 pgsteal_direct_normal (since Linux 3.4)
4361
4362 pgsteal_direct_high (since Linux 3.4)
4363
4364 pgsteal_direct_movable (since Linux 2.6.23)
4365
4366 pgscan_kswapd_dma
4367
4368 pgscan_kswapd_dma32 (since Linux 2.6.16)
4369
4370 pgscan_kswapd_normal (since Linux 2.6.5)
4371
4372 pgscan_kswapd_high
4373
4374 pgscan_kswapd_movable (since Linux 2.6.23)
4375
4376 pgscan_direct_dma
4377
4378 pgscan_direct_dma32 (since Linux 2.6.16)
4379
4380 pgscan_direct_normal
4381
4382 pgscan_direct_high
4383
4384 pgscan_direct_movable (since Linux 2.6.23)
4385
4386 pgscan_direct_throttle (since Linux 3.6)
4387
4388 zone_reclaim_failed (since linux 2.6.31)
4389
4390 pginodesteal (since linux 2.6.0)
4391
4392 slabs_scanned (since linux 2.6.5)
4393
4394 kswapd_inodesteal (since linux 2.6.0)
4395
4396 kswapd_low_wmark_hit_quickly (since Linux 2.6.33)
4397
4398 kswapd_high_wmark_hit_quickly (since Linux 2.6.33)
4399
4400 pageoutrun (since Linux 2.6.0)
4401
4402 allocstall (since Linux 2.6.0)
4403
4404 pgrotated (since Linux 2.6.0)
4405
4406 drop_pagecache (since Linux 3.15)
4407
4408 drop_slab (since Linux 3.15)
4409
4410 numa_pte_updates (since Linux 3.8)
4411
4412 numa_huge_pte_updates (since Linux 3.13)
4413
4414 numa_hint_faults (since Linux 3.8)
4415
4416 numa_hint_faults_local (since Linux 3.8)
4417
4418 numa_pages_migrated (since Linux 3.8)
4419
4420 pgmigrate_success (since Linux 3.8)
4421
4422 pgmigrate_fail (since Linux 3.8)
4423
4424 compact_migrate_scanned (since Linux 3.8)
4425
4426 compact_free_scanned (since Linux 3.8)
4427
4428 compact_isolated (since Linux 3.8)
4429
4430 compact_stall (since Linux 2.6.35)
4431 See the kernel source file Documentation/ad‐
4432 min-guide/mm/transhuge.rst.
4433
4434 compact_fail (since Linux 2.6.35)
4435 See the kernel source file Documentation/ad‐
4436 min-guide/mm/transhuge.rst.
4437
4438 compact_success (since Linux 2.6.35)
4439 See the kernel source file Documentation/ad‐
4440 min-guide/mm/transhuge.rst.
4441
4442 htlb_buddy_alloc_success (since Linux 2.6.26)
4443
4444 htlb_buddy_alloc_fail (since Linux 2.6.26)
4445
4446 unevictable_pgs_culled (since Linux 2.6.28)
4447
4448 unevictable_pgs_scanned (since Linux 2.6.28)
4449
4450 unevictable_pgs_rescued (since Linux 2.6.28)
4451
4452 unevictable_pgs_mlocked (since Linux 2.6.28)
4453
4454 unevictable_pgs_munlocked (since Linux 2.6.28)
4455
4456 unevictable_pgs_cleared (since Linux 2.6.28)
4457
4458 unevictable_pgs_stranded (since Linux 2.6.28)
4459
4460 thp_fault_alloc (since Linux 2.6.39)
4461 See the kernel source file Documentation/ad‐
4462 min-guide/mm/transhuge.rst.
4463
4464 thp_fault_fallback (since Linux 2.6.39)
4465 See the kernel source file Documentation/ad‐
4466 min-guide/mm/transhuge.rst.
4467
4468 thp_collapse_alloc (since Linux 2.6.39)
4469 See the kernel source file Documentation/ad‐
4470 min-guide/mm/transhuge.rst.
4471
4472 thp_collapse_alloc_failed (since Linux 2.6.39)
4473 See the kernel source file Documentation/ad‐
4474 min-guide/mm/transhuge.rst.
4475
4476 thp_split (since Linux 2.6.39)
4477 See the kernel source file Documentation/ad‐
4478 min-guide/mm/transhuge.rst.
4479
4480 thp_zero_page_alloc (since Linux 3.8)
4481 See the kernel source file Documentation/ad‐
4482 min-guide/mm/transhuge.rst.
4483
4484 thp_zero_page_alloc_failed (since Linux 3.8)
4485 See the kernel source file Documentation/ad‐
4486 min-guide/mm/transhuge.rst.
4487
4488 balloon_inflate (since Linux 3.18)
4489
4490 balloon_deflate (since Linux 3.18)
4491
4492 balloon_migrate (since Linux 3.18)
4493
4494 nr_tlb_remote_flush (since Linux 3.12)
4495
4496 nr_tlb_remote_flush_received (since Linux 3.12)
4497
4498 nr_tlb_local_flush_all (since Linux 3.12)
4499
4500 nr_tlb_local_flush_one (since Linux 3.12)
4501
4502 vmacache_find_calls (since Linux 3.16)
4503
4504 vmacache_find_hits (since Linux 3.16)
4505
4506 vmacache_full_flushes (since Linux 3.19)
4507
4508 /proc/zoneinfo (since Linux 2.6.13)
4509 This file displays information about memory zones. This is use‐
4510 ful for analyzing virtual memory behavior.
4511
4513 Many files contain strings (e.g., the environment and command line)
4514 that are in the internal format, with subfields terminated by null
4515 bytes ('\0'). When inspecting such files, you may find that the re‐
4516 sults are more readable if you use a command of the following form to
4517 display them:
4518
4519 $ cat file | tr '\000' '\n'
4520
4521 This manual page is incomplete, possibly inaccurate, and is the kind of
4522 thing that needs to be updated very often.
4523
4525 cat(1), dmesg(1), find(1), free(1), htop(1), init(1), ps(1), pstree(1),
4526 tr(1), uptime(1), chroot(2), mmap(2), readlink(2), syslog(2),
4527 slabinfo(5), sysfs(5), hier(7), namespaces(7), time(7), arp(8), hd‐
4528 parm(8), ifconfig(8), lsmod(8), lspci(8), mount(8), netstat(8),
4529 procinfo(8), route(8), sysctl(8)
4530
4531 The Linux kernel source files: Documentation/filesystems/proc.rst, Doc‐
4532 umentation/admin-guide/sysctl/fs.rst, Documentation/ad‐
4533 min-guide/sysctl/kernel.rst, Documentation/admin-guide/sysctl/net.rst,
4534 and Documentation/admin-guide/sysctl/vm.rst.
4535
4536
4537
4538Linux man-pages 6.05 2023-07-08 proc(5)