/proc文件系统(二):/proc/<pid>/stat

/proc文件系统作为Linux内核的重要组成部分,不仅提供了系统信息的读取接口,还允许用户改变内核参数。本文详细解析了/proc下的各种文件和目录,如/proc/cpuinfo、/proc/pid等,揭示了其如何反映系统状态和进程信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

0. 前言

/proc 文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。

  • 它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。
  • 由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
root@jimmy-vm:/proc# ll /proc/
dr-xr-xr-x  9 root             root                           0 11月 28 20:09 <pid>/
......
dr-xr-xr-x  2 root             root                           0 11月 30 16:53 acpi/
dr-xr-xr-x  5 root             root                           0 11月 30 16:53 asound/
-r--r--r--  1 root             root                           0 11月 30 16:53 buddyinfo
dr-xr-xr-x  4 root             root                           0 11月 30 16:53 bus/
-r--r--r--  1 root             root                           0 11月 30 16:53 cgroups
-r--r--r--  1 root             root                           0 11月 30 16:53 cmdline
-r--r--r--  1 root             root                           0 11月 30 16:53 consoles
-r--r--r--  1 root             root                           0 11月 30 16:53 cpuinfo
-r--r--r--  1 root             root                           0 11月 30 16:53 crypto
-r--r--r--  1 root             root                           0 11月 30 16:53 devices
-r--r--r--  1 root             root                           0 11月 30 16:53 diskstats
-r--r--r--  1 root             root                           0 11月 30 16:53 dma
dr-xr-xr-x  2 root             root                           0 11月 30 16:53 driver/
-r--r--r--  1 root             root                           0 11月 30 16:53 execdomains
-r--r--r--  1 root             root                           0 11月 30 16:53 fb
-r--r--r--  1 root             root                           0 11月 30 16:53 filesystems
dr-xr-xr-x  5 root             root                           0 11月 30 16:53 fs/
-r--r--r--  1 root             root                           0 11月 30 16:53 interrupts
-r--r--r--  1 root             root                           0 11月 30 16:53 iomem
-r--r--r--  1 root             root                           0 11月 30 16:53 ioports
dr-xr-xr-x 57 root             root                           0 11月 30 16:53 irq/
-r--r--r--  1 root             root                           0 11月 30 16:53 kallsyms
-r--------  1 root             root             140737477881856 11月 30 16:53 kcore
-r--r--r--  1 root             root                           0 11月 30 16:53 keys
-r--r--r--  1 root             root                           0 11月 30 16:53 key-users
-r--------  1 root             root                           0 11月 16 14:27 kmsg
-r--------  1 root             root                           0 11月 30 16:53 kpagecgroup
-r--------  1 root             root                           0 11月 30 16:53 kpagecount
-r--------  1 root             root                           0 11月 30 16:53 kpageflags
-r--r--r--  1 root             root                           0 11月 30 16:53 loadavg
-r--r--r--  1 root             root                           0 11月 30 16:53 locks
-r--r--r--  1 root             root                           0 11月 30 16:53 mdstat
-r--r--r--  1 root             root                           0 11月 30 16:53 meminfo
-r--r--r--  1 root             root                           0 11月 30 16:53 misc
-r--r--r--  1 root             root                           0 11月 30 16:53 modules
lrwxrwxrwx  1 root             root                          11 11月 30 16:53 mounts -> self/mounts
dr-xr-xr-x  3 root             root                           0 11月 30 16:53 mpt/
-rw-r--r--  1 root             root                           0 11月 30 16:53 mtrr
lrwxrwxrwx  1 root             root                           8 11月 30 16:53 net -> self/net/
-r--r--r--  1 root             root                           0 11月 30 16:53 pagetypeinfo
-r--r--r--  1 root             root                           0 11月 30 16:53 partitions
-r--r--r--  1 root             root                           0 11月 30 16:53 sched_debug
-r--r--r--  1 root             root                           0 11月 30 16:53 schedstat
dr-xr-xr-x  4 root             root                           0 11月 30 16:53 scsi/
lrwxrwxrwx  1 root             root                           0 11月 16 14:27 self -> 107692/
-r--------  1 root             root                           0 11月 30 16:53 slabinfo
-r--r--r--  1 root             root                           0 11月 30 16:53 softirqs
-r--r--r--  1 root             root                           0 11月 30 16:53 stat
-r--r--r--  1 root             root                           0 11月 16 14:27 swaps
dr-xr-xr-x  1 root             root                           0 11月 16 14:27 sys/
--w-------  1 root             root                           0 11月 30 16:53 sysrq-trigger
dr-xr-xr-x  2 root             root                           0 11月 30 16:53 sysvipc/
lrwxrwxrwx  1 root             root                           0 11月 16 14:27 thread-self -> 107692/task/107692/
-r--r--r--  1 root             root                           0 11月 30 16:53 timer_list
-rw-r--r--  1 root             root                           0 11月 30 16:53 timer_stats
dr-xr-xr-x  4 root             root                           0 11月 30 16:53 tty/
-r--r--r--  1 root             root                           0 11月 30 16:53 uptime
-r--r--r--  1 root             root                           0 11月 30 16:53 version
-r--r--r--  1 root             root                           0 11月 30 16:53 version_signature
-r--------  1 root             root                           0 11月 30 16:53 vmallocinfo
-r--r--r--  1 root             root                           0 11月 30 16:53 vmstat
-r--r--r--  1 root             root                           0 11月 30 16:53 zoneinfo

1. /proc/cpuinfo

/proc文件系统(一):cpuinfo

2. /proc/<pid> 整体

/proc目录中有一些以数字命名的目录,它们是进程目录。

  • 系统中当前运行的每一个进程在/proc下都对应一个以进程号为目录名的目录/proc/pid,它们是读取进程信息的接口。
  • 在Linux 2.6.0-test6以上的版本中/proc/pid目录中有一个task目录,/proc/pid/task目录中也有一些以该进程所拥有的线程的线程号命名的目录/proc/pid/task/tid,它们是读取线程信息的接口。

pid_list

root@TinaLinux:/proc/219# ll
dr-xr-xr-x    8 root     root             0 Nov 30 14:49 .
dr-xr-xr-x 1031 root     root             0 Jan  1  1970 ..
dr-xr-xr-x    2 root     root             0 Nov 30 14:52 attr
-r--------    1 root     root             0 Nov 30 14:49 auxv
-r--r--r--    1 root     root             0 Nov 30 14:49 cmdline
-rw-r--r--    1 root     root             0 Nov 30 14:52 comm
-rw-r--r--    1 root     root             0 Nov 30 14:52 coredump_filter
lrwxrwxrwx    1 root     root             0 Nov 30 14:52 cwd -> /usr/bvrobot
-r--------    1 root     root             0 Nov 30 14:52 environ
lrwxrwxrwx    1 root     root             0 Nov 30 14:49 exe -> /usr/bvrobot/bvrobot
dr-x------    2 root     root             0 Nov 30 14:52 fd
dr-x------    2 root     root             0 Nov 30 14:52 fdinfo
-r--r--r--    1 root     root             0 Nov 30 14:52 limits
-rw-r--r--    1 root     root             0 Nov 30 14:52 loginuid
-r--r--r--    1 root     root             0 Nov 30 14:52 maps
-rw-------    1 root     root             0 Nov 30 14:52 mem
-r--r--r--    1 root     root             0 Nov 30 14:52 mountinfo
-r--r--r--    1 root     root             0 Nov 30 14:52 mounts
-r--------    1 root     root             0 Nov 30 14:52 mountstats
dr-xr-xr-x    4 root     root             0 Nov 30 14:52 net
dr-x--x--x    2 root     root             0 Nov 30 14:52 ns
-rw-r--r--    1 root     root             0 Nov 30 14:52 oom_adj
-r--r--r--    1 root     root             0 Nov 30 14:52 oom_score
-rw-r--r--    1 root     root             0 Nov 30 14:52 oom_score_adj
-r--r--r--    1 root     root             0 Nov 30 14:52 personality
lrwxrwxrwx    1 root     root             0 Nov 30 14:52 root -> /
-r--r--r--    1 root     root             0 Nov 30 14:52 sessionid
-r--r--r--    1 root     root             0 Nov 30 14:52 stack
-r--r--r--    1 root     root             0 Nov 30 14:49 stat
-r--r--r--    1 root     root             0 Nov 30 14:52 statm
-r--r--r--    1 root     root             0 Nov 30 14:52 status
dr-xr-xr-x   13 root     root             0 Nov 30 14:52 task
-r--r--r--    1 root     root             0 Nov 30 14:52 wchan

2.1 /proc/<pid>/stat

root@TinaLinux:/proc/3782# cat stat
3782 (bvrobot) S 114 3782 114 64512 4072 1077936384 8727 14959 0 0 37 524 0 1 20 0 11 0 71083 45535232 8490 4294967295 65536 1285064 3201052128 3201049428 3069071928 0 0 4096 67137026 4294967295 0 0 17 2 0 0 0 0 0 1353712 1360302 4616192
参数数值解释
pid3782进程(包括轻量级进程,即线程)号
commbvrobot应用程序或命令的名字
task_stateS任务的状态:
R:runnign, S:sleeping (TASK_INTERRUPTIBLE),
T: stopped, Z:zombie, D:dead
ppid114父进程ID
pgid3782进程组号
sid114该任务所在的会话组ID
tty_nr64512(pts/6)该任务的tty终端的设备号
tty_pgrp4072终端的进程组号,当前运行在该任务所在终端的前台任务(包括shell 应用程序)的PID。
task->flags1077936384进程标志位,查看该任务的特性
min_flt8727该任务不需要从硬盘拷数据而发生的缺页(次缺页)的次数
cmin_flt14959累计的该任务的所有的waited-for进程曾经发生的次缺页的次数目
maj_flt0该任务需要从硬盘拷数据而发生的缺页(主缺页)的次数
cmaj_flt0累计的该任务的所有的waited-for进程曾经发生的主缺页的次数目
utime37该任务在用户态运行的时间,单位为jiffies
stime524该任务在核心态运行的时间,单位为jiffies
cutime0累计的该任务的所有的waited-for进程曾经在用户态运行的时间,单位为jiffies
cstime1累计的该任务的所有的waited-for进程曾经在核心态运行的时间,单位为jiffies
priority20任务的动态优先级
nice0任务的静态优先级
num_threads11该任务所在的线程组里线程的个数
it_real_value0由于计时间隔导致的下一个 SIGALRM 发送进程的时延,以 jiffy 为单位.
start_time71038该任务启动的时间,单位为jiffies
vsize45535232该任务的虚拟地址空间大小
rss8490该任务当前驻留物理地址空间的大小;。
rlim4294967295该任务能驻留物理地址空间的最大值
start_code65536该任务在虚拟地址空间的代码段的起始地址
end_code1285064该任务在虚拟地址空间的代码段的结束地址
start_stack3201052128该任务在虚拟地址空间的栈的结束地址
kstkesp3201049428esp(32 位堆栈指针) 的当前值, 与在进程的内核堆栈页得到的一致.
kstkeip3069071928指向将要执行的指令的指针, EIP(32 位指令指针)的当前值.
pendingsig0待处理信号的位图,记录发送给进程的普通信号
block_sig0阻塞信号的位图
sigign4096忽略的信号的位图
sigcatch67137026被俘获的信号的位图
wchan4294967295如果该进程是睡眠状态,该值给出调度的调用点
nswap0被swapped的页数,当前没用
cnswap0所有子进程被swapped的页数的和,当前没用
exit_signal17该进程结束时,向父进程所发送的信号
task_cpu(task)2运行在哪个CPU上
task_rt_priority0实时进程的相对优先级别
task_policy0进程的调度策略,0:非实时进程,1:FIFO实时进程;2:RR实时进程
blio_ticks0等待阻塞IO的时间
gtime1353712guest time of the task in jiffies
cgtime1360302guest time of the task children in jiffies
start_data4616192address above which program data+bss is placed
end_dataaddress below which program data+bss is placed
start_brkaddress above which program heap can be expanded with br
arg_startaddress above which program command line is placed
arg_endaddress below which program command line is placed
env_startaddress above which program environment is placed
env_endaddress below which program environment is placed
exit_codethe thread's exit_code in the form reported by the waitpid system call

转载于:https://www.cnblogs.com/Jimmy1988/p/10045601.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值