目录

Linux系统目录之/proc

目录

proc是一个伪文件系统,为用户提供读写内核数据的接口,一般由系统自动挂载到/proc目录,内部的文件和目录记录内核和进程的相关信息。

内部文件和目录并非传统的文件和目录,其size通常是0

/proc下大部分文件是只读的,很多系统工具通过/proc获取信息,比如:

  • lsmod等同于cat /proc/modules
  • lspci等同于cat /proc/pci

部分文件可写,对于这些文件的修改,等同于使用sysctl命令重设内核参数。

/proc下一部分文件记录内核相关的信息,比如:

  • /proc/cpuinfo CPU统计信息(型号、规格、指令集等)

  • /proc/meminfo 内存统计信息

  • /proc/stat 内核统计信息(CPU负载、磁盘IO、进程等相关数据)

  • /proc/vmstat 虚拟内存统计信息

  • /proc/version 内核版本信息

对于一个运行中的进程,/proc下存在对应进程ID的目录,内部记录了该进程相关的数据,比如:

  • /proc/$pid 进程子目录

  • /proc/$pid/comm 进程命令名称

  • /proc/$pid/cmdline 完整的命令行字符串

    命令行参数使用null字节’\0’分隔,查看命令 cat /proc/$pid/cmdline | tr '\0' ' '

  • /proc/$pid/cwd 指向当前工作目录(current working directory)的软链接

  • /proc/$pid/environ 进程启动所使用的环境变量

    记录使用null字节’\0’分隔,查看命令 cat /proc/$pid/environ | tr '\0' '\n'

  • /proc/$pid/exe 指向所执行程序的软链接

    可以利用exe软链接恢复误删的执行程序,使用命令 cp /proc/$pid/exe /home/caosiyang/myprogram

  • /proc/$pid/fd 文件描述符子目录,内部条目(软链接)对应于该进程打开的各个文件

    可以利用fd子目录下的软链接恢复误删的文件, 使用命令 cp /proc/$pid/fd/1 /home/caosiyang/myfile

  • /proc/$pid/stat 进程状态信息,ps命令也从此处获取进程信息

  • /proc/$pid/statm 进程内存使用统计,以page为单位

  • /proc/$pid/status 格式化后更易理解的进程和内存统计信息,数据来自上面的stat和statm

  • /proc/$pid/task 线程子目录,内部目录对应于该进程的各个线程

    线程可以修改comm(/proc/$pid/task/$tid/comm),所以可能与进程comm(/proc/$pid/comm)不一致

本文只是抛砖引玉,关于/proc内部各个文件及其字段的详细解释,可以参考 https://man7.org/linux/man-pages/man5/proc.5.html


参考资料