1PROC(5) Linux Programmer's Manual PROC(5)
2
3
4
6 proc - process information pseudo-file system
7
9 The proc file system is a pseudo-file system which is used as an inter‐
10 face to kernel data structures. It is commonly mounted at /proc. Most
11 of it is read-only, but some files allow kernel variables to be
12 changed.
13
14 The following outline gives a quick tour through the /proc hierarchy.
15
16 /proc/[pid]
17 There is a numerical subdirectory for each running process; the
18 subdirectory is named by the process ID. Each such subdirectory
19 contains the following pseudo-files and directories.
20
21 /proc/[pid]/auxv (since 2.6.0-test7)
22 This contains the contents of the ELF interpreter information
23 passed to the process at exec time. The format is one unsigned
24 long ID plus one unsigned long value for each entry. The last
25 entry contains two zeros.
26
27 /proc/[pid]/cmdline
28 This holds the complete command line for the process, unless the
29 process is a zombie. In the latter case, there is nothing in
30 this file: that is, a read on this file will return 0 charac‐
31 ters. The command-line arguments appear in this file as a set
32 of null-separated strings, with a further null byte ('\0') after
33 the last string.
34
35 /proc/[pid]/coredump_filter (since kernel 2.6.23)
36 See core(5).
37
38 /proc/[pid]/cpuset (since kernel 2.6.12)
39 See cpuset(7).
40
41 /proc/[pid]/cwd
42 This is a symbolic link to the current working directory of the
43 process. To find out the current working directory of process
44 20, for instance, you can do this:
45
46 $ cd /proc/20/cwd; /bin/pwd
47
48 Note that the pwd command is often a shell built-in, and might
49 not work properly. In bash(1), you may use pwd -P.
50
51 In a multithreaded process, the contents of this symbolic link
52 are not available if the main thread has already terminated
53 (typically by calling pthread_exit(3)).
54
55 /proc/[pid]/environ
56 This file contains the environment for the process. The entries
57 are separated by null bytes ('\0'), and there may be a null byte
58 at the end. Thus, to print out the environment of process 1,
59 you would do:
60
61 $ (cat /proc/1/environ; echo) | tr '\000' '\n'
62
63 /proc/[pid]/exe
64 Under Linux 2.2 and later, this file is a symbolic link contain‐
65 ing the actual pathname of the executed command. This symbolic
66 link can be dereferenced normally; attempting to open it will
67 open the executable. You can even type /proc/[pid]/exe to run
68 another copy of the same executable as is being run by process
69 [pid]. In a multithreaded process, the contents of this sym‐
70 bolic link are not available if the main thread has already ter‐
71 minated (typically by calling pthread_exit(3)).
72
73 Under Linux 2.0 and earlier /proc/[pid]/exe is a pointer to the
74 binary which was executed, and appears as a symbolic link. A
75 readlink(2) call on this file under Linux 2.0 returns a string
76 in the format:
77
78 [device]:inode
79
80 For example, [0301]:1502 would be inode 1502 on device major 03
81 (IDE, MFM, etc. drives) minor 01 (first partition on the first
82 drive).
83
84 find(1) with the -inum option can be used to locate the file.
85
86 /proc/[pid]/fd
87 This is a subdirectory containing one entry for each file which
88 the process has open, named by its file descriptor, and which is
89 a symbolic link to the actual file. Thus, 0 is standard input,
90 1 standard output, 2 standard error, etc.
91
92 In a multithreaded process, the contents of this directory are
93 not available if the main thread has already terminated (typi‐
94 cally by calling pthread_exit(3)).
95
96 Programs that will take a filename as a command-line argument,
97 but will not take input from standard input if no argument is
98 supplied, or that write to a file named as a command-line argu‐
99 ment, but will not send their output to standard output if no
100 argument is supplied, can nevertheless be made to use standard
101 input or standard out using /proc/[pid]/fd. For example, assum‐
102 ing that -i is the flag designating an input file and -o is the
103 flag designating an output file:
104
105 $ foobar -i /proc/self/fd/0 -o /proc/self/fd/1 ...
106
107 and you have a working filter.
108
109 /proc/self/fd/N is approximately the same as /dev/fd/N in some
110 Unix and Unix-like systems. Most Linux MAKEDEV scripts symboli‐
111 cally link /dev/fd to /proc/self/fd, in fact.
112
113 Most systems provide symbolic links /dev/stdin, /dev/stdout, and
114 /dev/stderr, which respectively link to the files 0, 1, and 2 in
115 /proc/self/fd. Thus the example command above could be written
116 as:
117
118 $ foobar -i /dev/stdin -o /dev/stdout ...
119
120 /proc/[pid]/fdinfo/ (since kernel 2.6.22)
121 This is a subdirectory containing one entry for each file which
122 the process has open, named by its file descriptor. The con‐
123 tents of each file can be read to obtain information about the
124 corresponding file descriptor, for example:
125
126 $ cat /proc/12015/fdinfo/4
127 pos: 1000
128 flags: 01002002
129
130 The pos field is a decimal number showing the current file off‐
131 set. The flags field is an octal number that displays the file
132 access mode and file status flags (see open(2)).
133
134 The files in this directory are readable only by the owner of
135 the process.
136
137 /proc/[pid]/limits (since kernel 2.6.24)
138 This file displays the soft limit, hard limit, and units of mea‐
139 surement for each of the process's resource limits (see getr‐
140 limit(2)). The file is protected to only allow reading by the
141 real UID of the process.
142
143 /proc/[pid]/maps
144 A file containing the currently mapped memory regions and their
145 access permissions.
146
147 The format is:
148
149 address perms offset dev inode pathname
150 08048000-08056000 r-xp 00000000 03:0c 64593 /usr/sbin/gpm
151 08056000-08058000 rw-p 0000d000 03:0c 64593 /usr/sbin/gpm
152 08058000-0805b000 rwxp 00000000 00:00 0
153 40000000-40013000 r-xp 00000000 03:0c 4165 /lib/ld-2.2.4.so
154 40013000-40015000 rw-p 00012000 03:0c 4165 /lib/ld-2.2.4.so
155 4001f000-40135000 r-xp 00000000 03:0c 45494 /lib/libc-2.2.4.so
156 40135000-4013e000 rw-p 00115000 03:0c 45494 /lib/libc-2.2.4.so
157 4013e000-40142000 rw-p 00000000 00:00 0
158 bffff000-c0000000 rwxp 00000000 00:00 0
159
160 where "address" is the address space in the process that it
161 occupies, "perms" is a set of permissions:
162
163 r = read
164 w = write
165 x = execute
166 s = shared
167 p = private (copy on write)
168
169 "offset" is the offset into the file/whatever, "dev" is the
170 device (major:minor), and "inode" is the inode on that device.
171 0 indicates that no inode is associated with the memory region,
172 as the case would be with BSS (uninitialized data).
173
174 Under Linux 2.0 there is no field giving pathname.
175
176 /proc/[pid]/mem
177 This file can be used to access the pages of a process's memory
178 through open(2), read(2), and lseek(2).
179
180 /proc/[pid]/mountinfo (since Linux 2.6.26)
181 This file contains information about mount points. It contains
182 lines of the form:
183
184 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
185 (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
186
187 The numbers in parentheses are labels for the descriptions
188 below:
189
190 (1) mount ID: unique identifier of the mount (may be reused
191 after umount(2)).
192
193 (2) parent ID: ID of parent mount (or of self for the top of
194 the mount tree).
195
196 (3) major:minor: value of st_dev for files on file system (see
197 stat(2)).
198
199 (4) root: root of the mount within the file system.
200
201 (5) mount point: mount point relative to the process's root.
202
203 (6) mount options: per-mount options.
204
205 (7) optional fields: zero or more fields of the form
206 "tag[:value]".
207
208 (8) separator: marks the end of the optional fields.
209
210 (9) file system type: name of file system in the form
211 "type[.subtype]".
212
213 (10) mount source: file system-specific information or "none".
214
215 (11) super options: per-super block options.
216
217 Parsers should ignore all unrecognized optional fields. Cur‐
218 rently the possible optional fields are:
219
220 shared:X mount is shared in peer group X
221
222 master:X mount is slave to peer group X
223
224 propagate_from:X mount is slave and receives propagation
225 from peer group X (*)
226
227 unbindable mount is unbindable
228
229 (*) X is the closest dominant peer group under the process's
230 root. If X is the immediate master of the mount, or if there is
231 no dominant peer group under the same root, then only the "mas‐
232 ter:X" field is present and not the "propagate_from:X" field.
233
234 For more information on mount propagation see: Documenta‐
235 tion/filesystems/sharedsubtree.txt in the kernel source tree.
236
237 /proc/[pid]/mounts (since Linux 2.4.19)
238 This is a list of all the file systems currently mounted in the
239 process's mount namespace. The format of this file is docu‐
240 mented in fstab(5). Since kernel version 2.6.15, this file is
241 pollable: after opening the file for reading, a change in this
242 file (i.e., a file system mount or unmount) causes select(2) to
243 mark the file descriptor as readable, and poll(2) and
244 epoll_wait(2) mark the file as having an error condition.
245
246 /proc/[pid]/mountstats (since Linux 2.6.17)
247 This file exports information (statistics, configuration infor‐
248 mation) about the mount points in the process's name space.
249 Lines in this file have the form:
250
251 device /dev/sda7 mounted on /home with fstype ext3 [statistics]
252 ( 1 ) ( 2 ) (3 ) (4)
253
254 The fields in each line are:
255
256 (1) The name of the mounted device (or "nodevice" if there is
257 no corresponding device).
258
259 (2) The mount point within the file system tree.
260
261 (3) The file system type.
262
263 (4) Optional statistics and configuration information. Cur‐
264 rently (as at Linux 2.6.26), only NFS file systems export
265 information via this field.
266
267 This file is only readable by the owner of the process.
268
269 /proc/[pid]/numa_maps (since Linux 2.6.14)
270 See numa(7).
271
272 /proc/[pid]/oom_adj (since Linux 2.6.11)
273 This file can be used to adjust the score used to select which
274 process should be killed in an out-of-memory (OOM) situation.
275 The kernel uses this value for a bit-shift operation of the
276 process's oom_score value: valid values are in the range -16 to
277 +15, plus the special value -17, which disables OOM-killing
278 altogether for this process. A positive score increases the
279 likelihood of this process being killed by the OOM-killer; a
280 negative score decreases the likelihood. The default value for
281 this file is 0; a new process inherits its parent's oom_adj set‐
282 ting. A process must be privileged (CAP_SYS_RESOURCE) to update
283 this file.
284
285 /proc/[pid]/oom_score (since Linux 2.6.11)
286 This file displays the current score that the kernel gives to
287 this process for the purpose of selecting a process for the OOM-
288 killer. A higher score means that the process is more likely to
289 be selected by the OOM-killer. The basis for this score is the
290 amount of memory used by the process, with increases (+) or
291 decreases (-) for factors including:
292
293 * whether the process creates a lot of children using fork(2)
294 (+);
295
296 * whether the process has been running a long time, or has used
297 a lot of CPU time (-);
298
299 * whether the process has a low nice value (i.e., > 0) (+);
300
301 * whether the process is privileged (-); and
302
303 * whether the process is making direct hardware access (-).
304
305 The oom_score also reflects the bit-shift adjustment specified
306 by the oom_adj setting for the process.
307
308 /proc/[pid]/root
309 Unix and Linux support the idea of a per-process root of the
310 file system, set by the chroot(2) system call. This file is a
311 symbolic link that points to the process's root directory, and
312 behaves as exe, fd/*, etc. do.
313
314 In a multithreaded process, the contents of this symbolic link
315 are not available if the main thread has already terminated
316 (typically by calling pthread_exit(3)).
317
318 /proc/[pid]/smaps (since Linux 2.6.14)
319 This file shows memory consumption for each of the process's
320 mappings. For each of mappings there is a series of lines such
321 as the following:
322
323 08048000-080bc000 r-xp 00000000 03:02 13130 /bin/bash
324 Size: 464 kB
325 Rss: 424 kB
326 Shared_Clean: 424 kB
327 Shared_Dirty: 0 kB
328 Private_Clean: 0 kB
329 Private_Dirty: 0 kB
330
331 The first of these lines shows the same information as is dis‐
332 played for the mapping in /proc/[pid]/maps. The remaining lines
333 show the size of the mapping, the amount of the mapping that is
334 currently resident in RAM, the number of clean and dirty shared
335 pages in the mapping, and the number of clean and dirty private
336 pages in the mapping.
337
338 This file is only present if the CONFIG_MMU kernel configuration
339 option is enabled.
340
341 /proc/[pid]/stat
342 Status information about the process. This is used by ps(1).
343 It is defined in /usr/src/linux/fs/proc/array.c.
344
345 The fields, in order, with their proper scanf(3) format speci‐
346 fiers, are:
347
348 pid %d The process ID.
349
350 comm %s The filename of the executable, in parentheses.
351 This is visible whether or not the executable is
352 swapped out.
353
354 state %c One character from the string "RSDZTW" where R is
355 running, S is sleeping in an interruptible wait, D
356 is waiting in uninterruptible disk sleep, Z is zom‐
357 bie, T is traced or stopped (on a signal), and W is
358 paging.
359
360 ppid %d The PID of the parent.
361
362 pgrp %d The process group ID of the process.
363
364 session %d The session ID of the process.
365
366 tty_nr %d The controlling terminal of the process. (The minor
367 device number is contained in the combination of
368 bits 31 to 20 and 7 to 0; the major device number is
369 in bits 15 to 8.)
370
371 tpgid %d The ID of the foreground process group of the con‐
372 trolling terminal of the process.
373
374 flags %u (%lu before Linux 2.6.22)
375 The kernel flags word of the process. For bit mean‐
376 ings, see the PF_* defines in <linux/sched.h>.
377 Details depend on the kernel version.
378
379 minflt %lu The number of minor faults the process has made
380 which have not required loading a memory page from
381 disk.
382
383 cminflt %lu The number of minor faults that the process's
384 waited-for children have made.
385
386 majflt %lu The number of major faults the process has made
387 which have required loading a memory page from disk.
388
389 cmajflt %lu The number of major faults that the process's
390 waited-for children have made.
391
392 utime %lu Amount of time that this process has been scheduled
393 in user mode, measured in clock ticks (divide by
394 sysconf(_SC_CLK_TCK). This includes guest time,
395 guest_time (time spent running a virtual CPU, see
396 below), so that applications that are not aware of
397 the guest time field do not lose that time from
398 their calculations.
399
400 stime %lu Amount of time that this process has been scheduled
401 in kernel mode, measured in clock ticks (divide by
402 sysconf(_SC_CLK_TCK).
403
404 cutime %ld Amount of time that this process's waited-for chil‐
405 dren have been scheduled in user mode, measured in
406 clock ticks (divide by sysconf(_SC_CLK_TCK). (See
407 also times(2).) This includes guest time,
408 cguest_time (time spent running a virtual CPU, see
409 below).
410
411 cstime %ld Amount of time that this process's waited-for chil‐
412 dren have been scheduled in kernel mode, measured in
413 clock ticks (divide by sysconf(_SC_CLK_TCK).
414
415 priority %ld
416 (Explanation for Linux 2.6) For processes running a
417 real-time scheduling policy (policy below; see
418 sched_setscheduler(2)), this is the negated schedul‐
419 ing priority, minus one; that is, a number in the
420 range -2 to -100, corresponding to real-time priori‐
421 ties 1 to 99. For processes running under a non-
422 real-time scheduling policy, this is the raw nice
423 value (setpriority(2)) as represented in the kernel.
424 The kernel stores nice values as numbers in the
425 range 0 (high) to 39 (low), corresponding to the
426 user-visible nice range of -20 to 19.
427
428 Before Linux 2.6, this was a scaled value based on
429 the scheduler weighting given to this process.
430
431 nice %ld The nice value (see setpriority(2)), a value in the
432 range 19 (low priority) to -20 (high priority).
433
434 num_threads %ld
435 Number of threads in this process (since Linux 2.6).
436 Before kernel 2.6, this field was hard coded to 0 as
437 a placeholder for an earlier removed field.
438
439 itrealvalue %ld
440 The time in jiffies before the next SIGALRM is sent
441 to the process due to an interval timer. Since ker‐
442 nel 2.6.17, this field is no longer maintained, and
443 is hard coded as 0.
444
445 starttime %llu (was %lu before Linux 2.6)
446 The time in jiffies the process started after system
447 boot.
448
449 vsize %lu Virtual memory size in bytes.
450
451 rss %ld Resident Set Size: number of pages the process has
452 in real memory. This is just the pages which count
453 towards text, data, or stack space. This does not
454 include pages which have not been demand-loaded in,
455 or which are swapped out.
456
457 rsslim %lu Current soft limit in bytes on the rss of the
458 process; see the description of RLIMIT_RSS in get‐
459 priority(2).
460
461 startcode %lu
462 The address above which program text can run.
463
464 endcode %lu The address below which program text can run.
465
466 startstack %lu
467 The address of the start (i.e., bottom) of the
468 stack.
469
470 kstkesp %lu The current value of ESP (stack pointer), as found
471 in the kernel stack page for the process.
472
473 kstkeip %lu The current EIP (instruction pointer).
474
475 signal %lu The bitmap of pending signals, displayed as a deci‐
476 mal number. Obsolete, because it does not provide
477 information on real-time signals; use
478 /proc/[pid]/status instead.
479
480 blocked %lu The bitmap of blocked signals, displayed as a deci‐
481 mal number. Obsolete, because it does not provide
482 information on real-time signals; use
483 /proc/[pid]/status instead.
484
485 sigignore %lu
486 The bitmap of ignored signals, displayed as a deci‐
487 mal number. Obsolete, because it does not provide
488 information on real-time signals; use
489 /proc/[pid]/status instead.
490
491 sigcatch %lu
492 The bitmap of caught signals, displayed as a decimal
493 number. Obsolete, because it does not provide
494 information on real-time signals; use
495 /proc/[pid]/status instead.
496
497 wchan %lu This is the "channel" in which the process is wait‐
498 ing. It is the address of a system call, and can be
499 looked up in a namelist if you need a textual name.
500 (If you have an up-to-date /etc/psdatabase, then try
501 ps -l to see the WCHAN field in action.)
502
503 nswap %lu Number of pages swapped (not maintained).
504
505 cnswap %lu Cumulative nswap for child processes (not main‐
506 tained).
507
508 exit_signal %d (since Linux 2.1.22)
509 Signal to be sent to parent when we die.
510
511 processor %d (since Linux 2.2.8)
512 CPU number last executed on.
513
514 rt_priority %u (since Linux 2.5.19; was %lu before Linux 2.6.22)
515 Real-time scheduling priority, a number in the range
516 1 to 99 for processes scheduled under a real-time
517 policy, or 0, for non-real-time processes (see
518 sched_setscheduler(2)).
519
520 policy %u (since Linux 2.5.19; was %lu before Linux 2.6.22)
521 Scheduling policy (see sched_setscheduler(2)).
522 Decode using the SCHED_* constants in linux/sched.h.
523
524 delayacct_blkio_ticks %llu (since Linux 2.6.18)
525 Aggregated block I/O delays, measured in clock ticks
526 (centiseconds).
527
528 guest_time %lu (since Linux 2.6.24)
529 Guest time of the process (time spent running a vir‐
530 tual CPU for a guest operating system), measured in
531 clock ticks (divide by sysconf(_SC_CLK_TCK).
532
533 cguest_time %ld (since Linux 2.6.24)
534 Guest time of the process's children, measured in
535 clock ticks (divide by sysconf(_SC_CLK_TCK).
536
537 /proc/[pid]/statm
538 Provides information about memory usage, measured in pages. The
539 columns are:
540
541 size total program size
542 (same as VmSize in /proc/[pid]/status)
543 resident resident set size
544 (same as VmRSS in /proc/[pid]/status)
545 share shared pages (from shared mappings)
546 text text (code)
547 lib library (unused in Linux 2.6)
548 data data + stack
549 dt dirty pages (unused in Linux 2.6)
550
551 /proc/[pid]/status
552 Provides much of the information in /proc/[pid]/stat and
553 /proc/[pid]/statm in a format that's easier for humans to parse.
554 Here's an example:
555
556 $ cat /proc/$$/status
557 Name: bash
558 State: S (sleeping)
559 Tgid: 3515
560 Pid: 3515
561 PPid: 3452
562 TracerPid: 0
563 Uid: 1000 1000 1000 1000
564 Gid: 100 100 100 100
565 FDSize: 256
566 Groups: 16 33 100
567 VmPeak: 9136 kB
568 VmSize: 7896 kB
569 VmLck: 0 kB
570 VmHWM: 7572 kB
571 VmRSS: 6316 kB
572 VmData: 5224 kB
573 VmStk: 88 kB
574 VmExe: 572 kB
575 VmLib: 1708 kB
576 VmPTE: 20 kB
577 Threads: 1
578 SigQ: 0/3067
579 SigPnd: 0000000000000000
580 ShdPnd: 0000000000000000
581 SigBlk: 0000000000010000
582 SigIgn: 0000000000384004
583 SigCgt: 000000004b813efb
584 CapInh: 0000000000000000
585 CapPrm: 0000000000000000
586 CapEff: 0000000000000000
587 CapBnd: ffffffffffffffff
588 Cpus_allowed: 00000001
589 Cpus_allowed_list: 0
590 Mems_allowed: 1
591 Mems_allowed_list: 0
592 voluntary_ctxt_switches: 150
593 nonvoluntary_ctxt_switches: 545
594
595 The fields are as follows:
596
597 * Name: Command run by this process.
598
599 * State: Current state of the process. One of "R (running)", "S
600 (sleeping)", "D (disk sleep)", "T (stopped)", "T (tracing
601 stop)", "Z (zombie)", or "X (dead)".
602
603 * Tgid: Thread group ID (i.e., Process ID).
604
605 * Pid: Thread ID (see gettid(2)).
606
607 * TracerPid: PID of process tracing this process (0 if not being
608 traced).
609
610 * Uid, Gid: Real, effective, saved set, and file system UIDs
611 (GIDs).
612
613 * FDSize: Number of file descriptor slots currently allocated.
614
615 * Groups: Supplementary group list.
616
617 * VmPeak: Peak virtual memory size.
618
619 * VmSize: Virtual memory size.
620
621 * VmLck: Locked memory size.
622
623 * VmHWM: Peak resident set size ("high water mark").
624
625 * VmRSS: Resident set size.
626
627 * VmData, VmStk, VmExe: Size of data, stack, and text segments.
628
629 * VmLib: Shared library code size.
630
631 * VmPTE: Page table entries size (since Linux 2.6.10).
632
633 * Threads: Number of threads in process containing this thread.
634
635 * SigPnd, ShdPnd: Number of signals pending for thread and for
636 process as a whole (see pthreads(7) and signal(7)).
637
638 * SigBlk, SigIgn, SigCgt: Masks indicating signals being
639 blocked, ignored, and caught (see signal(7)).
640
641 * CapInh, CapPrm, CapEff: Masks of capabilities enabled in
642 inheritable, permitted, and effective sets (see capabili‐
643 ties(7)).
644
645 * CapBnd: Capability Bounding set (since kernel 2.6.26, see
646 capabilities(7)).
647
648 * Cpus_allowed: Mask of CPUs on which this process may run
649 (since Linux 2.6.24, see cpuset(7)).
650
651 * Cpus_allowed_list: Same as previous, but in "list format"
652 (since Linux 2.6.26, see cpuset(7)).
653
654 * Mems_allowed: Mask of memory nodes allowed to this process
655 (since Linux 2.6.24, see cpuset(7)).
656
657 * Mems_allowed_list: Same as previous, but in "list format"
658 (since Linux 2.6.26, see cpuset(7)).
659
660 * voluntary_context_switches, nonvoluntary_context_switches:
661 Number of voluntary and involuntary context switches (since
662 Linux 2.6.23).
663
664 /proc/[pid]/task (since Linux 2.6.0-test6)
665 This is a directory that contains one subdirectory for each
666 thread in the process. The name of each subdirectory is the
667 numerical thread ID ([tid]) of the thread (see gettid(2)).
668 Within each of these subdirectories, there is a set of files
669 with the same names and contents as under the /proc/[pid] direc‐
670 tories. For attributes that are shared by all threads, the con‐
671 tents for each of the files under the task/[tid] subdirectories
672 will be the same as in the corresponding file in the parent
673 /proc/[pid] directory (e.g., in a multithreaded process, all of
674 the task/[tid]/cwd files will have the same value as the
675 /proc/[pid]/cwd file in the parent directory, since all of the
676 threads in a process share a working directory). For attributes
677 that are distinct for each thread, the corresponding files under
678 task/[tid] may have different values (e.g., various fields in
679 each of the task/[tid]/status files may be different for each
680 thread).
681
682 In a multithreaded process, the contents of the /proc/[pid]/task
683 directory are not available if the main thread has already ter‐
684 minated (typically by calling pthread_exit(3)).
685
686 /proc/apm
687 Advanced power management version and battery information when
688 CONFIG_APM is defined at kernel compilation time.
689
690 /proc/bus
691 Contains subdirectories for installed busses.
692
693 /proc/bus/pccard
694 Subdirectory for PCMCIA devices when CONFIG_PCMCIA is set at
695 kernel compilation time.
696
697 /proc/bus/pccard/drivers
698
699 /proc/bus/pci
700 Contains various bus subdirectories and pseudo-files containing
701 information about PCI busses, installed devices, and device
702 drivers. Some of these files are not ASCII.
703
704 /proc/bus/pci/devices
705 Information about PCI devices. They may be accessed through
706 lspci(8) and setpci(8).
707
708 /proc/cmdline
709 Arguments passed to the Linux kernel at boot time. Often done
710 via a boot manager such as lilo(8) or grub(8).
711
712 /proc/config.gz (since Linux 2.6)
713 This file exposes the configuration options that were used to
714 build the currently running kernel, in the same format as they
715 would be shown in the .config file that resulted when configur‐
716 ing the kernel (using make xconfig, make config, or similar).
717 The file contents are compressed; view or search them using
718 zcat(1), zgrep(1), etc. As long as no changes have been made to
719 the following file, the contents of /proc/config.gz are the same
720 as those provided by :
721
722 cat /lib/modules/$(uname -r)/build/.config
723
724 /proc/config.gz is only provided if the kernel is configured
725 with CONFIG_IKCONFIG_PROC.
726
727 /proc/cpuinfo
728 This is a collection of CPU and system architecture dependent
729 items, for each supported architecture a different list. Two
730 common entries are processor which gives CPU number and
731 bogomips; a system constant that is calculated during kernel
732 initialization. SMP machines have information for each CPU.
733
734 /proc/devices
735 Text listing of major numbers and device groups. This can be
736 used by MAKEDEV scripts for consistency with the kernel.
737
738 /proc/diskstats (since Linux 2.5.69)
739 This file contains disk I/O statistics for each disk device.
740 See the kernel source file Documentation/iostats.txt for further
741 information.
742
743 /proc/dma
744 This is a list of the registered ISA DMA (direct memory access)
745 channels in use.
746
747 /proc/driver
748 Empty subdirectory.
749
750 /proc/execdomains
751 List of the execution domains (ABI personalities).
752
753 /proc/fb
754 Frame buffer information when CONFIG_FB is defined during kernel
755 compilation.
756
757 /proc/filesystems
758 A text listing of the file systems which are supported by the
759 kernel, namely file systems which were compiled into the kernel
760 or whose kernel modules are currently loaded. (See also
761 filesystems(5).) If a file system is marked with "nodev", this
762 means that it does not require a block device to be mounted
763 (e.g., virtual file system, network file system).
764
765 Incidentally, this file may be used by mount(8) when no file
766 system is specified and it didn't manage to determine the file
767 system type. Then file systems contained in this file are tried
768 (excepted those that are marked with "nodev").
769
770 /proc/fs
771 Empty subdirectory.
772
773 /proc/ide
774 This directory exists on systems with the IDE bus. There are
775 directories for each IDE channel and attached device. Files
776 include:
777
778 cache buffer size in KB
779 capacity number of sectors
780 driver driver version
781 geometry physical and logical geometry
782 identify in hexadecimal
783 media media type
784 model manufacturer's model number
785 settings drive settings
786 smart_thresholds in hexadecimal
787 smart_values in hexadecimal
788
789 The hdparm(8) utility provides access to this information in a
790 friendly format.
791
792 /proc/interrupts
793 This is used to record the number of interrupts per CPU per IO
794 device. Since Linux 2.6.24, for the i386 and x86_64 architec‐
795 tures, at least, this also includes interrupts internal to the
796 system (that is, not associated with a device as such), such as
797 NMI (nonmaskable interrupt), LOC (local timer interrupt), and
798 for SMP systems, TLB (TLB flush interrupt), RES (rescheduling
799 interrupt), CAL (remote function call interrupt), and possibly
800 others. Very easy to read formatting, done in ASCII.
801
802 /proc/iomem
803 I/O memory map in Linux 2.4.
804
805 /proc/ioports
806 This is a list of currently registered Input-Output port regions
807 that are in use.
808
809 /proc/kallsyms (since Linux 2.5.71)
810 This holds the kernel exported symbol definitions used by the
811 modules(X) tools to dynamically link and bind loadable modules.
812 In Linux 2.5.47 and earlier, a similar file with slightly dif‐
813 ferent syntax was named ksyms.
814
815 /proc/kcore
816 This file represents the physical memory of the system and is
817 stored in the ELF core file format. With this pseudo-file, and
818 an unstripped kernel (/usr/src/linux/vmlinux) binary, GDB can be
819 used to examine the current state of any kernel data structures.
820
821 The total length of the file is the size of physical memory
822 (RAM) plus 4KB.
823
824 /proc/kmsg
825 This file can be used instead of the syslog(2) system call to
826 read kernel messages. A process must have superuser privileges
827 to read this file, and only one process should read this file.
828 This file should not be read if a syslog process is running
829 which uses the syslog(2) system call facility to log kernel mes‐
830 sages.
831
832 Information in this file is retrieved with the dmesg(1) program.
833
834 /proc/ksyms (Linux 1.1.23-2.5.47)
835 See /proc/kallsyms.
836
837 /proc/loadavg
838 The first three fields in this file are load average figures
839 giving the number of jobs in the run queue (state R) or waiting
840 for disk I/O (state D) averaged over 1, 5, and 15 minutes. They
841 are the same as the load average numbers given by uptime(1) and
842 other programs. The fourth field consists of two numbers sepa‐
843 rated by a slash (/). The first of these is the number of cur‐
844 rently executing kernel scheduling entities (processes,
845 threads); this will be less than or equal to the number of CPUs.
846 The value after the slash is the number of kernel scheduling
847 entities that currently exist on the system. The fifth field is
848 the PID of the process that was most recently created on the
849 system.
850
851 /proc/locks
852 This file shows current file locks (flock(2) and fcntl(2)) and
853 leases (fcntl(2)).
854
855 /proc/malloc (only up to and including Linux 2.2)
856 This file is only present if CONFIG_DEBUG_MALLOC was defined
857 during compilation.
858
859 /proc/meminfo
860 This file reports statistics about memory usage on the system.
861 It is used by free(1) to report the amount of free and used mem‐
862 ory (both physical and swap) on the system as well as the shared
863 memory and buffers used by the kernel.
864
865 /proc/modules
866 A text list of the modules that have been loaded by the system.
867 See also lsmod(8).
868
869 /proc/mounts
870 Before kernel 2.4.19, this file was a list of all the file sys‐
871 tems currently mounted on the system. With the introduction of
872 per-process mount namespaces in Linux 2.4.19, this file became a
873 link to /proc/self/mounts, which lists the mount points of the
874 process's own mount namespace. The format of this file is docu‐
875 mented in fstab(5).
876
877 /proc/mtrr
878 Memory Type Range Registers. See the kernel source file Docu‐
879 mentation/mtrr.txt for details.
880
881 /proc/net
882 various net pseudo-files, all of which give the status of some
883 part of the networking layer. These files contain ASCII struc‐
884 tures and are, therefore, readable with cat(1). However, the
885 standard netstat(8) suite provides much cleaner access to these
886 files.
887
888 /proc/net/arp
889 This holds an ASCII readable dump of the kernel ARP table used
890 for address resolutions. It will show both dynamically learned
891 and preprogrammed ARP entries. The format is:
892
893 IP address HW type Flags HW address Mask Device
894 192.168.0.50 0x1 0x2 00:50:BF:25:68:F3 * eth0
895 192.168.0.250 0x1 0xc 00:00:00:00:00:00 * eth0
896
897 Here "IP address" is the IPv4 address of the machine and the "HW
898 type" is the hardware type of the address from RFC 826. The
899 flags are the internal flags of the ARP structure (as defined in
900 /usr/include/linux/if_arp.h) and the "HW address" is the data
901 link layer mapping for that IP address if it is known.
902
903 /proc/net/dev
904 The dev pseudo-file contains network device status information.
905 This gives the number of received and sent packets, the number
906 of errors and collisions and other basic statistics. These are
907 used by the ifconfig(8) program to report device status. The
908 format is:
909
910 Inter-| Receive | Transmit
911 face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
912 lo: 2776770 11307 0 0 0 0 0 0 2776770 11307 0 0 0 0 0 0
913 eth0: 1215645 2751 0 0 0 0 0 0 1782404 4324 0 0 0 427 0 0
914 ppp0: 1622270 5552 1 0 0 0 0 0 354130 5669 0 0 0 0 0 0
915 tap0: 7714 81 0 0 0 0 0 0 7714 81 0 0 0 0 0 0
916
917 /proc/net/dev_mcast
918 Defined in /usr/src/linux/net/core/dev_mcast.c:
919 indx interface_name dmi_u dmi_g dmi_address
920 2 eth0 1 0 01005e000001
921 3 eth1 1 0 01005e000001
922 4 eth2 1 0 01005e000001
923
924 /proc/net/igmp
925 Internet Group Management Protocol. Defined in
926 /usr/src/linux/net/core/igmp.c.
927
928 /proc/net/rarp
929 This file uses the same format as the arp file and contains the
930 current reverse mapping database used to provide rarp(8) reverse
931 address lookup services. If RARP is not configured into the
932 kernel, this file will not be present.
933
934 /proc/net/raw
935 Holds a dump of the RAW socket table. Much of the information
936 is not of use apart from debugging. The "sl" value is the ker‐
937 nel hash slot for the socket, the "local_address" is the local
938 address and protocol number pair. "St" is the internal status
939 of the socket. The "tx_queue" and "rx_queue" are the outgoing
940 and incoming data queue in terms of kernel memory usage. The
941 "tr", "tm->when", and "rexmits" fields are not used by RAW. The
942 "uid" field holds the effective UID of the creator of the
943 socket.
944
945 /proc/net/snmp
946 This file holds the ASCII data needed for the IP, ICMP, TCP, and
947 UDP management information bases for an SNMP agent.
948
949 /proc/net/tcp
950 Holds a dump of the TCP socket table. Much of the information
951 is not of use apart from debugging. The "sl" value is the ker‐
952 nel hash slot for the socket, the "local_address" is the local
953 address and port number pair. The "rem_address" is the remote
954 address and port number pair (if connected). "St" is the inter‐
955 nal status of the socket. The "tx_queue" and "rx_queue" are the
956 outgoing and incoming data queue in terms of kernel memory
957 usage. The "tr", "tm->when", and "rexmits" fields hold internal
958 information of the kernel socket state and are only useful for
959 debugging. The "uid" field holds the effective UID of the cre‐
960 ator of the socket.
961
962 /proc/net/udp
963 Holds a dump of the UDP socket table. Much of the information
964 is not of use apart from debugging. The "sl" value is the ker‐
965 nel hash slot for the socket, the "local_address" is the local
966 address and port number pair. The "rem_address" is the remote
967 address and port number pair (if connected). "St" is the inter‐
968 nal status of the socket. The "tx_queue" and "rx_queue" are the
969 outgoing and incoming data queue in terms of kernel memory
970 usage. The "tr", "tm->when", and "rexmits" fields are not used
971 by UDP. The "uid" field holds the effective UID of the creator
972 of the socket. The format is:
973
974 sl local_address rem_address st tx_queue rx_queue tr rexmits tm->when uid
975 1: 01642C89:0201 0C642C89:03FF 01 00000000:00000001 01:000071BA 00000000 0
976 1: 00000000:0801 00000000:0000 0A 00000000:00000000 00:00000000 6F000100 0
977 1: 00000000:0201 00000000:0000 0A 00000000:00000000 00:00000000 00000000 0
978
979 /proc/net/unix
980 Lists the Unix domain sockets present within the system and
981 their status. The format is:
982 Num RefCount Protocol Flags Type St Path
983 0: 00000002 00000000 00000000 0001 03
984 1: 00000001 00000000 00010000 0001 01 /dev/printer
985
986 Here "Num" is the kernel table slot number, "RefCount" is the
987 number of users of the socket, "Protocol" is currently always 0,
988 "Flags" represent the internal kernel flags holding the status
989 of the socket. Currently, type is always "1" (Unix domain data‐
990 gram sockets are not yet supported in the kernel). "St" is the
991 internal state of the socket and Path is the bound path (if any)
992 of the socket.
993
994 /proc/partitions
995 Contains major and minor numbers of each partition as well as
996 number of blocks and partition name.
997
998 /proc/pci
999 This is a listing of all PCI devices found during kernel ini‐
1000 tialization and their configuration.
1001
1002 This file has been deprecated in favor of a new /proc interface
1003 for PCI (/proc/bus/pci). It became optional in Linux 2.2
1004 (available with CONFIG_PCI_OLD_PROC set at kernel compilation).
1005 It became once more nonoptionally enabled in Linux 2.4. Next,
1006 it was deprecated in Linux 2.6 (still available with CON‐
1007 FIG_PCI_LEGACY_PROC set), and finally removed altogether since
1008 Linux 2.6.17.
1009
1010 /proc/scsi
1011 A directory with the scsi mid-level pseudo-file and various SCSI
1012 low-level driver directories, which contain a file for each SCSI
1013 host in this system, all of which give the status of some part
1014 of the SCSI IO subsystem. These files contain ASCII structures
1015 and are, therefore, readable with cat(1).
1016
1017 You can also write to some of the files to reconfigure the sub‐
1018 system or switch certain features on or off.
1019
1020 /proc/scsi/scsi
1021 This is a listing of all SCSI devices known to the kernel. The
1022 listing is similar to the one seen during bootup. scsi cur‐
1023 rently supports only the add-single-device command which allows
1024 root to add a hotplugged device to the list of known devices.
1025
1026 The command
1027
1028 echo 'scsi add-single-device 1 0 5 0' > /proc/scsi/scsi
1029
1030 will cause host scsi1 to scan on SCSI channel 0 for a device on
1031 ID 5 LUN 0. If there is already a device known on this address
1032 or the address is invalid, an error will be returned.
1033
1034 /proc/scsi/[drivername]
1035 [drivername] can currently be NCR53c7xx, aha152x, aha1542,
1036 aha1740, aic7xxx, buslogic, eata_dma, eata_pio, fdomain, in2000,
1037 pas16, qlogic, scsi_debug, seagate, t128, u15-24f, ultrastore,
1038 or wd7000. These directories show up for all drivers that reg‐
1039 istered at least one SCSI HBA. Every directory contains one
1040 file per registered host. Every host-file is named after the
1041 number the host was assigned during initialization.
1042
1043 Reading these files will usually show driver and host configura‐
1044 tion, statistics, etc.
1045
1046 Writing to these files allows different things on different
1047 hosts. For example, with the latency and nolatency commands,
1048 root can switch on and off command latency measurement code in
1049 the eata_dma driver. With the lockup and unlock commands, root
1050 can control bus lockups simulated by the scsi_debug driver.
1051
1052 /proc/self
1053 This directory refers to the process accessing the /proc file
1054 system, and is identical to the /proc directory named by the
1055 process ID of the same process.
1056
1057 /proc/slabinfo
1058 Information about kernel caches. Since Linux 2.6.16 this file
1059 is only present if the CONFIG_SLAB kernel configuration option
1060 is enabled. The columns in /proc/slabinfo are:
1061
1062 cache-name
1063 num-active-objs
1064 total-objs
1065 object-size
1066 num-active-slabs
1067 total-slabs
1068 num-pages-per-slab
1069
1070 See slabinfo(5) for details.
1071
1072 /proc/stat
1073 kernel/system statistics. Varies with architecture. Common
1074 entries include:
1075
1076 cpu 3357 0 4313 1362393
1077 The amount of time, measured in units of USER_HZ
1078 (1/100ths of a second on most architectures, use
1079 sysconf(_SC_CLK_TCK) to obtain the right value), that the
1080 system spent in user mode, user mode with low priority
1081 (nice), system mode, and the idle task, respectively.
1082 The last value should be USER_HZ times the second entry
1083 in the uptime pseudo-file.
1084
1085 In Linux 2.6 this line includes three additional columns:
1086 iowait - time waiting for I/O to complete (since 2.5.41);
1087 irq - time servicing interrupts (since 2.6.0-test4);
1088 softirq - time servicing softirqs (since 2.6.0-test4).
1089
1090 Since Linux 2.6.11, there is an eighth column, steal -
1091 stolen time, which is the time spent in other operating
1092 systems when running in a virtualized environment
1093
1094 Since Linux 2.6.24, there is a ninth column, guest, which
1095 is the time spent running a virtual CPU for guest operat‐
1096 ing systems under the control of the Linux kernel.
1097
1098 page 5741 1808
1099 The number of pages the system paged in and the number
1100 that were paged out (from disk).
1101
1102 swap 1 0
1103 The number of swap pages that have been brought in and
1104 out.
1105
1106 intr 1462898
1107 This line shows counts of interrupts serviced since boot
1108 time, for each of the possible system interrupts. The
1109 first column is the total of all interrupts serviced;
1110 each subsequent column is the total for a particular
1111 interrupt.
1112
1113 disk_io: (2,0):(31,30,5764,1,2) (3,0):...
1114 (major,disk_idx):(noinfo, read_io_ops, blks_read,
1115 write_io_ops, blks_written)
1116 (Linux 2.4 only)
1117
1118 ctxt 115315
1119 The number of context switches that the system underwent.
1120
1121 btime 769041601
1122 boot time, in seconds since the Epoch, 1970-01-01
1123 00:00:00 +0000 (UTC).
1124
1125 processes 86031
1126 Number of forks since boot.
1127
1128 procs_running 6
1129 Number of processes in runnable state. (Linux 2.5.45
1130 onwards.)
1131
1132 procs_blocked 2
1133 Number of processes blocked waiting for I/O to complete.
1134 (Linux 2.5.45 onwards.)
1135
1136 /proc/swaps
1137 Swap areas in use. See also swapon(8).
1138
1139 /proc/sys
1140 This directory (present since 1.3.57) contains a number of files
1141 and subdirectories corresponding to kernel variables. These
1142 variables can be read and sometimes modified using the /proc
1143 file system, and the (deprecated) sysctl(2) system call.
1144
1145 /proc/sys/abi (since Linux 2.4.10)
1146 This directory may contain files with application binary infor‐
1147 mation. See the kernel source file Documentation/sysctl/abi.txt
1148 for more information.
1149
1150 /proc/sys/debug
1151 This directory may be empty.
1152
1153 /proc/sys/dev
1154 This directory contains device-specific information (e.g.,
1155 dev/cdrom/info). On some systems, it may be empty.
1156
1157 /proc/sys/fs
1158 This directory contains the files and subdirectories for kernel
1159 variables related to file systems.
1160
1161 /proc/sys/fs/binfmt_misc
1162 Documentation for files in this directory can be found in the
1163 kernel sources in Documentation/binfmt_misc.txt.
1164
1165 /proc/sys/fs/dentry-state (since Linux 2.2)
1166 This file contains information about the status of the directory
1167 cache (dcache). The file contains six numbers, nr_dentry,
1168 nr_unused, age_limit (age in seconds), want_pages (pages
1169 requested by system) and two dummy values.
1170
1171 * nr_dentry is the number of allocated dentries (dcache
1172 entries). This field is unused in Linux 2.2.
1173
1174 * nr_unused is the number of unused dentries.
1175
1176 * age_limit is the age in seconds after which dcache entries can
1177 be reclaimed when memory is short.
1178
1179 * want_pages is nonzero when the kernel has called
1180 shrink_dcache_pages() and the dcache isn't pruned yet.
1181
1182 /proc/sys/fs/dir-notify-enable
1183 This file can be used to disable or enable the dnotify interface
1184 described in fcntl(2) on a system-wide basis. A value of 0 in
1185 this file disables the interface, and a value of 1 enables it.
1186
1187 /proc/sys/fs/dquot-max
1188 This file shows the maximum number of cached disk quota entries.
1189 On some (2.4) systems, it is not present. If the number of free
1190 cached disk quota entries is very low and you have some awesome
1191 number of simultaneous system users, you might want to raise the
1192 limit.
1193
1194 /proc/sys/fs/dquot-nr
1195 This file shows the number of allocated disk quota entries and
1196 the number of free disk quota entries.
1197
1198 /proc/sys/fs/epoll (since Linux 2.6.28)
1199 This directory contains the file max_user_watches, which can be
1200 used to limit the amount of kernel memory consumed by the epoll
1201 interface. For further details, see epoll(7).
1202
1203 /proc/sys/fs/file-max
1204 This file defines a system-wide limit on the number of open
1205 files for all processes. This limit is not applied when a root
1206 user (or any user with CAP_SYS_ADMIN privileges) is trying to
1207 open a file. (See also setrlimit(2), which can be used by a
1208 process to set the per-process limit, RLIMIT_NOFILE, on the num‐
1209 ber of files it may open.) If you get lots of error messages
1210 about running out of file handles, try increasing this value:
1211
1212 echo 100000 > /proc/sys/fs/file-max
1213
1214 The kernel constant NR_OPEN imposes an upper limit on the value
1215 that may be placed in file-max.
1216
1217 If you increase /proc/sys/fs/file-max, be sure to increase
1218 /proc/sys/fs/inode-max to 3-4 times the new value of
1219 /proc/sys/fs/file-max, or you will run out of inodes.
1220
1221 /proc/sys/fs/file-nr
1222 This (read-only) file gives the number of files presently
1223 opened. It contains three numbers: the number of allocated file
1224 handles; the number of free file handles; and the maximum number
1225 of file handles. The kernel allocates file handles dynamically,
1226 but it doesn't free them again. If the number of allocated
1227 files is close to the maximum, you should consider increasing
1228 the maximum. When the number of free file handles is large,
1229 you've encountered a peak in your usage of file handles and you
1230 probably don't need to increase the maximum.
1231
1232 /proc/sys/fs/inode-max
1233 This file contains the maximum number of in-memory inodes. On
1234 some (2.4) systems, it may not be present. This value should be
1235 3-4 times larger than the value in file-max, since stdin, stdout
1236 and network sockets also need an inode to handle them. When you
1237 regularly run out of inodes, you need to increase this value.
1238
1239 /proc/sys/fs/inode-nr
1240 This file contains the first two values from inode-state.
1241
1242 /proc/sys/fs/inode-state
1243 This file contains seven numbers: nr_inodes, nr_free_inodes,
1244 preshrink, and four dummy values. nr_inodes is the number of
1245 inodes the system has allocated. This can be slightly more than
1246 inode-max because Linux allocates them one page full at a time.
1247 nr_free_inodes represents the number of free inodes. preshrink
1248 is nonzero when the nr_inodes > inode-max and the system needs
1249 to prune the inode list instead of allocating more.
1250
1251 /proc/sys/fs/inotify (since Linux 2.6.13)
1252 This directory contains files max_queued_events,
1253 max_user_instances, and max_user_watches, that can be used to
1254 limit the amount of kernel memory consumed by the inotify inter‐
1255 face. For further details, see inotify(7).
1256
1257 /proc/sys/fs/lease-break-time
1258 This file specifies the grace period that the kernel grants to a
1259 process holding a file lease (fcntl(2)) after it has sent a sig‐
1260 nal to that process notifying it that another process is waiting
1261 to open the file. If the lease holder does not remove or down‐
1262 grade the lease within this grace period, the kernel forcibly
1263 breaks the lease.
1264
1265 /proc/sys/fs/leases-enable
1266 This file can be used to enable or disable file leases
1267 (fcntl(2)) on a system-wide basis. If this file contains the
1268 value 0, leases are disabled. A nonzero value enables leases.
1269
1270 /proc/sys/fs/mqueue (since Linux 2.6.6)
1271 This directory contains files msg_max, msgsize_max, and
1272 queues_max, controlling the resources used by POSIX message
1273 queues. See mq_overview(7) for details.
1274
1275 /proc/sys/fs/overflowgid and /proc/sys/fs/overflowuid
1276 These files allow you to change the value of the fixed UID and
1277 GID. The default is 65534. Some file systems only support
1278 16-bit UIDs and GIDs, although in Linux UIDs and GIDs are 32
1279 bits. When one of these file systems is mounted with writes
1280 enabled, any UID or GID that would exceed 65535 is translated to
1281 the overflow value before being written to disk.
1282
1283 /proc/sys/fs/pipe-max-size (since Linux 2.6.35)
1284 The value in this file defines an upper limit for raising the
1285 capacity of a pipe using the fcntl(2) F_SETPIPE_SZ operation.
1286 This limit applies only to unprivileged processes. The default
1287 value for this file is 1,048,576. The value assigned to this
1288 file may be rounded upward, to reflect the value actually
1289 employed for a convenient implementation. To determine the
1290 rounded-up value, display the contents of this file after
1291 assigning a value to it. The minimum value that can be assigned
1292 to this file is the system page size.
1293
1294 /proc/sys/fs/suid_dumpable (since Linux 2.6.13)
1295 The value in this file determines whether core dump files are
1296 produced for set-user-ID or otherwise protected/tainted bina‐
1297 ries. Three different integer values can be specified:
1298
1299 0 (default) This provides the traditional (pre-Linux 2.6.13)
1300 behavior. A core dump will not be produced for a process which
1301 has changed credentials (by calling seteuid(2), setgid(2), or
1302 similar, or by executing a set-user-ID or set-group-ID program)
1303 or whose binary does not have read permission enabled.
1304
1305 1 ("debug") All processes dump core when possible. The core
1306 dump is owned by the file system user ID of the dumping process
1307 and no security is applied. This is intended for system debug‐
1308 ging situations only. Ptrace is unchecked.
1309
1310 2 ("suidsafe") Any binary which normally would not be dumped
1311 (see "0" above) is dumped readable by root only. This allows
1312 the user to remove the core dump file but not to read it. For
1313 security reasons core dumps in this mode will not overwrite one
1314 another or other files. This mode is appropriate when adminis‐
1315 trators are attempting to debug problems in a normal environ‐
1316 ment.
1317
1318 /proc/sys/fs/super-max
1319 This file controls the maximum number of superblocks, and thus
1320 the maximum number of mounted file systems the kernel can have.
1321 You only need to increase super-max if you need to mount more
1322 file systems than the current value in super-max allows you to.
1323
1324 /proc/sys/fs/super-nr
1325 This file contains the number of file systems currently mounted.
1326
1327 /proc/sys/kernel
1328 This directory contains files controlling a range of kernel
1329 parameters, as described below.
1330
1331 /proc/sys/kernel/acct
1332 This file contains three numbers: highwater, lowwater, and fre‐
1333 quency. If BSD-style process accounting is enabled these values
1334 control its behavior. If free space on file system where the
1335 log lives goes below lowwater percent accounting suspends. If
1336 free space gets above highwater percent accounting resumes.
1337 frequency determines how often the kernel checks the amount of
1338 free space (value is in seconds). Default values are 4, 2 and
1339 30. That is, suspend accounting if 2% or less space is free;
1340 resume it if 4% or more space is free; consider information
1341 about amount of free space valid for 30 seconds.
1342
1343 /proc/sys/kernel/cap-bound (from Linux 2.2 to 2.6.24)
1344 This file holds the value of the kernel capability bounding set
1345 (expressed as a signed decimal number). This set is ANDed
1346 against the capabilities permitted to a process during
1347 execve(2). Starting with Linux 2.6.25, the system-wide capabil‐
1348 ity bounding set disappeared, and was replaced by a per-thread
1349 bounding set; see capabilities(7).
1350
1351 /proc/sys/kernel/core_pattern
1352 See core(5).
1353
1354 /proc/sys/kernel/core_uses_pid
1355 See core(5).
1356
1357 /proc/sys/kernel/ctrl-alt-del
1358 This file controls the handling of Ctrl-Alt-Del from the key‐
1359 board. When the value in this file is 0, Ctrl-Alt-Del is
1360 trapped and sent to the init(8) program to handle a graceful
1361 restart. When the value is greater than zero, Linux's reaction
1362 to a Vulcan Nerve Pinch (tm) will be an immediate reboot, with‐
1363 out even syncing its dirty buffers. Note: when a program (like
1364 dosemu) has the keyboard in "raw" mode, the ctrl-alt-del is
1365 intercepted by the program before it ever reaches the kernel tty
1366 layer, and it's up to the program to decide what to do with it.
1367
1368 /proc/sys/kernel/hotplug
1369 This file contains the path for the hotplug policy agent. The
1370 default value in this file is /sbin/hotplug.
1371
1372 /proc/sys/kernel/domainname and /proc/sys/kernel/hostname
1373 can be used to set the NIS/YP domainname and the hostname of
1374 your box in exactly the same way as the commands domainname(1)
1375 and hostname(1), that is:
1376
1377 # echo 'darkstar' > /proc/sys/kernel/hostname
1378 # echo 'mydomain' > /proc/sys/kernel/domainname
1379
1380 has the same effect as
1381
1382 # hostname 'darkstar'
1383 # domainname 'mydomain'
1384
1385 Note, however, that the classic darkstar.frop.org has the host‐
1386 name "darkstar" and DNS (Internet Domain Name Server) domainname
1387 "frop.org", not to be confused with the NIS (Network Information
1388 Service) or YP (Yellow Pages) domainname. These two domain
1389 names are in general different. For a detailed discussion see
1390 the hostname(1) man page.
1391
1392 /proc/sys/kernel/htab-reclaim
1393 (PowerPC only) If this file is set to a nonzero value, the Pow‐
1394 erPC htab (see kernel file Documentation/powerpc/ppc_htab.txt)
1395 is pruned each time the system hits the idle loop.
1396
1397 /proc/sys/kernel/l2cr
1398 (PowerPC only) This file contains a flag that controls the L2
1399 cache of G3 processor boards. If 0, the cache is disabled.
1400 Enabled if nonzero.
1401
1402 /proc/sys/kernel/modprobe
1403 This file contains the path for the kernel module loader. The
1404 default value is /sbin/modprobe. The file is only present if
1405 the kernel is built with the CONFIG_KMOD option enabled. It is
1406 described by the kernel source file Documentation/kmod.txt (only
1407 present in kernel 2.4 and earlier).
1408
1409 /proc/sys/kernel/msgmax
1410 This file defines a system-wide limit specifying the maximum
1411 number of bytes in a single message written on a System V mes‐
1412 sage queue.
1413
1414 /proc/sys/kernel/msgmni
1415 This file defines the system-wide limit on the number of message
1416 queue identifiers. (This file is only present in Linux 2.4
1417 onwards.)
1418
1419 /proc/sys/kernel/msgmnb
1420 This file defines a system-wide parameter used to initialize the
1421 msg_qbytes setting for subsequently created message queues. The
1422 msg_qbytes setting specifies the maximum number of bytes that
1423 may be written to the message queue.
1424
1425 /proc/sys/kernel/ostype and /proc/sys/kernel/osrelease
1426 These files give substrings of /proc/version.
1427
1428 /proc/sys/kernel/overflowgid and /proc/sys/kernel/overflowuid
1429 These files duplicate the files /proc/sys/fs/overflowgid and
1430 /proc/sys/fs/overflowuid.
1431
1432 /proc/sys/kernel/panic
1433 This file gives read/write access to the kernel variable
1434 panic_timeout. If this is zero, the kernel will loop on a
1435 panic; if nonzero it indicates that the kernel should autoreboot
1436 after this number of seconds. When you use the software watch‐
1437 dog device driver, the recommended setting is 60.
1438
1439 /proc/sys/kernel/panic_on_oops (since Linux 2.5.68)
1440 This file controls the kernel's behavior when an oops or BUG is
1441 encountered. If this file contains 0, then the system tries to
1442 continue operation. If it contains 1, then the system delays a
1443 few seconds (to give klogd time to record the oops output) and
1444 then panics. If the /proc/sys/kernel/panic file is also nonzero
1445 then the machine will be rebooted.
1446
1447 /proc/sys/kernel/pid_max (since Linux 2.5.34)
1448 This file specifies the value at which PIDs wrap around (i.e.,
1449 the value in this file is one greater than the maximum PID).
1450 The default value for this file, 32768, results in the same
1451 range of PIDs as on earlier kernels. On 32-bit platforms, 32768
1452 is the maximum value for pid_max. On 64-bit systems, pid_max
1453 can be set to any value up to 2^22 (PID_MAX_LIMIT, approximately
1454 4 million).
1455
1456 /proc/sys/kernel/powersave-nap (PowerPC only)
1457 This file contains a flag. If set, Linux-PPC will use the "nap"
1458 mode of powersaving, otherwise the "doze" mode will be used.
1459
1460 /proc/sys/kernel/printk
1461 The four values in this file are console_loglevel, default_mes‐
1462 sage_loglevel, minimum_console_level, and default_con‐
1463 sole_loglevel. These values influence printk() behavior when
1464 printing or logging error messages. See syslog(2) for more info
1465 on the different loglevels. Messages with a higher priority
1466 than console_loglevel will be printed to the console. Messages
1467 without an explicit priority will be printed with priority
1468 default_message_level. minimum_console_loglevel is the minimum
1469 (highest) value to which console_loglevel can be set.
1470 default_console_loglevel is the default value for con‐
1471 sole_loglevel.
1472
1473 /proc/sys/kernel/pty (since Linux 2.6.4)
1474 This directory contains two files relating to the number of Unix
1475 98 pseudo-terminals (see pts(4)) on the system.
1476
1477 /proc/sys/kernel/pty/max
1478 This file defines the maximum number of pseudo-terminals.
1479
1480 /proc/sys/kernel/pty/nr
1481 This read-only file indicates how many pseudo-terminals are cur‐
1482 rently in use.
1483
1484 /proc/sys/kernel/random
1485 This directory contains various parameters controlling the oper‐
1486 ation of the file /dev/random. See random(4) for further infor‐
1487 mation.
1488
1489 /proc/sys/kernel/real-root-dev
1490 This file is documented in the kernel source file Documenta‐
1491 tion/initrd.txt.
1492
1493 /proc/sys/kernel/reboot-cmd (Sparc only)
1494 This file seems to be a way to give an argument to the SPARC
1495 ROM/Flash boot loader. Maybe to tell it what to do after
1496 rebooting?
1497
1498 /proc/sys/kernel/rtsig-max
1499 (Only in kernels up to and including 2.6.7; see setrlimit(2))
1500 This file can be used to tune the maximum number of POSIX real-
1501 time (queued) signals that can be outstanding in the system.
1502
1503 /proc/sys/kernel/rtsig-nr
1504 (Only in kernels up to and including 2.6.7.) This file shows
1505 the number POSIX real-time signals currently queued.
1506
1507 /proc/sys/kernel/sem (since Linux 2.4)
1508 This file contains 4 numbers defining limits for System V IPC
1509 semaphores. These fields are, in order:
1510
1511 SEMMSL The maximum semaphores per semaphore set.
1512
1513 SEMMNS A system-wide limit on the number of semaphores in all
1514 semaphore sets.
1515
1516 SEMOPM The maximum number of operations that may be specified
1517 in a semop(2) call.
1518
1519 SEMMNI A system-wide limit on the maximum number of semaphore
1520 identifiers.
1521
1522 /proc/sys/kernel/sg-big-buff
1523 This file shows the size of the generic SCSI device (sg) buffer.
1524 You can't tune it just yet, but you could change it at compile
1525 time by editing include/scsi/sg.h and changing the value of
1526 SG_BIG_BUFF. However, there shouldn't be any reason to change
1527 this value.
1528
1529 /proc/sys/kernel/shmall
1530 This file contains the system-wide limit on the total number of
1531 pages of System V shared memory.
1532
1533 /proc/sys/kernel/shmmax
1534 This file can be used to query and set the run-time limit on the
1535 maximum (System V IPC) shared memory segment size that can be
1536 created. Shared memory segments up to 1GB are now supported in
1537 the kernel. This value defaults to SHMMAX.
1538
1539 /proc/sys/kernel/shmmni
1540 (available in Linux 2.4 and onwards) This file specifies the
1541 system-wide maximum number of System V shared memory segments
1542 that can be created.
1543
1544 /proc/sys/kernel/sysrq
1545 This file controls the functions allowed to be invoked by the
1546 SysRq key. By default, the file contains 1 meaning that every
1547 possible SysRq request is allowed (in older kernel versions,
1548 SysRq was disabled by default, and you were required to specifi‐
1549 cally enable it at run-time, but this is not the case any more).
1550 Possible values in this file are:
1551
1552 0 - disable sysrq completely
1553 1 - enable all functions of sysrq
1554 >1 - bitmask of allowed sysrq functions, as follows:
1555 2 - enable control of console logging level
1556 4 - enable control of keyboard (SAK, unraw)
1557 8 - enable debugging dumps of processes etc.
1558 16 - enable sync command
1559 32 - enable remount read-only
1560 64 - enable signalling of processes (term, kill, oom-
1561 kill)
1562 128 - allow reboot/poweroff
1563 256 - allow nicing of all real-time tasks
1564
1565 This file is only present if the CONFIG_MAGIC_SYSRQ kernel con‐
1566 figuration option is enabled. For further details see the ker‐
1567 nel source file Documentation/sysrq.txt.
1568
1569 /proc/sys/kernel/version
1570 This file contains a string like:
1571
1572 #5 Wed Feb 25 21:49:24 MET 1998
1573
1574 The "#5" means that this is the fifth kernel built from this
1575 source base and the date behind it indicates the time the kernel
1576 was built.
1577
1578 /proc/sys/kernel/threads-max (since Linux 2.3.11)
1579 This file specifies the system-wide limit on the number of
1580 threads (tasks) that can be created on the system.
1581
1582 /proc/sys/kernel/zero-paged (PowerPC only)
1583 This file contains a flag. When enabled (nonzero), Linux-PPC
1584 will pre-zero pages in the idle loop, possibly speeding up
1585 get_free_pages.
1586
1587 /proc/sys/net
1588 This directory contains networking stuff. Explanations for some
1589 of the files under this directory can be found in tcp(7) and
1590 ip(7).
1591
1592 /proc/sys/net/core/somaxconn
1593 This file defines a ceiling value for the backlog argument of
1594 listen(2); see the listen(2) manual page for details.
1595
1596 /proc/sys/proc
1597 This directory may be empty.
1598
1599 /proc/sys/sunrpc
1600 This directory supports Sun remote procedure call for network
1601 file system (NFS). On some systems, it is not present.
1602
1603 /proc/sys/vm
1604 This directory contains files for memory management tuning, buf‐
1605 fer and cache management.
1606
1607 /proc/sys/vm/drop_caches (since Linux 2.6.16)
1608 Writing to this file causes the kernel to drop clean caches,
1609 dentries and inodes from memory, causing that memory to become
1610 free.
1611
1612 To free pagecache, use echo 1 > /proc/sys/vm/drop_caches; to
1613 free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches;
1614 to free pagecache, dentries and inodes, use echo 3 >
1615 /proc/sys/vm/drop_caches.
1616
1617 Because this is a nondestructive operation and dirty objects are
1618 not freeable, the user should run sync(8) first.
1619
1620 /proc/sys/vm/legacy_va_layout (since Linux 2.6.9)
1621 If nonzero, this disables the new 32-bit memory-mapping layout;
1622 the kernel will use the legacy (2.4) layout for all processes.
1623
1624 /proc/sys/vm/memory_failure_early_kill (since Linux 2.6.32)
1625 Control how to kill processes when an uncorrected memory error
1626 (typically a 2-bit error in a memory module) that cannot be han‐
1627 dled by the kernel is detected in the background by hardware.
1628 In some cases (like the page still having a valid copy on disk),
1629 the kernel will handle the failure transparently without affect‐
1630 ing any applications. But if there is no other up-to-date copy
1631 of the data, it will kill processes to prevent any data corrup‐
1632 tions from propagating.
1633
1634 The file has one of the following values:
1635
1636 1: Kill all processes that have the corrupted-and-not-reload‐
1637 able page mapped as soon as the corruption is detected.
1638 Note this is not supported for a few types of pages, like
1639 kernel internally allocated data or the swap cache, but
1640 works for the majority of user pages.
1641
1642 0: Only unmap the corrupted page from all processes and only
1643 kill a process who tries to access it.
1644
1645 The kill is performed using a SIGBUS signal with si_code set to
1646 BUS_MCEERR_AO. Processes can handle this if they want to; see
1647 sigaction(2) for more details.
1648
1649 This feature is only active on architectures/platforms with
1650 advanced machine check handling and depends on the hardware
1651 capabilities.
1652
1653 Applications can override the memory_failure_early_kill setting
1654 individually with the prctl(2) PR_MCE_KILL operation.
1655
1656 Only present if the kernel was configured with CONFIG_MEM‐
1657 ORY_FAILURE.
1658
1659 /proc/sys/vm/memory_failure_recovery (since Linux 2.6.32)
1660 Enable memory failure recovery (when supported by the platform)
1661
1662 1: Attempt recovery.
1663
1664 0: Always panic on a memory failure.
1665
1666 Only present if the kernel was configured with CONFIG_MEM‐
1667 ORY_FAILURE.
1668
1669 /proc/sys/vm/oom_dump_tasks (since Linux 2.6.25)
1670 Enables a system-wide task dump (excluding kernel threads) to be
1671 produced when the kernel performs an OOM-killing. The dump
1672 includes the following information for each task (thread,
1673 process): thread ID, real user ID, thread group ID (process ID),
1674 virtual memory size, resident set size, the CPU that the task is
1675 scheduled on, oom_adj score (see the description of
1676 /proc/[pid]/oom_adj), and command name. This is helpful to
1677 determine why the OOM-killer was invoked and to identify the
1678 rogue task that caused it.
1679
1680 If this contains the value zero, this information is suppressed.
1681 On very large systems with thousands of tasks, it may not be
1682 feasible to dump the memory state information for each one.
1683 Such systems should not be forced to incur a performance penalty
1684 in OOM situations when the information may not be desired.
1685
1686 If this is set to nonzero, this information is shown whenever
1687 the OOM-killer actually kills a memory-hogging task.
1688
1689 The default value is 0.
1690
1691 /proc/sys/vm/oom_kill_allocating_task (since Linux 2.6.24)
1692 This enables or disables killing the OOM-triggering task in out-
1693 of-memory situations.
1694
1695 If this is set to zero, the OOM-killer will scan through the
1696 entire tasklist and select a task based on heuristics to kill.
1697 This normally selects a rogue memory-hogging task that frees up
1698 a large amount of memory when killed.
1699
1700 If this is set to nonzero, the OOM-killer simply kills the task
1701 that triggered the out-of-memory condition. This avoids a pos‐
1702 sibly expensive tasklist scan.
1703
1704 If /proc/sys/vm/panic_on_oom is nonzero, it takes precedence
1705 over whatever value is used in /proc/sys/vm/oom_kill_allocat‐
1706 ing_task.
1707
1708 The default value is 0.
1709
1710 /proc/sys/vm/overcommit_memory
1711 This file contains the kernel virtual memory accounting mode.
1712 Values are:
1713
1714 0: heuristic overcommit (this is the default)
1715 1: always overcommit, never check
1716 2: always check, never overcommit
1717
1718 In mode 0, calls of mmap(2) with MAP_NORESERVE are not checked,
1719 and the default check is very weak, leading to the risk of get‐
1720 ting a process "OOM-killed". Under Linux 2.4 any nonzero value
1721 implies mode 1. In mode 2 (available since Linux 2.6), the
1722 total virtual address space on the system is limited to (SS +
1723 RAM*(r/100)), where SS is the size of the swap space, and RAM is
1724 the size of the physical memory, and r is the contents of the
1725 file /proc/sys/vm/overcommit_ratio.
1726
1727 /proc/sys/vm/overcommit_ratio
1728 See the description of /proc/sys/vm/overcommit_memory.
1729
1730 /proc/sys/vm/panic_on_oom (since Linux 2.6.18)
1731 This enables or disables a kernel panic in an out-of-memory sit‐
1732 uation.
1733
1734 If this file is set to the value 0, the kernel's OOM-killer will
1735 kill some rogue process. Usually, the OOM-killer is able to
1736 kill a rogue process and the system will survive.
1737
1738 If this file is set to the value 1, then the kernel normally
1739 panics when out-of-memory happens. However, if a process limits
1740 allocations to certain nodes using memory policies (mbind(2)
1741 MPOL_BIND) or cpusets (cpuset(7)) and those nodes reach memory
1742 exhaustion status, one process may be killed by the OOM-killer.
1743 No panic occurs in this case: because other nodes' memory may be
1744 free, this means the system as a whole may not have reached an
1745 out-of-memory situation yet.
1746
1747 If this file is set to the value 2, the kernel always panics
1748 when an out-of-memory condition occurs.
1749
1750 The default value is 0. 1 and 2 are for failover of clustering.
1751 Select either according to your policy of failover.
1752
1753 /proc/sys/vm/swappiness
1754 The value in this file controls how aggressively the kernel will
1755 swap memory pages. Higher values increase agressiveness, lower
1756 values decrease aggressiveness. The default value is 60.
1757
1758 /proc/sysrq-trigger (since Linux 2.4.21)
1759 Writing a character to this file triggers the same SysRq func‐
1760 tion as typing ALT-SysRq-<character> (see the description of
1761 /proc/sys/kernel/sysrq). This file is normally only writable by
1762 root. For further details see the kernel source file Documenta‐
1763 tion/sysrq.txt.
1764
1765 /proc/sysvipc
1766 Subdirectory containing the pseudo-files msg, sem and shm.
1767 These files list the System V Interprocess Communication (IPC)
1768 objects (respectively: message queues, semaphores, and shared
1769 memory) that currently exist on the system, providing similar
1770 information to that available via ipcs(1). These files have
1771 headers and are formatted (one IPC object per line) for easy
1772 understanding. svipc(7) provides further background on the
1773 information shown by these files.
1774
1775 /proc/tty
1776 Subdirectory containing the pseudo-files and subdirectories for
1777 tty drivers and line disciplines.
1778
1779 /proc/uptime
1780 This file contains two numbers: the uptime of the system (sec‐
1781 onds), and the amount of time spent in idle process (seconds).
1782
1783 /proc/version
1784 This string identifies the kernel version that is currently run‐
1785 ning. It includes the contents of /proc/sys/kernel/ostype,
1786 /proc/sys/kernel/osrelease and /proc/sys/kernel/version. For
1787 example:
1788 Linux version 1.0.9 (quinlan@phaze) #1 Sat May 14 01:51:54 EDT 1994
1789
1790 /proc/vmstat (since Linux 2.6)
1791 This file displays various virtual memory statistics.
1792
1793 /proc/zoneinfo (since Linux 2.6.13)
1794 This file display information about memory zones. This is use‐
1795 ful for analyzing virtual memory behavior.
1796
1798 Many strings (i.e., the environment and command line) are in the inter‐
1799 nal format, with subfields terminated by null bytes ('\0'), so you may
1800 find that things are more readable if you use od -c or tr "\000" "\n"
1801 to read them. Alternatively, echo `cat <file>` works well.
1802
1803 This manual page is incomplete, possibly inaccurate, and is the kind of
1804 thing that needs to be updated very often.
1805
1807 cat(1), dmesg(1), find(1), free(1), ps(1), tr(1), uptime(1), chroot(2),
1808 mmap(2), readlink(2), syslog(2), slabinfo(5), hier(7), time(7), arp(8),
1809 hdparm(8), ifconfig(8), init(8), lsmod(8), lspci(8), mount(8), net‐
1810 stat(8), procinfo(8), route(8)
1811 The kernel source files: Documentation/filesystems/proc.txt, Documenta‐
1812 tion/sysctl/vm.txt
1813
1815 This page is part of release 3.25 of the Linux man-pages project. A
1816 description of the project, and information about reporting bugs, can
1817 be found at http://www.kernel.org/doc/man-pages/.
1818
1819
1820
1821Linux 2010-06-19 PROC(5)