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. topfree)都是通过访问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当前进程所运行的每一个线程的相关信息

参考资料:

  1. ecs运维指南-Linux 系统诊断[公众号:程序猿石头]

proc文件系统
https://blog.yrpang.com/posts/52529/
作者
yrPang
发布于
2020年11月7日
许可协议