概述

proc - process information pseudo-filesystem(进程信息虚拟文件系统)

proc文件系统是一个用于提供内核数据结构接口的虚拟文件系统。通常其挂载于/proc目录下。一般系统会自动挂载此文件系统,当然也可以使用如下命令进行手动挂载:

mount -t proc proc /proc # 可以看到proc文件系统的类型也为proc

大部分此文件系统中的文件是只读的,不过也有一些可写文件,修改这些文件可以修改一些内核运行时变量。

从名字上看,这个文件系统一开始只是用于提供进程相关信息的,后面随着发展,也就开始用于存放其他系统相关的信息。

文件与子目录

/proc目录下的文件与子目录大致分为以下几类:

  1. /proc/[pid] 子目录
    这类子目录以对应进程的pid命名,其下的文件与子目录包含了对应进程的运行信息。对于使用了多线程的进程,其下一般会有一个task子目录,task子目录中以tid命名的子目录中的文件包含了各个线程的相关信息。这些子目录在使用getdents()函数遍历/proc目录时可见,同时也可以使用ls指令查看。

  2. /proc/[tid] 子目录
    同/proc/[pid]/task/下的各个tid命名的子目录,不过对于getdents()函数和ls指令,这些目录是不可见的。

  3. /proc/self 软链接
    一个神奇的链接,当进程访问此目录,则相当于访问自己pid对应的/proc/[pid]目录

  4. /proc/thread-self 软链接
    也是一个神奇的链接,当线程访问此目录,则相当于访问自己tid对应的/proc/self/task/[tid]目录

  5. /proc/[a-z]* 其他文件与子目录
    常用的文件如下:

    文件名用途
    cmdline记录内核启动参数
    cmdline记录内核启动参数
    cpuinfoCPU相关信息
    iomemIO设备的内存使用情况
    interrupts显示被占用的中断和占用者信息
    ioportsIO端口使用情况
    kcore系统物理内存映像,不可读
    loadavg系统平均负载
    meminfo物理内存和swap分区使用情况
    modules加载的模块列表
    mounts已挂载文件系统的信息
    partitions系统识别的分区表
    swaps交换分区利用情况
    version内核版本信息
    uptime系统运行时间

使用方法

程序直接使用标准IO或者C库的文件读写函数访问即可获取其中信息,shell中使用cat直接打印文件内容。

一张图搞定/proc

一张图说清楚/proc目录的来龙去脉:

原始网址:SecurityZines : Understand log4j in and out in flyer

mmexport1651761193108

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐