(TOP)文件系统结构标准

文件系统结构标准(Filesystem Hierarchy Standard,FHS)

FHS定义了Unix-like操作系统的目录结构和内容,这个标准由Linux基金会维护。

在FHS标准中,所有文件和目录,包括物理设备或虚拟设备上的,都必定在根目录下,也就是”/“下。

下面一张表是一些目录及其描述,大部分目录都是可以在所有的Unix系统中找到的,而且方式方式也是基本一致的,不过,这张表对于目录的描述只保证对满足FHS标准的平台准确,对于Linux以外的平台不保证准确性。

目录 描述
/ 整个文件系统层级的根目录
/bin 一些必要的可执行命令目录,对于单用户模式或者对于所有的用户都是可用的,比如 cat、ls、cp命令等等
/boot 引导文件加载目录,比如kernels, initrd等
/dev 必要的设备目录,dev是device的意思,系统通过文件io的形式来与设备驱动交互
/etc 特定主机系统范围内的配置文件,这个目录的含义一直都是有争议的,早期由贝尔实验室实现的UNIX系统上,/etc是“等等”的这种意思,就是我们一般放在语句最后说的那种含义(tea, sugar, bread, etc.茶水,糖,面包等等),在这个意义上,当我们不知道把一个文件放哪儿的时候就放这里。但是,FHS标准对/etc目录的定义是:只允许放一些静态配置文件而且一般不放二进制的文件,在一些早期出版文档中,这个目录开始有了其他的一些含义,比如可编译配置文本文件或者扩展工具箱等等
/etc/opt 附加包的配置文件放在这里
/etc/sgml 处理SGML的软件需要的一些目录,SGML含义,通用标准标记语言,有兴趣看wiki:https://en.wikipedia.org/wiki/Standard_Generalized_Markup_Language
/etc/X11 X窗口系统,11是版本号,这个窗口系统一般出现在UNIX-LIKE的系统上,wiki:https://en.wikipedia.org/wiki/X_Window_System
/etc/xml 处理XML的软件需要的一些目录
/home 用户的home目录,包括保存的文件,个人配置等等
/lib 一些可执行命令(/bin/,/sbin/下)所需要的库文件
/lib 可选格式的库,这个目录不是必须的,但是如果存在这个目录,那么需要一些条件(这个目录的措辞有点模棱两可…)
/media 可移动介质挂载点,比如插入U盘的时候就会在/media下生成这个U盘访问的目录
/mnt 临时安装的文件系统,理解为临时挂载点,系统管理员用来手动挂载一些媒体设备之类的目录,这里有个问题,其实Android系统中,一般外部SD卡挂载点也在这个下面,需要搞清楚
/opt 可选的应用软件包,自己安装源码包软件的时候可以指定到这个目录下
/proc 虚拟的文件系统,通过文件的形式提供内核和进程的一些信息
/root root用户的home目录
/run 运行时的一些数据,从上一次系统启动到现在的一些信息,比如当前登陆的用户、当前运行的守护进程等等
/sbin 必要的系统命令,比如 fsck、init、route等等
/srv 存储特定站点的数据,比如web服务器的数据和脚本,FTP服务器提供的数据,版本控制系统的仓库数据等等
/sys 包含一些连接到这台电脑的设备信息
/tmp 临时文件,一般重启就清理了,而且是有大小限制的
/usr 只读的用户数据,包含了大多数的用户应用
/usr/bin 不是必要的目录,在单用户模式下是不需要的,也是存储一些命令的,对所有用户都可用
/usr/include 标准的头文件
/usr/lib /usr/bin/和/usr/sbin/下的命令多需要的库
/usr/lib 备用格式库
/usr/local 当前host的本地数据,一般下面还会有子目录,比如bin/,lib/,share/等等
/usr/sbin *
/usr/share 共享数据
/usr/src 源码,比如内核源码
/usr/X11R6 还是X窗口系统6是Release 6的意思
/var 一些变量数据,比如日志,临时的email文件,这些变量值在系统运行期间会一直修改
/var/cache 应用缓存数据
/var/lib 程序运行时修改的持久化数据,比如数据库、比如打包系统的元数据等等
/var/lock 锁文件,用来跟踪当前使用的资源
/var/log 日志
/var/mail 邮箱文件,有些旧的系统可能在/var/spool/mail中,但是这个目录现在弃用了
/var/opt 附加包软件的变量信息
/var/run 运行时变量,和/run是一个作用,只不过在FHS3.0标准中,这个目录被/run取代了,为了向下兼容,系统还是应当有这个目录,或者让这个目录指向/run
/var/spool 等待处理的任务池,比如打印队列,待发的邮件队列等等
/var/spool/email 就是/var/mail
/var/tmp 临时文件

最后,上表中的描述并不适用于所有系统,只能说大部分都差不多,但是有些系统实现会有些偏差,具体系统还是应该查阅该系统的文件结构的文档。

写完收工~