procfs 的作用是什么?

procfs 的作用是什么?

sysfs非常合理——它代表系统,并安装在 下/dev。然而procfs,安装到 的/proc则更加模糊。procfs&有什么/proc用?

答案1

从历史上看(在 Linux 出现之前的几年),/proc它首先出现,并且每个进程包含一个文件。每个(伪)文件都提供对进程内存的访问,例如,从文件中读取字节号 0x1234 会为您提供进程虚拟内存中地址 0x1234 的内容。此接口由ps(原始进程信息查看器)和调试器等命令使用。

Unix 的后续变体复制了该原理,但没有复制细节。例如,在 Linux 上,每个进程都有一个目录,其中包含可读形式的各种信息。例如,/proc/1/cwd是指向进程 1 的当前工作目录的符号链接,以及/proc/1/cmdline包含命令行参数的文件。

由于它的存在,Linux 还用于/proc提供系统信息,例如/proc/cpuinfo包含有关 CPU(微处理器)的信息和/proc/bus/usb/包含有关 USB 设备的信息。的文档/proc位于内核文档中filesystems/proc.txt

后来,/syssysfs文件系统)开始提供有关内核的信息。例如,在 下有关于 USB 设备的信息/sys/bus/usb(格式与 不同/proc/bus/usb),在 下有关于内核模块(以及控制某些模块的接口)的信息/sys/modules

请注意,这/proc/sys与 不同/sys/proc/sys显示了一组特定的运行时可配置内核参数,称为sysctl 参数

您将找到更多历史和当前信息关于/proc维基百科

¹或者更准确地说,proc文件系统可以安装在其他位置(但如果不能随意使用/proc则会破坏很多程序)。

答案2

/proc是内核的实时 API。您可以设置内核变量,或检索内核信息。procfs 类似于文件系统模拟,能够通过文件系统与内核通信。

每个进程都有自己的目录,/proc以进程 ID 为名称。在此目录中,您可以找到内核针对特定进程的所有信息。

其他目录允许获取内核统计信息(如/proc/meminfo)或信息(如/proc/cpuinfo),或者您可以配置某些内容(如/proc/sys/vm/swappiness允许您更改内核如何使用交换空间)。

答案3

procfs 提供有关您正在运行的进程的信息。

例如:

$ sleep 120 &
[2] 11581
$ ls /proc/11581
...
cmdline
cwd
...
$ cat /proc/11581/cmdline
sleep120

答案4

有些答案略有不同。

/proc是当前正在运行的进程的文件系统表示。您不需要去任何特殊的地方,只要您可以读取文件,就可以与内核交互。procfs只是它的实现。

这里的哲学是:使用像 grep 和朋友这样的小工具来与进程之类的东西交互,而不是编写专门的工具来与进程交互。

相关内容