![为什么进程信息存储在 /proc 中,就像进程信息存储在 RAM 中的内核中,而 /proc 存储在辅助存储器中一样?](https://linux22.com/image/190548/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%9B%E7%A8%8B%E4%BF%A1%E6%81%AF%E5%AD%98%E5%82%A8%E5%9C%A8%20%2Fproc%20%E4%B8%AD%EF%BC%8C%E5%B0%B1%E5%83%8F%E8%BF%9B%E7%A8%8B%E4%BF%A1%E6%81%AF%E5%AD%98%E5%82%A8%E5%9C%A8%20RAM%20%E4%B8%AD%E7%9A%84%E5%86%85%E6%A0%B8%E4%B8%AD%EF%BC%8C%E8%80%8C%20%2Fproc%20%E5%AD%98%E5%82%A8%E5%9C%A8%E8%BE%85%E5%8A%A9%E5%AD%98%E5%82%A8%E5%99%A8%E4%B8%AD%E4%B8%80%E6%A0%B7%EF%BC%9F.png)
/proc 是我们在 Linux 根目录中找到的一个目录。它包含进程的信息。但实际上,进程表和所有这些东西都存储在 RAM 中的内核中。请回答我的询问。我可能听起来很傻,因为我是新来的。
答案1
来自手册页:
proc 文件系统是一个伪文件系统,它提供了内核数据结构的接口。
/proc 不是辅助存储。 /proc 与 /sys 一样,是一个提供进入内核窗口的文件系统。/proc/1234/cmdline
例如, 不是磁盘文件。除了索引节点之外,它不占用任何空间。当您读取该文件时,您实际上访问了内核内存。
当您尝试写入 /proc 的某些文件时,您会发现 /proc 不是一个普通的文件系统。作为 root,尝试一下echo blabla > /proc/$$/cmdline
。迎接您的将是echo:写入错误:参数无效。cmdline
即使是 root 也只能读取。同样,/sys 包含只能写入的文件。例如,尝试cat /sys/block/sda/device/delete
(但不要写入它 - 从逻辑上讲,您会从系统中删除 sda 设备。如果您不小心这样做,最简单的补救措施是重新启动)。
类似的案例还有/dev/kmem
。它不是文件系统,而是设备文件,它使您可以访问内核内存。它不是指存储设备。
警告:写入,甚至读取 /proc 和 /sys 中的某些文件可能存在风险,最好在测试机器上完成。