procfs

出自 ArchWiki

此文章或章节需要语言、wiki 语法或风格改进。参见 Help:Style 以获取参考。

原因: 使用 Template:ic。(在 Talk:Procfs 中讨论)

proc 文件系统,也称为 procfs,是一个伪文件系统,通常挂载在 /proc,包含关于正在运行的系统的信息

  • 进程,最突出的用途。
  • 内核信息和 参数
  • 系统指标,例如 CPU 使用率。

内容

内核 & 系统信息

/proc 下有许多文件,它们提供了关于系统以及内核的大量信息。这里无法涵盖所有文件,但下面列出了一些文件及其简要信息。

  • /proc/cpuinfo - 关于 CPU 的信息
  • /proc/meminfo - 关于物理内存的信息
  • /proc/vmstat - 关于虚拟内存的信息
  • /proc/mounts - 关于挂载的信息
  • /proc/filesystems - 关于已编译到内核中以及当前已加载内核模块的文件系统的信息
  • /proc/uptime - 当前系统运行时间
  • /proc/cmdline - 内核命令行

进程

/proc/pid 内部存储着关于每个当前运行进程的信息。下面是一个示例,展示了一些当前正在运行的 PID

$ ls -l /proc
total 0
dr-xr-xr-x  9 root    root                  0 Sep  8 18:17 1
dr-xr-xr-x  9 root    root                  0 Sep  9 03:02 10
dr-xr-xr-x  9 daemonx daemonx               0 Sep  9 03:02 1057
dr-xr-xr-x  9 daemonx daemonx               0 Sep  8 18:18 1077
dr-xr-xr-x  9 daemonx daemonx               0 Sep  9 03:02 1087
dr-xr-xr-x  9 root    root                  0 Sep  9 03:02 11
dr-xr-xr-x  9 daemonx daemonx               0 Sep  9 03:02 1103
dr-xr-xr-x  9 daemonx daemonx               0 Sep  9 03:02 1107
dr-xr-xr-x  9 daemonx daemonx               0 Sep  9 03:02 1159
dr-xr-xr-x  9 root    root                  0 Sep  9 03:02 12
dr-xr-xr-x  9 root    root                  0 Sep  9 03:02 124
dr-xr-xr-x  9 root    root                  0 Sep  9 03:02 125
dr-xr-xr-x  9 root    root                  0 Sep  9 03:02 127
dr-xr-xr-x  9 root    root                  0 Sep  9 03:02 128
...

让我们以 pid 1057 为例,看看里面的内容

$ ls -l /proc/1057
total 0
dr-xr-xr-x 2 daemonx daemonx 0 Sep  9 03:12 attr
-rw-r--r-- 1 daemonx daemonx 0 Sep  9 03:12 autogroup
-r-------- 1 daemonx daemonx 0 Sep  9 03:12 auxv
-r--r--r-- 1 daemonx daemonx 0 Sep  9 03:12 cgroup
--w------- 1 daemonx daemonx 0 Sep  9 03:12 clear_refs
-r--r--r-- 1 daemonx daemonx 0 Sep  9 03:12 cmdline
-rw-r--r-- 1 daemonx daemonx 0 Sep  9 03:12 comm
-rw-r--r-- 1 daemonx daemonx 0 Sep  9 03:12 coredump_filter
-r--r--r-- 1 daemonx daemonx 0 Sep  9 03:12 cpuset
lrwxrwxrwx 1 daemonx daemonx 0 Sep  9 03:12 cwd -> /home/daemonx
-r-------- 1 daemonx daemonx 0 Sep  9 03:12 environ
lrwxrwxrwx 1 daemonx daemonx 0 Sep  9 03:12 exe -> /usr/lib/gvfsd-metadata
dr-x------ 2 daemonx daemonx 0 Sep  9 03:12 fd
dr-x------ 2 daemonx daemonx 0 Sep  9 03:12 fdinfo
-rw-r--r-- 1 daemonx daemonx 0 Sep  9 03:12 gid_map
-r-------- 1 daemonx daemonx 0 Sep  9 03:12 io
-r--r--r-- 1 daemonx daemonx 0 Sep  9 03:12 latency
-r--r--r-- 1 daemonx daemonx 0 Sep  9 03:12 limits
-rw-r--r-- 1 daemonx daemonx 0 Sep  9 03:12 loginuid
dr-x------ 2 daemonx daemonx 0 Sep  9 03:12 map_files
-r--r--r-- 1 daemonx daemonx 0 Sep  9 03:12 maps
-rw------- 1 daemonx daemonx 0 Sep  9 03:12 mem
...

一些字段

  • cmdline - 用于启动程序的参数。
  • cwd - 进程的当前工作目录。
  • environ - 进程内部的环境变量(以零分隔)。
  • fd/ - 包含进程打开的文件描述符的目录。
  • exe - 指向进程可执行文件的符号链接。
  • maps - 进程的内存映射。
  • mem - 进程的虚拟内存。

用法

您可以像操作常规文件一样与 /proc 内容进行交互。

从文件读取

$ cat /proc/cmdline

写入文件

# echo 1 > /proc/sys/kernel/sysrq
提示: 可以使用 sysctl 工具更改 /proc/sys/ 中的设置。

参见