1.Linux文件配置标准:FHS
FHS:即Filesystem Hierarchy Stabdard,文件配置标准。其主要目的是希望用户可以了解已安装软件通常放置在哪个目录下。
FHS根据文件系统使用的频繁与否与是否允许用户随意改动,而将目录定义成为四种交互的形态,如下表:
- 可分享的:可分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能分享给网络上其他主机挂载用的目录。
- 不可分享的:自己机器上运行的设备文件或者与程序有关的socket文件等。
- 不变的:比如函数库、文件说明文件、系统管理员所管理的主机服务配置文件等。
- 可变动的:经常改变数据,例如登录文件、新闻组等。
事实上,FHS针对目录架构,定义出三层目录下面应该放什么数据而已,分别是下面三个目录定义:
- / (root,根目录):与开机系统有关;
- /usr(UNIX software resource):与软件安装执行有关;
- /var (variable):与系统运作过程有关。
根目录的意义与内容
根目录是整个系统最重要的一个目录,所有目录都是由根目录衍生出来,同时根目录也与开机、还原、系统修复等操作有关。
FHS标准建议:根目录(/)所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区内,保持根目录越小越好。如此不但性能较好,根目录所在的文件系统也较不容易发生问题。
如下表表示根目录以及子目录内容:
- 除了这些目录内容之外,另外需要注意的是,因为根目录与开机有关,开机过程仅有根目录会被挂载,其他分区则是在开机完成后才会持续进行挂载行为。因此根目录下与开机过程有关的目录就不能够放到不同的分区去。
- /etc:配置文件
- /bin:重要执行文件
- /dev:所需要的设备文件
- /lib:执行文件所需要的函数库与内核所需要的模块
- /sbin:重要的系统执行文件
/usr的意义和内容
usr是UNIX software Resource的缩写,也就是“UNIX 操作系统软件资源”所放置的目录,而不是用户数据。FHS建议所有软件开发者应将他们的数据合理地分别放置到这个目录下的子目录,而不要自行新建该软件自己独立的目录。
因为所有系统默认的软件(distribution发布者提供的软件)都会放置在/usr下面,因此这个目录有点类似windows系统的“C:Windows\”和“C:Progrom files”这两个目录的综合体。系统安装完毕后这个目录会占用最多的硬盘容量。
/var的意义和内容
/var在系统运行后才会逐渐占用硬盘容量。var目录主要针对常态性变动的文件,包括缓存(caches)、登录文件(logfile)以及某些软件运行所产生的文件,包括程序文件(lock file,run file)或者MySQL数据库的文件等。
2.目录树(directory tree)
在Linux下面,所有的文件与目录都是由根目录开始的。那是所有目录与文件的源头。然后再一个个分支下来,有点像树枝状。因此我们也称这种目录配置方式为“目录树(directorytree)”。它主要特性如下:
- 目录树起始点为根目录(/,root)
- 每一个目录不只能使用本地端的文件系统,也可以使用网络上的文件系统。比如利用Network File System(NFS)服务器挂载某特定目录等。
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
3.绝对路径和相对路径
- 绝对路径:由根目录(/)开始写起的文件名或者目录名称,例如/home/dmtsai/.bashrc
- 相对路径:相对于目前路径的写法。例如./home/dmtsai或者../../home/dmtsai/等
两个特殊的目录:
- . :代表当前目录,也可以用./表示。
- .. :上一层目录,也可以用../表示。