(1)/proc是否始终存在于所有linux系统上,还是某个地方的选项(例如内核编译,引导等)?
(2)是什么决定/proc中存在哪些子目录?这些是始终相同还是由用户空间程序(大概以root用户身份运行)可配置和/或可创建的?
(3)我注意到/dev/shm存在于我的系统中,而无需挂载它,也不存在于/etc/fstab中。这是自动的还是有创造力的?相反,我必须挂载/dev/mqueue。这不应该也自动安装吗?
(4)以编程方式确定是否已安装设备或目录的正常/最佳方法是什么?应该只是寻找开放错误,还是应该有API调用。
谢谢。
最佳答案
/proc
通常由初始化脚本安装,如下所示:不挂载/proc -t proc
如果不这样做,您将看不到
/proc
的预期内容(但是您还将拥有一个不兼容POSIX的系统)。 节点程序
proc
是内核导出的虚拟文件系统。它的内容完全*由内核和加载的模块确定,这些模块可以注册以添加其他条目。*除了
/proc
中的某些子目录通常被其他虚拟文件系统重载外,例如:mount none /proc/bus/usb -t usbfs -o devmode=0664,devgid=plugdev
mount none /proc/sys/fs/binfmt_misc -t binfmt_misc
mount none /proc/fs/nfsd -t nfsd
/sbin/init
会查看/etc/inittab
来确定要运行的内容,通常是/sbin/rc
或类似的内容,然后通过/etc/rcS.d/*
等运行,并且您的发行版也很有可能也会在initramfs中进行初步设置。 您可以读取较新内核上的
mount
命令或/proc/mounts
文件或/proc/self/mounts
//proc/self/mountinfo
文件的输出,以确定当前安装了什么。您可以将目录的
st_dev
的stat
与它的父目录进行比较;如果不同,则该目录为安装点。除非您正在编写要在非标准系统上运行或在系统建立之前启动时编写的代码,否则可以假定已安装
/dev
,/proc
,/sys
等。 关于linux - 一些/proc和/dev问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1709298/