cat /proc/$PID/status进程状态
2015-04-13 22:48
459 查看
[root@DevelopServer ~]# cat /proc/18613/status Name: mysqld State: S (sleeping) Tgid: 18613 Pid: 18613 PPid: 1652 TracerPid: 0 Uid: 502 502 502 502 Gid: 502 502 502 502 Utrace: 0 FDSize: 4096 Groups: 502 VmPeak: 3989884 kB VmSize: 3596668 kB VmLck: 0 kB VmHWM: 1590780 kB VmRSS: 1058524 kB VmData: 3556528 kB VmStk: 88 kB VmExe: 11796 kB VmLib: 3904 kB VmPTE: 5168 kB VmSwap: 1223904 kB Threads: 40 SigQ: 0/22892 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000087007 SigIgn: 0000000000001006 SigCgt: 00000001800066e9 CapInh: 0000000000000000 CapPrm: 0000000000000000 CapEff: 0000000000000000 CapBnd: ffffffffffffffff Cpus_allowed: 7fff Cpus_allowed_list: 0-14 Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 Mems_allowed_list: 0 voluntary_ctxt_switches: 58224 nonvoluntary_ctxt_switches: 166 [root@DevelopServer ~]#
VmPeak代表当前进程运行过程中占用内存的峰值.
VmSize代表进程现在正在占用的内存
VmLck代表进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘.
VmHWM是程序得到分配到物理内存的峰值.
VmRSS是程序现在使用的物理内存.
VmData:表示进程数据段的大小.
VmStk:表示进程堆栈段的大小.
VmExe:表示进程代码的大小.
VmLib:表示进程所使用LIB库的大小.
VmPTE:占用的页表的大小.
VmSwap:进程占用Swap的大小.
Threads:表示当前进程组的线程数量.
SigPnd:屏蔽位,存储了该线程的待处理信号,等同于线程的PENDING信号.
ShnPnd:屏蔽位,存储了该线程组的待处理信号.等同于进程组的PENDING信号.
SigBlk:存放被阻塞的信号,等同于BLOCKED信号.
SigIgn:存放被忽略的信号,等同于IGNORED信号.
SigCgt:存放捕获的信号,等同于CAUGHT信号.
CapEff:当一个进程要进行某个特权操作时,操作系统会检查cap_effective的对应位是否有效,而不再是检查进程的有效UID是否为0.
CapPrm:表示进程能够使用的能力,在cap_permitted中可以包含cap_effective中没有的能力,这些能力是被进程自己临时放弃的,也可以说cap_effective是cap_permitted的一个子集.
CapInh:表示能够被当前进程执行的程序继承的能力.
CapBnd:是系统的边界能力,我们无法改变它.
Cpus_allowed:3指出该进程可以使用CPU的亲和性掩码,因为我们指定为两块CPU,所以这里就是3,如果该进程指定为4个CPU(如果有话),这里就是F(1111).
Cpus_allowed_list:0-1指出该进程可以使用CPU的列表,这里是0-1.
voluntary_ctxt_switches表示进程主动切换的次数.
nonvoluntary_ctxt_switches表示进程被动切换的次数.
==============================================================================
http://www.kerneltravel.net/?p=294
Linux内核之旅
Linux Kernel Travel首页>> 2.6内核模块编程实例 走进内核 电子杂志 经验交流 Linux杂谈 新手上路 资料下载 讨论区 关于我们
« proc文件系统探索 之 以数字命名的目录[三]
proc文件系统探索 之 proc根目录下的文件[五] »
10.statm文件
描述进程的内存状态。
niutao@niutao-desktop:/proc/6950$ cat statm 12992 4432 3213 144 0 1028 0 niutao@niutao-desktop:/proc/6950$ |
int proc_pid_statm(struct task_struct *task, char *buffer) { int size = 0, resident = 0, shared = 0, text = 0, lib = 0, data = 0; struct mm_struct *mm = get_task_mm(task); if (mm) { size = task_statm(mm, &shared, &text, &data, &resident); mmput(mm); } return sprintf(buffer, "%d %d %d %d %d %d %d\n", size, resident, shared, text, lib, data, 0); } /*fs/proc/task_mmu.c*/ int task_statm(struct mm_struct *mm, int *shared, int *text, int *data, int *resident) { *shared = get_mm_counter(mm, file_rss); *text = (PAGE_ALIGN(mm->end_code) - (mm->start_code & PAGE_MASK)) >> PAGE_SHIFT; *data = mm->total_vm - mm->shared_vm; *resident = *shared + get_mm_counter(mm, anon_rss); return mm->total_vm; } |
11.status文件:
用可读的方式描述进程的状态
niutao@niutao-desktop:/proc/9744$ cat status Name: gedit /*进程的程序名*/ State: S (sleeping) /*进程的状态信息,具体参见http://blog.chinaunix.net/u2/73528/showart_1106510.html*/ Tgid: 9744 /*线程组号*/ Pid: 9744 /*进程pid*/ PPid: 7672 /*父进程的pid*/ TracerPid: 0 /*跟踪进程的pid*/ Uid: 1000 1000 1000 1000 /*uid euid suid fsuid*/ Gid: 1000 1000 1000 1000 /*gid egid sgid fsgid*/ FDSize: 256 /*文件描述符的最大个数,file->fds*/ Groups: 0 4 20 24 25 29 30 44 46 107 109 115 124 1000 /*启动该进程的用户所属的组的id*/ VmPeak: 60184 kB /*进程地址空间的大小*/ VmSize: 60180 kB /*进程虚拟地址空间的大小reserved_vm:进程在预留或特殊的内存间的物理页*/ VmLck: 0 kB /*进程已经锁住的物理内存的大小.锁住的物理内存不能交换到硬盘*/ VmHWM: 18020 kB /*文件内存映射和匿名内存映射的大小*/ VmRSS: 18020 kB /*应用程序正在使用的物理内存的大小,就是用ps命令的参数rss的值 (rss)*/ VmData: 12240 kB /*程序数据段的大小(所占虚拟内存的大小),存放初始化了的数据*/ VmStk: 84 kB /*进程在用户态的栈的大小*/ VmExe: 576 kB /*程序所拥有的可执行虚拟内存的大小,代码段,不包括任务使用的库 */ VmLib: 21072 kB /*被映像到任务的虚拟内存空间的库的大小*/ VmPTE: 56 kB /*该进程的所有页表的大小*/ Threads: 1 /*共享使用该信号描述符的任务的个数*/ SigQ: 0/8183 /*待处理信号的个数/目前最大可以处理的信号的个数*/ SigPnd: 0000000000000000 /*屏蔽位,存储了该线程的待处理信号*/ ShdPnd: 0000000000000000 /*屏蔽位,存储了该线程组的待处理信号*/ SigBlk: 0000000000000000 /*存放被阻塞的信号*/ SigIgn: 0000000000001000 /*存放被忽略的信号*/ SigCgt: 0000000180000000 /*存放被俘获到的信号*/ CapInh: 0000000000000000 /*能被当前进程执行的程序的继承的能力*/ CapPrm: 0000000000000000 /*进程能够使用的能力,可以包含CapEff中没有的能力,这些能力是被进程自己临时放弃的*/ CapEff: 0000000000000000 /*是CapPrm的一个子集,进程放弃没有必要的能力有利于提高安全性*/ Cpus_allowed: 01 /*可以执行该进程的CPU掩码集*/ Mems_allowed: 1 /**/ voluntary_ctxt_switches: 1241 /*进程主动切换的次数*/ nonvoluntary_ctxt_switches: 717 /*进程被动切换的次数*/ |
int proc_pid_status(struct task_struct *task, char *buffer) { char *orig = buffer; struct mm_struct *mm = get_task_mm(task); buffer = task_name(task, buffer); buffer = task_state(task, buffer); if (mm) { buffer = task_mem(mm, buffer); mmput(mm); } buffer = task_sig(task, buffer); buffer = task_cap(task, buffer); buffer = cpuset_task_status_allowed(task, buffer); #if defined(CONFIG_S390) buffer = task_show_regs(task, buffer); #endif buffer = task_context_switch_counts(task, buffer); return buffer - orig; } |
kB,程序数据段的大小12240 kB,进程在用户态的栈的大小84KB,程序所拥有的可执行虚拟内存的大小576KB,被映像到进程的虚拟内存空间的库的大小21072KB,该进程的 所有页表的大小56KB,只有一个进程共享使用该进程的信号描述符,没有带处理的信号,进程主动切换了1241次,被动切换了717次。
12.mounts文件
该文件包含该系统挂在的文件系统的信息。该文件在/proc下和每个进程文件夹下都有,并且内容一样。
niutao@niutao-desktop:/proc/1$ cat mounts rootfs / rootfs rw 0 0 none /sys sysfs rw,nosuid,nodev,noexec 0 0 none /proc proc rw,nosuid,nodev,noexec 0 0 udev /dev tmpfs rw,relatime 0 0 fusectl /sys/fs/fuse/connections fusectl rw,relatime 0 0 /dev/disk/by-uuid/f9f21592-a8a3-4e61-ac3d-0c7b7aa2cd42 / ext3 rw,relatime,errors=remount-ro,data=ordered 0 0 /dev/disk/by-uuid/f9f21592-a8a3-4e61-ac3d-0c7b7aa2cd42 /dev/.static/dev ext3 rw,relatime,errors=remount-ro,data=ordered 0 0 .... |
13.io文件
niutao@niutao-desktop:/proc/1$ cat io rchar: 14699 /*task_struct->rchar*/ wchar: 20553017 /*task_struct->wchar*/ syscr: 350 /*task_struct->syscr*/ syscw: 1128 /*task_struct->syscw,*/ read_bytes: 1605632 /*task_struct->ioac.read_bytes*/ write_bytes: 0 /*task_struct->ioac.write_bytes*/ cancelled_write_bytes: 0 /*task_struct->ioac.cancelled_write_bytes*/
This entry was posted on 星期三, 十一月 12th, 2008 at 10:31 下午 and is filed under Uncategorized.
You can follow any responses to this entry through the RSS 2.0 feed. You can leave
a response, or trackback from your own site.
相关文章推荐
- 通过/proc/PID/status查看进程内存占用情况
- Linux下进程信息/proc/pid/status的深入分析
- linux进程监控脚本(/proc/$pid/status)
- 查看进程状态/proc/pid/stat
- cat /proc/$PID/status
- cat /proc/pid/status
- 查看进程状态/proc/pid/stat
- 通过 /proc/[pid]/ 查看进程状态
- linux下查看进程的状态 /proc/[pid]/status
- 通过/proc/pid./status查看进程信息
- linux /proc/pid进程信息说明
- /proc/[pid]/下的maps、status、stat、statm
- /proc/pid进程相关说明
- linux 中查看某个单进程程序运行所占内存(linux proc status statm详解)
- 获取ios系统的进程列表(pid, names, paid, status)
- android通过执行netstat及cat /proc/net/tcp查看正在运行应用的本地端口号pid和uid以及对方的IP和端口号
- PROC系列之/proc/pid/status
- 4.3.3.3 master_status_event函数:父进程读status_fd管道,更新其记录的子进程状态
- /proc/$PID/status
- linux proc进程 pid stat statm status id 目录 解析 内存使用