(1)/ proc是否始终存在于所有Linux系统上,或者它是某个地方的选项(例如内核编译,启动等)?
(2)什么决定/ proc中存在哪些子目录?这些是否始终相同,或者是否可由用户空间程序配置和/或创建(可能以root身份运行)?
(3)我注意到/ dev / shm存在于我的系统上而不必安装它,也不存在于/ etc / fstab中 . 这是自动还是创造了它?相反,我必须挂载/ dev / mqueue . 这不应该是自动安装吗?
(4)如果安装了设备或目录,以编程方式确定的正常/最佳方法是什么?如果只是寻找开放错误或是否有API调用 .
谢谢 .
2 回答
/proc
通常由init脚本挂载,如下所示:如果没有这样做,你将看不到
/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
检查您的init脚本 .
/sbin/init
查看/etc/inittab
以确定要运行的内容,通常是/sbin/rc
或类似的,然后通过/etc/rcS.d/*
等,并且您的发行版很可能也会在initramfs中进行初步设置 .取决于 .
您可以在较新的内核上读取
mount
命令或/proc/mounts
文件或/proc/self/mounts
//proc/self/mountinfo
文件的输出,以确定当前安装的内容 .您可以将目录
stat
的stat
与其父目录进行比较;如果不同,则该目录是一个挂载点 .除非您编写的代码要在非标准系统上运行,或者在系统设置之前处于启动状态,否则您可能会认为安装了
/dev
,/proc
,/sys
等 .大多数(如果不是所有公开发布的发行版)都配置proc文件系统并在启动时挂载它,因为它非常有用 . 但是你当然可以禁用它并获得一个可用的内核 - 但用户空间会受到阻碍 .
/ proc下可用的目录由编译内核时的驱动程序及其选项决定 . 您无法从用户空间创建新目录或文件 .
您的发行版的开发人员选择要安装的内容和位置 .
你可以运行mount(8)或者如果你安装了/ proc你可以窥探/ proc / mounts . mount程序还使用相同的信息维护/ etc / mtab,但格式略有不同 .