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/
中的设置。