今天看一篇文章,里面提到了Linux文件系统层次标准(FHS)。之后我就看了FHS。由于本人读英文文章很慢,为了以后方便自己也方便大家,我就把Filesystem Hierarchy Standard翻译了下,可能有的地方不是很到位,请谅解。
如果您看了,觉得对您有点帮助,请支持一下,毕竟翻译该文章也花费了我两星期的业余时间。
如果要转载请注明出处,谢谢。
标准Linux文件系统层次标准(Filesystem Hierarchy Standard)
l 第四章/var层次结构
目的:
/var包含可变数据文件。该目录下包含后台打印目录和文件,管理和日志数据,临时文件。
/var的某些部分在不同系统之间是不共享的。比如/var/log, /var/lock和/var/run。其他位置能被共享,如,/var/mail, /var/cache/man, /var/cache/fonts,和/var/spool/news
/var被指定是为了以只读方式挂在/usr。系统运行时写入/usr中(如,阻止安装程序和软件维护)的任何东西都必须在/var中记录。
如果/var不能作为一个独立的位置存在,最好将/var从根目录移到/usr下(这种情况发生在为了减小根位置的大小或当根分区的空间不足时)。但是/var绝对不能链接到/usr,因为这样是/var和/usr不易区分,并且容易造成命名冲突。作为替代,/var应该链接到/usr/var。
要求:
以下目录或目录符号链接需要存在于/var下。
目录 描述
cache 应用程序缓存数据。
lib 可变状态信息。
local /usr/local的可变数据。
lock 锁文件。
opt /opt的可变数据。
run 执行中进程的相关数据。
spool 后台打印数据。
tmp 系统重启时临时文件。
特殊选项:
如果安装了相应的子系统,那么以下目录或目录符号链接,必需在/var下。
目录 描述
account 进程日志记录。(可选)
crash 系统崩溃转存。(可选)
games 可变游戏数据。(可选)
mail 用户邮箱文件。(可选)
yp 网络信息服务数据库文件。(可选)
/var/account : 进程日志记录(可选)
目的:
该目录保存当前活动进程日志记录和合成进程实用数据。
/var/cache : 应用程序缓存数据
目的:
/var/cache适用于缓存来自应用程序的数据。这些数据来自于费时的I/O和计算数据。应用程序必需能够生成和恢复这些数据。不像/var/spool,缓存文件能被删除且不丢失数据。这些数据必需在程序调用之后和系统重启后都是继续有效的。
特殊选项:
目录 描述
fonts 本地生成的字体。(可选)
man 本地格式的手册页。(可选)
www www代理或缓存数据。(可选)
<package> 具体的数据包缓存。(可选)
/var/cache/fonts : 本地生成的字体(可选)
目的:
/var/cache/fonts目录用于存储一些动态生成的字体。特别是由”mktexpk”自动生成的字体,必需放在/var/cache/fonts下的合适的子目录中。
特殊选项:
其他动态生成的字体也位于/var/cache/fonts下的合适子目录中。
/var/cache/man : 本地格式的手册页(可选)
目的:
该目录为网站提供了一个只读/usr分区的位置,但是希望允许本地格式的手册页的缓存。网站可以选择不用/var/cache/man来挂载可写的/usr分区,而是可以将格式手册页直接写在/usr/share/man目录下的cat<section>中。我们建议大多数网站用以下的其中一个选项来代替:
l 预处理格式的所有手册页和没有格式化的版本放在一起。
l 允许本地缓存格式的手册页在/var/cache/man中。
l 不允许缓存格式的手册页,在每次手册页被提出时请求做格式。
/var/cache/man的结构需要反应手册页的多个层次的事实和多语言支持的可能性。
给定一个没有格式的手册页,通常会出现在<path>/man/<local>/man<section>,格式了的手册页目录位置为/var/cache/man/<catpath>/<local>/cat<section>。
手册页写入/var/cache/man最终会以原来手册的层次结构被转移到适当的预格式化的目录中。和原来手册的层次结构相同的同样格式的手册页会过期,如果他们一段时间不被访问。
/var/crash : 系统崩溃转存(可选)
目的:
该目录存放系统崩溃转存。在本标准出来之前,Linux系统是不支持系统崩溃转存的,但是其他可能符合FHS标准的系统会支持。
/var/games : 可变游戏数据(可选)
目的:
在/usr中的任何游戏相关的可变数据应该放在这里。/var/games存储以前能在/usr找到的动态数据。静态数据,如帮助文档,游戏等级等必须存储在其他地方,如/usr/share/games。
/var/lib : 可变状态信息
目的:
该层次结构保存关于应用程序或系统的状态信息。这些状态在程序运行时被修改,且它们是关于特定主机的。用户永远都不用修改/var/lib下的文件来配置一个数据包的操作。
状态信息通常用来维持一个应用程序(或一组相互关联的应用程序)调用之间的条件和同一个应用程序的不同实例的条件。状态信息在重启后应该保持有效,不应该记录输出和不应该是后台数据。
一个应用程序(或一组相互关联的应用程序)应该用/var/lib下的一个子目录来存储它的数据。这里有个被需要的子目录,/var/lib/misc, 它用于存放状态文件并且不需要一个子目录。其他子目录只在一个情况出现,那就是如果应用程序在发布的时候存在问题。
/var/lib/<name>是必须被所有发布软件包用的位置。当然不同发布商会用不同的名字。
要求:
以下目录或目录符号链接被/var/lib需要。
目录 描述
misc 各种状态数据。
特殊选项:
如果相应的系统被安装了,那么以下目录或目录符号链接必需在/var/lib中。
目录 描述
<editor> 编辑器备份文件和状态文件。(可选)
<pkgtool> 包支持文件。(可选)
hwclock hwclock的状态目录。(可选)
xdm X显示管理器动态数据。(可选)
/var/lib/<editor> : 编辑器备份文件和状态文件(可选)
目的:
该目录用于保存因为任何意外终止的编辑器的文件。(如,elvis, jove, nvi等)。
其他的编辑器不需要崩溃恢复文件目录,但是需要一个明确的位置用于存储编辑器运行过程中的其他信息。例,给出的这种信息需要被存储在/var/lib下的子目录中(GNU Emacs 将在/var/lib/emacs/lock中锁定的文件)。
未来的编辑器可能需要超出崩溃恢复文件和锁定文件的其他状态信息。这些额外的信息也应该放在/var/lib/<editor>下。
/var/lib/hwlock : hwlock的状态目录(可选)
目的:
该目录包含/var/lib/hwlock/adjtime文件。
/var/lib/misc : 各种可变数据
目的:
该目录包含不在/var/lib的其他子目录中的可变数据。应尝试使用这个目录比较独特的名称,以避免命名空间冲突。
/var/lock : 锁文件
目的:
锁文件应该保存在/var/lock目录结构中。
最初位于/usr/spool/locks或/usr/spool/uucp的设备和由多个应用程序共享的其他资源的锁文件(如,串行设备锁文件)现在被存储在/var/lock下。通常的命名惯例为”LCK..”接设备的基础名称。如,/dev/ttyS0的锁文件”LCK..ttyS0”将被创建。
对这种锁定文件的内容而使用的格式必须是HDB UUCP锁定文件格式。HDB格式存储进程id(PID)为一个十字节的十进制ASCII码,加上一个换行符结尾。如,如果进程1230持有一个锁文件,它将包含十一个字:空格, 空格, 空格, 空格, 空格, 空格, 1, 2, 3, 0, 换行符。
/var/log : 日志文件和目录
目的:
该目录包含各种日志文件。大多数日志必须被写入到这个目录或适当的子目录。
特殊选项:
如果安装了相应的子目录,那么如下的文件或文件符号链接必需在/var/log下。
文件 描述
lastlog 记录每个用户的最后一次登陆信息。
messages 来自syslogd进程的系统信息。
wtmp 记录所有的登陆和注销。
/var/mail : 用户邮箱文件(可选)
目的:
邮箱池必需可以通过/var/mail访问,并且邮箱池文件必需采用<username>格式。
在这里的用户邮箱文件必需以标准UNIX邮箱格式存储。
/var/opt : /opt的可变数据
目的:
/opt下软件包的可变数据必需安装在/var/opt/<subdir>,其中<subdir>是/opt下被存储的附加软件包的静态数据的子目录名称。
/var/run : 运行时变量数据
目的:
该目录包含系统自启动以来的系统描述信息。该目录下的文件必需被清空(删除或适当截断),在引导进程开始运行时。程序可能会有/var/run的一个子目录。程序用多个运行时文件是被鼓励的。原来放在/etc的进程标识符(PID)文件,现在必需放在/var/run中。进程标识符(PID)文件的命名惯例是<程序名称>.pid。如,crond的PID文件被命名为/var/run/crond.pid。
要求:
PID文件的内部格式保持不变。该文件必需以十进制ASCII编码后接一个换行符的格式来包含PID。例,如果crond的进程号为25,那么/var/run/crond.pid将包含三个字符:2,5,换行符,实际内容为25。
程序读取PID文件时将比较灵活的处理他们读到的数据,它们可能忽略多余的空白,前导零,去掉末尾的换行符或者在PID文件中添加额外的行。程序应该使用上一节介绍的比较简单的规范来创建PID文件。
当前运用系统的人的信息存储在utmp文件中,该文件也应该位于这个目录下。
系统程序维护的临时UNIX域套接字也必需位于这个目录下。
/var/spool : 应用程序后台数据
目的:
/var/spool包含等待以后处理的一类数据。在/var/spool中的数据表明是在之后的工作中会用的(由程序, 用户, 系统管理员用),这些数据在处理后会被删除。
特殊选项:
如果相应的子系统被安装,那么以下的目录或目录符号链接必需在/var/spool中。
目录 描述
lpd 打印机后台目录。(可选)
mqueue 发送邮件队列。(可选)
news 新闻后台目录。(可选)
rwho Rwhod 文件。(可选)
uucp (Unix-to-Unix Copy)UUCP的后台目录。(可选)
/var/spool/lpd : 行式打印机后台打印队列(可选)
目的:
Lpd的锁文件lpd.lock必需位于/var/spool/lpd中。通常建议为具体打印机和命名锁,将每个打印机的锁文件放在spool目录下。
特殊选项:
目录 描述
printer 一个具体打印机的后台。(可选)
/var/spool/rwho : Rwhod 文件(可选)
目的:
该目录为本地网络的其他系统保存rwhod信息。
/var/tmp : 保存系统重启时的临时文件。
目的:
/var/tmp目录为程序在系统重启之间保存需要的临时文件或目录。因此,存储在/var/tmp中的数据比/tmp中的数据被更持久的保存。
位于/var/tmp的文件和目录在系统启动的时候不能被删除。虽然保存在/var/tmp的东西以特殊的方式被删除,但建议它的删除事件的频率要少于/tmp。
/var/yp : 网络信息服务(NIS)数据库文件(可选)
目的:
网络信息服务(NIS)的可变数据,前生为SUN公司的Yellow Pages(YP),必需放在这个目录。