Linux proc文件系统杂记
2016-06-02 18:19
519 查看
一、cpu占用率相关
1. 系统总体cpu占用
/proc/stat
示例输出:
[root@test]# cat /proc/stat
cpu 166709 34158 278899 243448347 302989 0 345 0 0 0
cpu0 84510 17883 137112 121703575 152650 0 304 0 0 0
cpu1 82199 16274 141787 121744771 150338 0 41 0 0 0
intr 75906613 128 3 0 0 1145 0 3 0 1 0 0 0 5 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10721640 10872206 50816463 1 969791 20 519 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 61301504
btime 1463641857
processes 2841411
procs_running 1
procs_blocked 0
softirq 71894122 0 9598905 245185 50867002 970583 0 1 4522038 39180 5651228
具体函义,可以查看内核源码。下面是从top命令的源码top.c中摘出的一点代码。也可以看出一些函义。
file = fopen("/proc/stat", "r");
fscanf(file, "cpu %lu %lu %lu %lu %lu %lu %lu", &new_cpu.utime, &new_cpu.ntime, &new_cpu.stime,
&new_cpu.itime, &new_cpu.iowtime, &new_cpu.irqtime, &new_cpu.sirqtime);
2. 每个进程的cpu占用
/proc/pid/stat
示例输出
[root@test]# cat /proc/12/stat
12 (rcuos/0) S 2 0 0 0 -1 2129984 0 0 0 0 0 3161 0 0 20 0 1 0 2 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744071579888989 0 0 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0
下面是从top命令的源码top.c中摘出的一点代码。也可以看出一些函义。
/* Split at first '(' and last ')' to get process name. */
open_paren = strchr(buf, '(');
close_paren = strrchr(buf, ')');
if (!open_paren || !close_paren) return 1;
*open_paren = *close_paren = '\0';
strncpy(proc->tname, open_paren + 1, THREAD_NAME_LEN);
proc->tname[THREAD_NAME_LEN-1] = 0;
/* Scan rest of string. */
sscanf(close_paren + 1, " %c %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d "
"%lu %lu %*d %*d %*d %*d %*d %*d %*d %lu %ld",
&proc->state, &proc->utime, &proc->stime, &proc->vss, &proc->rss);
3. 每个线程的cpu占用
/proc/pid/task/tid/stat
示例输出
[root@test]# cat /proc/12/task/12/stat
12 (rcuos/0) S 2 0 0 0 -1 2129984 0 0 0 0 0 3161 0 0 20 0 1 0 2 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744071579888989 0 0 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0
其格式与/proc/pid/stat格式相同
1. 系统总体cpu占用
/proc/stat
示例输出:
[root@test]# cat /proc/stat
cpu 166709 34158 278899 243448347 302989 0 345 0 0 0
cpu0 84510 17883 137112 121703575 152650 0 304 0 0 0
cpu1 82199 16274 141787 121744771 150338 0 41 0 0 0
intr 75906613 128 3 0 0 1145 0 3 0 1 0 0 0 5 0 0 0 0 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10721640 10872206 50816463 1 969791 20 519 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
ctxt 61301504
btime 1463641857
processes 2841411
procs_running 1
procs_blocked 0
softirq 71894122 0 9598905 245185 50867002 970583 0 1 4522038 39180 5651228
具体函义,可以查看内核源码。下面是从top命令的源码top.c中摘出的一点代码。也可以看出一些函义。
file = fopen("/proc/stat", "r");
fscanf(file, "cpu %lu %lu %lu %lu %lu %lu %lu", &new_cpu.utime, &new_cpu.ntime, &new_cpu.stime,
&new_cpu.itime, &new_cpu.iowtime, &new_cpu.irqtime, &new_cpu.sirqtime);
2. 每个进程的cpu占用
/proc/pid/stat
示例输出
[root@test]# cat /proc/12/stat
12 (rcuos/0) S 2 0 0 0 -1 2129984 0 0 0 0 0 3161 0 0 20 0 1 0 2 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744071579888989 0 0 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0
下面是从top命令的源码top.c中摘出的一点代码。也可以看出一些函义。
/* Split at first '(' and last ')' to get process name. */
open_paren = strchr(buf, '(');
close_paren = strrchr(buf, ')');
if (!open_paren || !close_paren) return 1;
*open_paren = *close_paren = '\0';
strncpy(proc->tname, open_paren + 1, THREAD_NAME_LEN);
proc->tname[THREAD_NAME_LEN-1] = 0;
/* Scan rest of string. */
sscanf(close_paren + 1, " %c %*d %*d %*d %*d %*d %*d %*d %*d %*d %*d "
"%lu %lu %*d %*d %*d %*d %*d %*d %*d %lu %ld",
&proc->state, &proc->utime, &proc->stime, &proc->vss, &proc->rss);
3. 每个线程的cpu占用
/proc/pid/task/tid/stat
示例输出
[root@test]# cat /proc/12/task/12/stat
12 (rcuos/0) S 2 0 0 0 -1 2129984 0 0 0 0 0 3161 0 0 20 0 1 0 2 0 0 18446744073709551615 0 0 0 0 0 0 0 2147483647 0 18446744071579888989 0 0 17 1 0 0 0 0 0 0 0 0 0 0 0 0 0
其格式与/proc/pid/stat格式相同
相关文章推荐
- sar查看各种io
- Linux驱动修炼之道-混杂设备
- linux awk 命令详解
- Linux系统下如何配置SSH?如何开启SSH?
- CentOS-7 编译安装 Zabbix-3.0
- Linux驱动修炼之道-SPI驱动框架源码分析(下)
- Linux驱动修炼之道-SPI驱动框架源码分析(中)
- Linux驱动修炼之道-SPI驱动框架源码分析(上)
- 【Linux】Too many open files
- centos7.2安装john-1.8.0
- Linux常用命令--more
- Hadoop安装教程_单机/伪分布式配置_CentOS6.4/Hadoop2.6.0
- Linux实践:文件破解
- linux服务(4)--ssh服务防暴力破解--RHEL6.5
- Linux常用命令:find命令之xargs
- Linux常用命令:find命令之exec
- Linux常用命令:find 命令概览
- Linux常用命令:locate 命令
- Linux常用命令:which命令
- Linux常用命令:tail 命令