/proc 目录存储在 RAM 还是硬盘中?

/proc 目录存储在 RAM 还是硬盘中?

我想知道 /proc 是什么以及其中包含哪些内容?以及 /proc 存储在 RAM 还是硬盘中?

谢谢

答案1

取自这里

/proc 非常特殊,因为它也是一个虚拟文件系统。它有时被称为进程信息伪文件系统。它不包含“真实”文件,而是包含运行时系统信息(例如系统内存、已安装的设备、硬件配置等)。

再次,从同一站点

/proc 文件系统包含一个假想文件系统。它并不存在于磁盘上。相反,内核会在内存中创建它。

因此,回答你的问题:

  1. /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
    
  2. 这不是一个真实的文件系统。它是一个表示内核内部结构。因此,它不是真的存储在任何地方,但您可以说其内容存储在内核内存(即“RAM”)中。

您可以执行的大多数操作直接地在文件系统上/proc可以(实际上,应该)可通过sysctl实用程序(手册页)。

答案2

去引用kernel.org 文档

proc 文件系统充当内部数据结构的接口在内核中。它可用于获取有关系统的信息并在运行时更改某些内核参数(sysctl)。

内核本身被加载到内存中. 连同sockfspipefsprocfs虚拟文件系统。您在磁盘上看到的目录/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

相关内容