我正在尝试学习 POSIX 标准。使用 Unix 时,我有/bin
、/etc
、/dev
、/media
和 通常/opt
,但是这是标准化的还是符合您的规范实现?根目录下是否可以有很多目录,或者是受到标准的限制?
答案1
根据 The Open Group 的公布的标准,唯一需要的目录是:
/
/dev
,其中包含console
、null
和tty
/tmp
,保证可写但不一定保留。
Linux 基金会维护着一个文件系统层次结构标准(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 不一定限制发行版可以在根级别放置的内容,但似乎确实声明符合其规范的应用程序不能假设它能够这样做。
答案2
在10.1 目录结构和文件, POSIX 列出目录必须存在。但它对文件系统根级别上可以存在的其他目录的数量没有指定限制。
就此而言,它似乎没有对其他目录的大小施加限制。
POSIX 在这一领域的注意力集中在共性而不是差异上。
答案3
无论是在 POSIX 还是在典型的 Unix 实现中,目录中的条目数量都没有限制。子目录的数量可能存在间接限制,即最大硬链接数(每个子目录的..
条目都是该目录的硬链接);对于许多常见文件系统来说,这是 2 16,这将一个目录限制为 65533 个子目录(至少对于那些..
显式存储条目的文件系统而言)。在此之前你就会开始表现不佳。根据 POSIX,一个实现只能支持一个文件上的 8 个硬链接(_POSIX_LINK_MAX
),但没有实际实现仅限于6个子目录。无论如何,在许多文件系统(包括 ext4)上,不会维护..
条目的硬链接计数,因此唯一的限制是文件系统上有多少空间或多少 inode 可用。
POSIX 没有过多说明系统上文件的组织。它只要求存在一些文件。根目录中唯一的强制条目是/dev
和/tmp
。其他习惯性的 Unix 条目如/usr
、/var
、/bin
、/etc
、/lib
、/home
等是UnixPOSIX 未编码的约定。
在 Linux 上,FHS编纂了经典著作和其他一些著作。大多数 Linux 发行版都坚持使用 FHS 条目。其他 Unix 系统通常具有大部分相同的条目,可能有一些差异,但数量大致相同。
系统管理员可以创建更多,尽管这是不鼓励的:大多数东西都有明确定义的位置(软件在 或 下/usr
,/opt
系统数据在 下/var
,用户数据在 下/net
,挂载点在/media
或下/mnt
,等等),所以很少有在顶层创建新目录的任何充分理由。
答案4
与 FAT 不同,UNIX 使用的文件系统对根目录没有特殊大小限制,但一旦分区已满,您将无法添加更多内容。