Linux proc
程序员文章站
2022-06-22 09:51:59
...
Linux proc
之前课程设计要求写一个类似top和ps命令类似的进程内存管理。查阅了相关资料,运行进程相关进程都存储在/proc
目录下,是个虚拟文件系统,体现了Linux一切皆文件的设计哲学。
终端输入
cd /proc
ls
以数字即为进程的PID,进入PID=1的文件夹。
目录下具有
- cmdline — 启动当前进程的完整命令
- cwd — 指向当前进程运行目录的一个符号链接
- exe — 指向启动当前进程的可执行文件的符号链接
- stat—当前进程的状态信息,数据格式经过压缩。
等文件。
aaa@qq.com:/proc/1# cat stat
1 (systemd) S 0 1 1 0 -1 4194560 28830 640283359 52 3235 509 460 293502 431358 20 0 1 0 4 38715392 1426 18446744073709551615 94143898238976 94143899664096 140725324458688 140725324454872 140304285084147 0 671173123 4096 1260 1 0 0 17 0 0 0 69 0 0 94143899671680 94143899817704 94143931887616 140725324463922 140725324463940 140725324463940 140725324464109 0
重点看status
aaa@qq.com:/proc/1# cat status
Name: systemd
State: S (sleeping)
Tgid: 1
Ngid: 0
Pid: 1
PPid: 0
TracerPid: 0
Uid: 0 0 0 0
Gid: 0 0 0 0
FDSize: 128
Groups:
NStgid: 1
NSpid: 1
NSpgid: 1
NSsid: 1
VmPeak: 38960 kB -----------虚拟内存。
VmSize: 37808 kB
VmLck: 0 kB
VmPin: 0 kB
VmHWM: 5868 kB
VmRSS: 5704 kB
VmData: 1532 kB ------------进程数据段
VmStk: 132 kB ------------进程栈
VmExe: 1392 kB
VmLib: 3684 kB
VmPTE: 88 kB
VmPMD: 12 kB
VmSwap: 0 kB
HugetlbPages: 0 kB
Threads: 1 ------------线程数
SigQ: 1/7856
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 7be3c0fe28014a03
SigIgn: 0000000000001000
SigCgt: 00000001800004ec
CapInh: 0000000000000000
CapPrm: 0000003fffffffff
CapEff: 0000003fffffffff
CapBnd: 0000003fffffffff
CapAmb: 0000000000000000
Seccomp: 0
Cpus_allowed: 1
Cpus_allowed_list: 0
Mems_allowed: 00000000,00000001
Mems_allowed_list: 0 --------------线程切换(主动、被动)
voluntary_ctxt_switches: 73133
nonvoluntary_ctxt_switches: 1568