首页 文章

一些/ proc和/ dev问题

提问于
浏览
2

(1)/ proc是否始终存在于所有Linux系统上,或者它是某个地方的选项(例如内核编译,启动等)?

(2)什么决定/ proc中存在哪些子目录?这些是否始终相同,或者是否可由用户空间程序配置和/或创建(可能以root身份运行)?

(3)我注意到/ dev / shm存在于我的系统上而不必安装它,也不存在于/ etc / fstab中 . 这是自动还是创造了它?相反,我必须挂载/ dev / mqueue . 这不应该是自动安装吗?

(4)如果安装了设备或目录,以编程方式确定的正常/最佳方法是什么?如果只是寻找开放错误或是否有API调用 .

谢谢 .

2 回答

  • 2
    • /proc 通常由init脚本挂载,如下所示:
    mount none /proc -t proc
    

    如果没有这样做,你将看不到 /proc 的预期内容(但是你也会有一个非POSIX兼容的系统) .

    $ grep proc /proc/filesystems
    nodev   proc
    

    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 文件的输出,以确定当前安装的内容 .

    您可以将目录 statstat 与其父目录进行比较;如果不同,则该目录是一个挂载点 .

    除非您编写的代码要在非标准系统上运行,或者在系统设置之前处于启动状态,否则您可能会认为安装了 /dev/proc/sys 等 .

  • 4
    • 大多数(如果不是所有公开发布的发行版)都配置proc文件系统并在启动时挂载它,因为它非常有用 . 但是你当然可以禁用它并获得一个可用的内核 - 但用户空间会受到阻碍 .

    • / proc下可用的目录由编译内核时的驱动程序及其选项决定 . 您无法从用户空间创建新目录或文件 .

    • 您的发行版的开发人员选择要安装的内容和位置 .

    • 你可以运行mount(8)或者如果你安装了/ proc你可以窥探/ proc / mounts . mount程序还使用相同的信息维护/ etc / mtab,但格式略有不同 .

相关问题