proc文件系统
记录一些确定Linux系统状态定位问题的的指令。
是什么?
The proc filesystem is a pseudo-filesystem which provides an interface to kernel data structures. It is commonly mounted at /proc.
from Linux Manual
通过proc文件系统可以查看有关系统硬件及当前正在运行进程的信息,也可以通过更改其中某些文件来改变内核的运行状态。很多常用的工具(e.g. top
、free
)都是通过访问proc中的信息来工作的。
proc
下的一些文件:
/proc/apm
高级电源管理(APM)版本信息及电池相关状态信息(当编译的时候CONFIG_APM
为启用时才有效)/proc/buddyinfo
用于诊断内存碎片问题的相关信息文件/proc/interrupts
对于每个CPU的中断号以及中断次数/proc/loadavg
关于CPU和磁盘I/O的负载平均值1
2
3
4
5
6
7
8
9
10➜ ~ cat /proc/loadavg
0.63 0.77 0.85 1/156 6536
| | | | | |
| | | | | |
| | | | | |__最近一个由内核创建的进程的PID
| | | | |_______系统当前存活的内核调度实体的数目
| | | |__________正由内核调度的实体(进程和线程)的数目
| | |_____________每15秒钟
| |__________________每5秒钟
|_______________________每1秒钟关于文件信息: 文件内的信息计算公式如下
/proc/uptime
系统上次启动以来的运行时间,第一个数字表示系统运行时间,第二个数字表示系统空闲时间,单位是秒。uptime其实访问这两个文件
1
2➜ ~ uptime
19:11:47 up 42 days, 3:30, 2 users, load average: 0.73, 0.86, 0.88/proc/meminfo
当前内存的利用状况等的信息,free
访问的就是这个/proc/modules
当前装入内核的所有模块名称列表,由lsmod
命令使用/proc/swaps
系统上的交换分区及其空间利用信息/proc/zoneinfo
内存区域(zone)的详细信息列表/proc/slabinfo
内存频繁使用的对象的cache(应该大体可以理解为系统占用的部分),该文件列出了这些对象相关slap的信息/proc/stat
系统的一些运行信息,不同体系结构会不一样/proc/vmstat
系统虚拟内存的多种统计数据等等其它似乎用到的不多
进程下面的东西
proc/[num]
都系统进程的pid对应的状态文件,目录结构较为固定:
cmdline
启动当前进程的完整命令fd
目录包含当前进程打开的每一个文件的文件描述符(file descriptor)limits
当前进程所使用的每一个受限资源的软限制、硬限制和管理单元root
指向当前进程运行根目录的符号链接stat
当前进程的状态信息statm
进程占用内存的状态信息status
与stat所提供信息类似,但可读性较好task
当前进程所运行的每一个线程的相关信息
参考资料:
- ecs运维指南-Linux 系统诊断[公众号:程序猿石头]