我想知道 /proc 是什么以及其中包含哪些内容?以及 /proc 存储在 RAM 还是硬盘中?
谢谢
答案1
取自这里:
/proc 非常特殊,因为它也是一个虚拟文件系统。它有时被称为进程信息伪文件系统。它不包含“真实”文件,而是包含运行时系统信息(例如系统内存、已安装的设备、硬件配置等)。
再次,从同一站点:
/proc 文件系统包含一个假想文件系统。它并不存在于磁盘上。相反,内核会在内存中创建它。
因此,回答你的问题:
/proc
包含有关您的系统和外围设备的信息,它还可用于控制通过写入来控制内核行为。有关每个条目内容的详细信息,请参阅第一个链接。
例如,您可以通过检查以下内容获取 CPU 信息/proc/cpuinfo
:cat /proc/cpuinfo
或者你可以更改 IP 转发等选项:
echo "1" > /proc/sys/net/ipv4/ip_forward # enables IP forwading echo "0" > /proc/sys/net/ipv4/ip_forward # disables IP forwading
这不是一个真实的文件系统。它是一个表示内核内部结构。因此,它不是真的存储在任何地方,但您可以说其内容存储在内核内存(即“RAM”)中。
您可以执行的大多数操作直接地在文件系统上/proc
可以(实际上,应该)可通过sysctl
实用程序(手册页)。
答案2
去引用kernel.org 文档:
proc 文件系统充当内部数据结构的接口在内核中。它可用于获取有关系统的信息并在运行时更改某些内核参数(sysctl)。
内核本身被加载到内存中. 连同sockfs
和pipefs
,procfs
是虚拟文件系统。您在磁盘上看到的目录/proc
不是永久的 - 此目录中的数据仅在系统运行期间保留在那里。一旦您关闭它,数据就不会保留在磁盘上,目录将为空。目录本身仅用作内核文件系统的挂载点。
至于其中包含的信息,有关 procfs 的 Wikipedia 文章简洁地描述它:
proc 文件系统 (procfs) 是类 Unix 操作系统中一种特殊的文件系统,它以分层的文件状结构呈现有关进程和其他系统信息的信息,与传统的跟踪方法或直接访问内核内存相比,它为动态访问内核中保存的进程数据提供了一种更方便、更标准化的方法。
...
proc 文件系统提供了一种内核空间和用户空间之间通信的方法。例如,GNU 版本的进程报告实用程序 ps 使用 proc 文件系统来获取其数据,而无需使用任何专门的系统调用。
除此之外,它还是一种让进程了解可用资源的便捷方法。例如,如果您运行,strace -e open,openat df
您将看到它打开/proc/self/mountinfo
以获取有关以您的用户名运行的可用挂载点的信息:
openat(AT_FDCWD, "/proc/self/mountinfo", O_RDONLY) = 3