2.1 Directory Description目录描述

Directory Description目录描述

**bin**Essential command binaries   所有用户可用的基本命令的二进制程序
**boot**Static files of the boot loader 引导加载器必须用到的静态文件  ,kernel initramfs(initrd),grub等。
**dev**Device files 存储特殊文件或设备文件  设备有两种类型: 块设备(随机设备)、字符设备(线性设备)  
            硬盘  、硬盘分区、usb闪存盘 /dev/sd[a-p]数字  
            25针打印机 /dev/lp[0-2] 
            usb接口打印机 /dev/usb/lp[0-15] 
            软盘 /dev/fd[0-7]
            VirtI/O 界面 /dev/vd[a-p] 
            鼠标 /dev/input/mouse[0-15] (通用)
            CDROM/DVDROM /dev/scd[0-1]  
            /dev/sr[0-1]
            /dev/cdrom
            磁带机  /dev/ht0 IDE界面
            /dev/sr0 SATA/SCSI界面
            /dev/tape 当前磁带

**etc**   Host-specific system configuration    系统程序配置文件,不能为二进制程序   
**home**    普通用户家目录的集中位置,一般每个用户的家目录默认为此目录下与用户同名的子目录 , /home/$USER 
**root**    Home directory for the root user (optional) 管理员的家目录,可选。应该使用普通用户登陆。
**lib**     Essential shared libraries and kernel modules   基本共享库和内核模块  为系统启动或跟文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块 
                libc.so.*   the dynamically-linked C library    动态链接c库
                ld* the execution time linker/loader    运行时链接器、加载器
**/lib:** 必须有的目录或软链接:  mldules  loadable kernal modules 可加载的内核模块
**lib64:**  64位系统特种的存放64位共享库的路径,32位的库在lib下
**media:**  Mount point for removeable media    可移动、便携式设备挂载点
**mnt:**    Mount point for mounting a filesystem temporarily   其他文件系统的临时挂载点
**opt:**    Add-on application software packages    附加应用软件包的安装位置,可选
**sbin:**   Essential system binaries   基本的系统管理二进制程序
**srv:**    Data for services provided by this system   系统提供的服务的数据
**tmp:**    Temporary files 存储程序产生的临时文件的目录,此目录所有用户都能执行写操作。
**usr:**    Secondary hierarchy     usr层级结构 第二重要的文件系统, 
                        bin 、sbin 
                        lib、 lib64
                        include: c程序头文件
                        share: 命令手册页和自带文档等架构特有的文件的存储位置
                        local: 层级结构
                        X11R6: x窗口系统安装目录
                        games: 
                        src: 源码文件的存储位置
                        local  /usr/local   local hierarchy   系统管理员安装应用程序;通常用于安装第三方程序
**  var** contains variable data files. This includes spool directories and files, administrative and logging data, and transient and temporary files.  存储时常发生变化的数据
                    cache   Application cache datalibVariable state information 
                    local         Variable data for /usr/local  
                    lock        Lock files  锁文件 
                    log         Log files and directories   日志文件
                    opt         Variable data for /opt  
                    run     Data relevant to running processes  运行中的
                    spool   Application spool data
                    tmp      Temporary files preserved between system reboots   重启后仍要保留的临时文件

    **proc**基于内存的虚拟文件系统,存储内核和进程相关文件,多为内核参数, 例如 net.ipv4.ip_forward,虚拟为 net/ipv4/ip_forward ,  完整路径为 /proc/sys/net/ipv4/ip_forward
**sys** 基于内存的sysfs虚拟文件系统提供了一种比proc 更为理想的访问内核数据的途径,主要作用是管理Linux设备提供一种统一的模型的接口

/sys下的子目录 所包含的内容
devices 这是内核对系统中所有设备的分层次表达模型,也是 /sys 文件系统管理设备的最重要的目录结构,下文会对它的内部结构作进一步分析;
dev 这个目录下维护一个按字符设备和块设备的主次号码(major:minor)链接到真实的设备(/sys/devices下)的符号链接文件,它是在内核 2.6.26 首次引入;
bus 这是内核设备按总线类型分层放置的目录结构, devices 中的所有设备都是连接于某种总线之下,在这里的每一种具体总线之下可以找到每一个具体设备的符号链接,它也是构成 Linux 统一设备模型的一部分;
class 这是按照设备功能分类的设备模型,如系统所有输入设备都会出现在 /sys/class/input 之下,而不论它们是以何种总线连接到系统。它也是构成 Linux 统一设备模型的一部分;
block 这里是系统中当前所有的块设备所在,按照功能来说放置在 /sys/class 之下会更合适,但只是由于历史遗留因素而一直存在于 /sys/block, 但从 2.6.22 开始就已标记为过时,只有在打开了 CONFIG_SYSFS_DEPRECATED 配置下编译才会有这个目录的存在,并且在 2.6.26 内核中已正式移到 /sys/class/block, 旧的接口 /sys/block 为了向后兼容保留存在,但其中的内容已经变为指向它们在 /sys/devices/ 中真实设备的符号链接文件;
firmware 这里是系统加载固件机制的对用户空间的接口,关于固件有专用于固件加载的一套API,在附录 LDD3 一书中有关于内核支持固件加载机制的更详细的介绍;
fs 这里按照设计是用于描述系统中所有文件系统,包括文件系统本身和按文件系统分类存放的已挂载点,但目前只有 fuse,gfs2 等少数文件系统支持 sysfs 接口,一些传统的虚拟文件系统(VFS)层次控制参数仍然在 sysctl (/proc/sys/fs) 接口中中;
kernel 这里是内核所有可调整参数的位置,目前只有 uevent_helper, kexec_loaded, mm, 和新式的 slab 分配器等几项较新的设计在使用它,其它内核可调整参数仍然位于 sysctl (/proc/sys/kernel) 接口中 ;
module 这里有系统中所有模块的信息,不论这些模块是以内联(inlined)方式编译到内核映像文件(vmlinuz)中还是编译为外部模块(ko文件),都可能会出现在 /sys/module 中:编译为外部模块(ko文件)在加载后会出现对应的/sys/module/<module_name>/, 并且在这个目录下会出现一些属性文件和属性目录来表示此外部模块的一些信息,如版本号、加载状态、所提供的驱动程序等;编译为内联方式的模块则只在当它有非0属性的模块参数时会出现对应的 /sys/module/<module_name>, 这些模块的可用参数会出现在 /sys/modules/<modname>/parameters/<param_name> 中,如 /sys/module/printk/parameters/time 这个可读写参数控制着内联模块 printk 在打印内核消息时是否加上时间前缀;所有内联模块的参数也可以由 "<module_name>.<param_name>=<value>" 的形式写在内核启动参数上,如启动内核时加上参数 "printk.time=1" 与 向 "/sys/module/printk/parameters/time" 写入1的效果相同;没有非0属性参数的内联模块不会出现于此。
power 这里是系统中电源选项,这个目录下有几个属性文件可以用于控制整个机器的电源状态,如可以向其中写入控制命令让机器关机、重启等。
slab (对应 2.6.23 内核,在 2.6.24 以后移至 /sys/kernel/slab) 从2.6.23 开始可以选择 SLAB 内存分配器的实现,并且新的 SLUB(Unqueued Slab Allocator)被设置为缺省值;如果编译了此选项,在 /sys 下就会出现 /sys/slab ,里面有每一个 kmem_cache 结构体的可调整参数。对应于旧的 SLAB 内存分配器下的 /proc/slabinfo 动态调整接口,新式的 /sys/kernel/slab/<slab_name> 接口中的各项信息和可调整项显得更为清晰。

猜你喜欢

转载自blog.51cto.com/13161140/2449267