Answers:
根据The Open Group的发布标准,唯一需要的目录是:
/
/dev
,其中包含console
,null
和tty
/tmp
,保证可写但不一定保留。Linux Foundation维护文件系统层次结构标准(FHS),将其扩展为包括您通常在Linux系统上看到的目录:
/bin
:基本用户命令二进制文件/boot
:引导加载程序的静态文件/dev
:设备文件/etc
:特定于主机的系统配置/home
:用户主目录(可选)/lib
:必需的共享库和内核模块/lib<qual>
:备用格式基本共享库(可选)/media
:可移动媒体的安装点/mnt
:临时挂载文件系统的挂载点/opt
:附加应用程序软件包/root
:root用户的主目录(可选)/run
:运行时变量数据/sbin
:系统二进制文件/srv
:此系统提供的服务数据/tmp
:临时文件- 以及
/usr
层次结构和/var
层次结构
FHS设计为尽可能通用,以允许合并到任何UNIX系统中。附加目录可能存在于任何合理的系统中,但这不是POSIX强制要求的。
但是,请注意,The Open Group还指出:
除非以下指定,否则严格遵循标准的应用程序不应承担在任何这些目录中创建文件的能力。
由于目录实际上只是文件,因此这意味着严格遵循标准的应用程序将不会在根级别创建任何文件或目录。因此,POSIX不一定限制分发在根目录级别上可以放置的内容,但是似乎表明符合其规范的应用程序不能假定它将能够这样做。
在10.1目录结构和文件中,POSIX列出了必须存在的目录。但是,它对文件系统的根级别上可以存在的其他目录的数量没有限制。
因此,似乎没有限制其他目录的大小。
POSIX在这方面的注意力集中在通用性而不是差异上。
/
)可能都是根目录一样,对根目录中的条目数施加上限是很愚蠢的。/
在这方面不是特别特殊,因此可以得出结论,特别地对条目的数量施加上限是相当愚蠢的/
。
在POSIX或典型的Unix实现中,目录中的条目数没有限制。子目录的数量可能有一个间接限制,即最大的硬链接数(每个子目录的..
条目都是该目录的硬链接);对于许多常见文件系统而言,该值为2 16,这将目录限制为65533个子目录(至少对于那些..
显式存储条目的文件系统而言)。在此之前,您将开始遇到性能不佳的问题。根据POSIX,实现只允许支持文件(_POSIX_LINK_MAX
)上的8个硬链接,但没有实际实现限于6个子目录。而且无论如何,在包括ext4在内的许多文件系统上,都不会维护硬链接数..
条目,因此唯一的限制是文件系统上可用的空间或索引节点的数量。
POSIX并没有过多说明系统上文件的组织。它只要求存在几个文件。根目录中唯一的必填项是/dev
和/tmp
。其他的Unix习惯条目如/usr
,/var
,/bin
,/etc
,/lib
,/home
,等都是Unix的不是由POSIX编纂惯例。
在Linux上,FHS编纂了经典以及更多经典。大多数Linux发行版都遵循FHS条目。其他Unix系统通常具有大多数相同的条目,也许有一些区别,但是数量大致相同。
尽管不建议这样做,但系统管理员可能会创建更多内容:大多数事情都有明确定义的位置(软件位于/usr
或之下/opt
,系统数据位于之下/var
,用户数据位于之下/net
,安装点位于/media
或之下/mnt
,等等),因此很少有充分的理由在顶层创建新目录。