/proc文件系統(二):/proc/<pid>/stat
阿新 • • 發佈:2018-11-30
cat 分享 shell read exec .html dst exit 2.6
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,它們是讀取線程信息的接口。
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
參數 | 數值 | 解釋 |
---|---|---|
pid | 3782 | 進程(包括輕量級進程,即線程)號 |
comm | bvrobot | 應用程序或命令的名字 |
task_state | S | 任務的狀態: R:runnign, S:sleeping (TASK_INTERRUPTIBLE), T: stopped, Z:zombie, D:dead |
ppid | 114 | 父進程ID |
pgid | 3782 | 進程組號 |
sid | 114 | 該任務所在的會話組ID |
tty_nr | 64512(pts/6) | 該任務的tty終端的設備號 |
tty_pgrp | 4072 | 終端的進程組號,當前運行在該任務所在終端的前臺任務(包括shell 應用程序)的PID。 |
task->flags | 1077936384 | 進程標誌位,查看該任務的特性 |
min_flt | 8727 | 該任務不需要從硬盤拷數據而發生的缺頁(次缺頁)的次數 |
cmin_flt | 14959 | 累計的該任務的所有的waited-for進程曾經發生的次缺頁的次數目 |
maj_flt | 0 | 該任務需要從硬盤拷數據而發生的缺頁(主缺頁)的次數 |
cmaj_flt | 0 | 累計的該任務的所有的waited-for進程曾經發生的主缺頁的次數目 |
utime | 37 | 該任務在用戶態運行的時間,單位為jiffies |
stime | 524 | 該任務在核心態運行的時間,單位為jiffies |
cutime | 0 | 累計的該任務的所有的waited-for進程曾經在用戶態運行的時間,單位為jiffies |
cstime | 1 | 累計的該任務的所有的waited-for進程曾經在核心態運行的時間,單位為jiffies |
priority | 20 | 任務的動態優先級 |
nice | 0 | 任務的靜態優先級 |
num_threads | 11 | 該任務所在的線程組裏線程的個數 |
it_real_value | 0 | 由於計時間隔導致的下一個 SIGALRM 發送進程的時延,以 jiffy 為單位. |
start_time | 71038 | 該任務啟動的時間,單位為jiffies |
vsize | 45535232 | 該任務的虛擬地址空間大小 |
rss | 8490 | 該任務當前駐留物理地址空間的大小;。 |
rlim | 4294967295 | 該任務能駐留物理地址空間的最大值 |
start_code | 65536 | 該任務在虛擬地址空間的代碼段的起始地址 |
end_code | 1285064 | 該任務在虛擬地址空間的代碼段的結束地址 |
start_stack | 3201052128 | 該任務在虛擬地址空間的棧的結束地址 |
kstkesp | 3201049428 | esp(32 位堆棧指針) 的當前值, 與在進程的內核堆棧頁得到的一致. |
kstkeip | 3069071928 | 指向將要執行的指令的指針, EIP(32 位指令指針)的當前值. |
pendingsig | 0 | 待處理信號的位圖,記錄發送給進程的普通信號 |
block_sig | 0 | 阻塞信號的位圖 |
sigign | 4096 | 忽略的信號的位圖 |
sigcatch | 67137026 | 被俘獲的信號的位圖 |
wchan | 4294967295 | 如果該進程是睡眠狀態,該值給出調度的調用點 |
nswap | 0 | 被swapped的頁數,當前沒用 |
cnswap | 0 | 所有子進程被swapped的頁數的和,當前沒用 |
exit_signal | 17 | 該進程結束時,向父進程所發送的信號 |
task_cpu(task) | 2 | 運行在哪個CPU上 |
task_rt_priority | 0 | 實時進程的相對優先級別 |
task_policy | 0 | 進程的調度策略,0:非實時進程,1:FIFO實時進程;2:RR實時進程 |
blio_ticks | 0 | 等待阻塞IO的時間 |
gtime | 1353712 | guest time of the task in jiffies |
cgtime | 1360302 | guest time of the task children in jiffies |
start_data | 4616192 | address above which program data+bss is placed |
end_data | address below which program data+bss is placed | |
start_brk | address above which program heap can be expanded with br | |
arg_start | address above which program command line is placed | |
arg_end | address below which program command line is placed | |
env_start | address above which program environment is placed | |
env_end | address below which program environment is placed | |
exit_code | the thread‘s exit_code in the form reported by the waitpid system call |
/proc文件系統(二):/proc/<pid>/stat