proc_pid_status(5)

๐Ÿ‘‘ proc_pid_status โ€” section 5, File Formats Manual, bestie edition ๐Ÿ‘‘

okay so you found proc_pid_status in the File Formats Manual, section 5, and honestly?? iconic choice. this is the file that spills every single thing the kernel knows about a process, in a layout that a human can actually read instead of the raw chaos of stat and statm. let's get into it ๐Ÿ’…


๐ŸŒธ NAME ๐ŸŒธ

/proc/pid/status โ€” memory usage and status information ๐Ÿซถ


โœจ DESCRIPTION โœจ

the vibe

/proc/pid/status gives you much of the information in /proc/pid/stat and /proc/pid/statm, but in a format that's way easier for humans to parse. the kernel said "let me make this readable for you bestie" and we love that for us. here's the example, no cap:

$ cat /proc/$$/status
Name:   bash
Umask:  0022
State:  S (sleeping)
Tgid:   17248
Ngid:   0
Pid:    17248
PPid:   17200
TracerPid:      0
Uid:    1000    1000    1000    1000
Gid:    100     100     100     100
FDSize: 256
Groups: 16 33 100
NStgid: 17248
NSpid:  17248
NSpgid: 17248
NSsid:  17200
VmPeak:     131168 kB
VmSize:     131168 kB
VmLck:           0 kB
VmPin:           0 kB
VmHWM:       13484 kB
VmRSS:       13484 kB
RssAnon:     10264 kB
RssFile:      3220 kB
RssShmem:        0 kB
VmData:      10332 kB
VmStk:         136 kB
VmExe:         992 kB
VmLib:        2104 kB
VmPTE:          76 kB
VmPMD:          12 kB
VmSwap:          0 kB
HugetlbPages:          0 kB        # 4.4
CoreDumping:   0                       # 4.15
Threads:        1
SigQ:   0/3067
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000010000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
CapBnd: ffffffffffffffff
CapAmb:   0000000000000000
NoNewPrivs:     0
Seccomp:        0
Seccomp_filters:        0
Speculation_Store_Bypass:       vulnerable
Cpus_allowed:   00000001
Cpus_allowed_list:      0
Mems_allowed:   1
Mems_allowed_list:      0
voluntary_ctxt_switches:        150
nonvoluntary_ctxt_switches:     545

๐ŸŒˆ the fields, one by one ๐ŸŒˆ

okay now the main character section. every field, explained, in order, periodt. โœจ

  • Name โ€” the command that's being run by this process. heads up: strings longer than TASK_COMM_LEN (16) characters (including the terminating null byte) get silently truncated. ๐Ÿ˜ญ so keep your process names short, bestie.
  • Umask โ€” the process umask, in octal with a leading zero; peep umask(2). (Since Linux 4.7.)
  • State โ€” the current state of the process. it's exactly one of these, no in-between:
    • "R (running)"
    • "S (sleeping)"
    • "D (disk sleep)"
    • "T (stopped)"
    • "t (tracing stop)"
    • "Z (zombie)"
    • "X (dead)"

zombie state is giving undead energy fr ๐ŸงŸ

  • Tgid โ€” thread group ID (that's just the Process ID).
  • Ngid โ€” NUMA group ID (0 if there isn't one; since Linux 3.13).
  • Pid โ€” thread ID (go look at gettid(2)).
  • PPid โ€” the PID of the parent process. ๐Ÿ‘‘ parent energy.
  • TracerPid โ€” PID of the process tracing this process (0 if nothing's tracing it).
  • Uid / Gid โ€” the real, effective, saved set, and filesystem UIDs (and GIDs). all four, in that order, four numbers each.
  • FDSize โ€” number of file descriptor slots currently allocated.
  • Groups โ€” the supplementary group list.
  • NStgid โ€” thread group ID (i.e., PID) in each of the PID namespaces that pid is a member of. the leftmost entry shows the value with respect to the PID namespace of the process that mounted this procfs (or the root namespace if the kernel mounted it), and then you get the value in each successively nested inner namespace after that. (Since Linux 4.1.)
  • NSpid โ€” thread ID in each of the PID namespaces that pid is a member of. fields are ordered the same way as NStgid. (Since Linux 4.1.)
  • NSpgid โ€” process group ID in each of the PID namespaces that pid is a member of. fields ordered like NStgid. (Since Linux 4.1.)
  • NSsid โ€” descendant namespace session ID hierarchy โ€” session ID in each of the PID namespaces that pid is a member of. fields ordered like NStgid. (Since Linux 4.1.)
  • VmPeak โ€” peak virtual memory size.
  • VmSize โ€” virtual memory size.
  • VmLck โ€” locked memory size (see mlock(2)).
  • VmPin โ€” pinned memory size (since Linux 3.2). these are pages that can't be moved, because something needs to directly access physical memory. locked in place fr ๐Ÿ”’
  • VmHWM โ€” peak resident set size (the "high water mark"). โš ๏ธ this value is inaccurate; see /proc/pid/statm above.
  • VmRSS โ€” resident set size. note that this value is the sum of RssAnon, RssFile, and RssShmem. โš ๏ธ also inaccurate; see /proc/pid/statm above.
  • RssAnon โ€” size of resident anonymous memory. (since Linux 4.5). โš ๏ธ inaccurate; see /proc/pid/statm above.
  • RssFile โ€” size of resident file mappings. (since Linux 4.5). โš ๏ธ inaccurate; see /proc/pid/statm above.
  • RssShmem โ€” size of resident shared memory โ€” and yes, that includes System V shared memory, mappings from tmpfs(5), and shared anonymous mappings. (since Linux 4.5).
  • VmData / VmStk / VmExe โ€” size of data, stack, and text segments. โš ๏ธ this value is inaccurate; see /proc/pid/statm above.
  • VmLib โ€” shared library code size.
  • VmPTE โ€” page table entries size (since Linux 2.6.10).
  • VmPMD โ€” size of second-level page tables (added in Linux 4.0; removed in Linux 4.15). ๐Ÿ’€ gone but not forgotten.
  • VmSwap โ€” swapped-out virtual memory size by anonymous private pages; shmem swap usage is not included (since Linux 2.6.34). โš ๏ธ this value is inaccurate; see /proc/pid/statm above.
  • HugetlbPages โ€” size of hugetlb memory portions (since Linux 4.4).
  • CoreDumping โ€” contains the value 1 if the process is currently dumping core, and 0 if it's not (since Linux 4.15). a monitoring process can use this to avoid killing a process that's currently dumping core โ€” which could result in a corrupted core dump file. so like, don't do that ๐Ÿซฃ
  • Threads โ€” number of threads in the process containing this thread.
  • SigQ โ€” two slash-separated numbers about queued signals for the real user ID of this process. the first is the number of currently queued signals for this real user ID, and the second is the resource limit on the number of queued signals for this process (see the description of RLIMIT_SIGPENDING in getrlimit(2)).
  • SigPnd / ShdPnd โ€” mask (in hexadecimal) of signals pending for the thread, and for the process as a whole (see pthreads(7) and signal(7)).
  • SigBlk / SigIgn / SigCgt โ€” masks (in hexadecimal) indicating signals being blocked, ignored, and caught (see signal(7)).
  • CapInh / CapPrm / CapEff โ€” masks (in hexadecimal) of capabilities enabled in the inheritable, permitted, and effective sets (see capabilities(7)).
  • CapBnd โ€” capability bounding set, expressed in hexadecimal (since Linux 2.6.26, see capabilities(7)).
  • CapAmb โ€” ambient capability set, expressed in hexadecimal (since Linux 4.3, see capabilities(7)).
  • NoNewPrivs โ€” value of the no_new_privs bit (since Linux 4.10, see prctl(2)).
  • Seccomp โ€” seccomp mode of the process (since Linux 3.8, see seccomp(2)). 0 means SECCOMP_MODE_DISABLED; 1 means SECCOMP_MODE_STRICT; 2 means SECCOMP_MODE_FILTER. this field is provided only if the kernel was built with the CONFIG_SECCOMP kernel configuration option enabled. ๐Ÿ‘€
  • Seccomp_filters โ€” number of seccomp filters attached to the process (since Linux 5.9, see seccomp(2)).
  • Speculation_Store_Bypass โ€” speculation flaw mitigation state (since Linux 4.17, see prctl(2)).
  • Cpus_allowed โ€” hexadecimal mask of CPUs on which this process may run (since Linux 2.6.24, see cpuset(7)).
  • Cpus_allowed_list โ€” same as the previous one, but in "list format" (since Linux 2.6.26, see cpuset(7)).
  • Mems_allowed โ€” mask of memory nodes allowed to this process (since Linux 2.6.24, see cpuset(7)).
  • Mems_allowed_list โ€” same as the previous one, but in "list format" (since Linux 2.6.26, see cpuset(7)).
  • voluntary_ctxt_switches / nonvoluntary_ctxt_switches โ€” number of voluntary and involuntary context switches (since Linux 2.6.23).

๐Ÿ’– SEE ALSO ๐Ÿ’–

  • proc(5) โ€” the mothership. go read it, iykyk ๐Ÿฆ‹

and that's the whole page, bestie, you ate that ๐ŸŽ€ this little gem lives in Linux man-pages 6.20, dated 2026-02-08 โ€” go forth and cat your own /proc/$$/status, you're the main character of your own PID ๐Ÿ’…๐ŸŒŸ

๐Ÿ“ฆ where this page comes from
  • arch rolling: man-pages 6.20-1 ยท BSD-2-Clause AND BSD-3-Clause AND BSD-4.3TAHOE AND BSD-4-Clause-UC AND GPL-1.0-or-later AND GPL-2.0-only AND GPL-2.0-or-later AND GPL-3.0-or-later AND LGPL-3.0-linking-exception AND LGPL-3.0-or-later AND LicenseRef-Public-Domain AND LicenseRef-UltraPermissive AND Linux-man-pages-1-para AND Linux-man-pages-copyleft AND Linux-man-pages-copyleft-2-para AND Linux-man-pages-copyleft-var AND MIT AND Spencer-94
  • nixpkgs unstable: man-pages 6.20
  • ๐Ÿ“œ the page's license: GPL-3.0-or-later
  • ๐Ÿ’– girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms