我们知道 Linux 一切都是面向文件的,所以我们可以通过文件来获取到正在运行的ELF程序的状态信息。
本文会注解进程状态里面的各项输出参数的作用,以便于人们在写SH脚本程序的时候可以作为一个参照信息表。
当我们知道了进程ID时可以用这个命令来查看进程的状态信息。
cat /proc/进程ID/status
进程状态信息各项描述:
Name: 进程的名称
Umask: 进程的文件创建掩码
State: 进程的状态,比如运行(R)、睡眠(S)等
Tgid: 线程组ID
Ngid: 保留字段
Pid: 进程ID
PPid: 父进程ID
TracerPid: 跟踪进程的进程ID
Uid: 用户ID
Gid: 组ID
FDSize: 进程打开的文件描述符数量
Groups: 进程所属的附加组
VmPeak: 进程使用的最大虚拟内存大小
VmSize: 进程当前的虚拟内存大小
VmLck: 已锁定的虚拟内存大小
VmPin: 固定的虚拟内存大小
VmHWM: 高峰工作集大小
VmRSS: 实际使用的物理内存大小(常驻集大小)
RssAnon: 匿名内存大小
RssFile: 文件页大小
RssShmem: 共享内存大小
VmData: 数据段大小
VmStk: 栈段大小
VmExe: 可执行代码段大小
VmLib: 共享库大小
VmPTE: 页表条目大小
VmSwap: 交换空间大小
HugetlbPages: 巨大页面大小
CoreDumping: 是否正在进行核心转储
THP_enabled: 是否启用了透明大页面
Threads: 线程数
SigQ: 信号队列信息
SigPnd: 挂起的信号
ShdPnd: 共享挂起的信号
SigBlk: 阻塞的信号
SigIgn: 忽略的信号
SigCgt: 捕获的信号
CapInh/CapPrm/CapEff/CapBnd/CapAmb: 进程的能力限制
NoNewPrivs: 是否禁止创建新特权
Seccomp: 安全计算模块
Speculation_Store_Bypass: 存储旁路漏洞状态
Cpus_allowed/Cpus_allowed_list/Mems_allowed/Mems_allowed_list: CPU和内存掩码
voluntary_ctxt_switches/nonvoluntary_ctxt_switches: 进程切换上下文次数(自愿/非自愿)
观察 pppd 进程状态信息。(例子)
Name: pppd
Umask: 0022
State: S (sleeping)
Tgid: 9262
Ngid: 0
Pid: 9262
PPid: 9261
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 512
Groups: 0
NStgid: 9262
NSpid: 9262
NSpgid: 9261
NSsid: 8517
VmPeak: 769144 kB
VmSize: 768856 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 25488 kB
VmRSS: 21152 kB
RssAnon: 10964 kB
RssFile: 10188 kB
RssShmem: 0 kB
VmData: 152504 kB
VmStk: 132 kB
VmExe: 12788 kB
VmLib: 3976 kB
VmPTE: 324 kB
VmSwap: 0 kB
HugetlbPages: 0 kB
CoreDumping: 0
THP_enabled: 1
Threads: 10
SigQ: 0/3429
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000001001
SigCgt: 00000001c180cefe
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
NoNewPrivs: 0
Seccomp: 0
Speculation_Store_Bypass: not vulnerable
Cpus_allowed: f
Cpus_allowed_list: 0-3
Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001
Mems_allowed_list: 0
voluntary_ctxt_switches: 910837
nonvoluntary_ctxt_switches: 232