Linux目录配置的依据——FHS
FHS——Filesystem Hierarchy Standard,主要目的是让用户了解到已安装软件通常放置于哪个目录下,也就是说,FHS的重点在于规范每个特定的目录下应该要放置哪种数据。
. | 可分享(shareable) | 不可分享(unshareable) |
---|---|---|
不变(static) | /usr(软件存放处) | /etc(配置文件) |
. | /opt(第三方辅助软件) | /boot(启动与内核文件) |
可变动(variable) | /var/mail(用户邮箱) | /var/run(程序相关) |
. | /var/spool/news(新闻组) | /var/lock(程序相关) |
- 可分享:可以分享给其它系统挂载使用的目录,所以包括执行文件与用户的邮件等数据,是能够分享给网络上其他主机挂载的目录。
- 不可分享:自己机器上面运行的设备文件或是与程序有关的socket文件等,由于仅与自身机器有关,所以当然就不适合分享给其他主机;
- 不变:有些数据是不会经常变动的,跟随着发行版本而不变动。例如函数库、文件说明、系统管理员所管理的主机服务配置文件等;
- 可变动:经常修改的数据,例如日志文件、一般用户可自行接收的新闻组等。
事实上,FHS针对目录树架构仅定义出三层目录下面应该放置什么数据而已,分别是下面这三个目录的定义:
- /(root,根目录):启动系统有关
- /use(unix software resource):与软件安装/执行有关;
- /var (variable):与系统运行过程有关;
根目录的意义与内容
FHS标准建议:
根目录所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在一个分区内,保持根目录越小越好。如此不仅性能较佳,根目录所在的文件系统也较不容易发生问题。
- FHS要求根目录中必须存在的目录
- /bin
放置的是单人维护模式下还能被使用的命令。如:cat、chmod、chown、date等常用命令。 - /boot
放置启动会使用到的文件。包括Linux内核文件以及启动选项与启动所需配置文件。 - /dev
存储设备与接口文件。 - /etc
系统的配置文件几乎都放置在这个目录内。建议不要放置可执行文件在这个目录中。 - /lib
放置启动时会用到的库函数,以及在/bin或/sbin下面的命令会调用的函数库。 - /media
放置可删除的设备,包括软盘、光盘、DVD等都暂时挂载于此。 - /mnt
暂时挂载某些额外的设备。 - /opt
给第三方辅助软件放置的目录。 - /run
放置系统启动后所产生的各项信息。 - sbin
(system binary)系统执行文件,启动过程中所需要的,包括了启动、修复、还原系统所需要的命令。常见的命令包括:fdisk、fsck、ifconfig、mkfs等。 - /srv
service的缩写,一些网络服务启动之后,这些服务所需要使用的数据目录,常见的服务例如WWW、FTP等。 - /tmp
一般用户或是正在执行的程序暂时放置文件的地方。 - /usr
- /var
主要放置变动性的数据。
- /bin
- FHS建议可以存在的目录
- /home
系统默认的用户家目录(home directory)。- ~:代表当前用户的家目录
- ~tysong:代表tysong的家目录
- /lib< qual>
用来存放与/lib不同格式的二进制函数库,例如支持64位的/lib64函数库等。 - root
系统管理员(root)的家目录。之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能拥有root的家目录。
- /home
- Linux中非常重要的目录
- /lost+found
这个目录时使用标准的ext2、ext3、ext4文件系统格式才会产生的一个目录,目的在于当文件系统发生错误时,将一些遗失的片段放置到这个目录下,不过如果使用的是xfs文件系统的话,就不会存在这个目录。 - /proc
这个目录本身是一个虚拟文件系统(virtual filesystem),它放置的数据都是在内存之中,例如系统内核,进程信息(process)、外接设备的状态及网络状态等。 - /sys
这个目录跟proc类似
- /lost+found
/usr的意义和内容
usr不是user的缩写,而是UNIX Software Resource的缩写,也就是UNIX操作系统软件资源所放置的目录,而不是用户数据。
-
FHS要求 /usr 中必须存在的目录
- /usr/bin/
所有一般用户能够使用的命令都放在这里。/usr/bin是一摸一样的,此目录下不应该有子目录。 - /usr/lib/
基本上与/lib的功能相同,所以/lib就是链接到这里的。 - /usr/local/
系统管理员在本机安装自己下载的软件(非发行版默认提供者),建议安装到此目录,这样会比较便于管理。 - /usr/sbin/
基本上与/sbin的功能相同,所以/sbin就是链接到这里的。 - /usr/share/
主要放置只读的数据文件,当然也包括共享文件,在这个目录下仿制的数据几乎是部分硬件架构均可读取的数据,因为几乎都是文本文件。在此目录下常见的还有这些子目录:- /usr/share/man/
在线帮助文件 - /usr/share/doc/
软件的说明文档 - /usr/share/zoneinfo/
与时区有关的时区文件
- /usr/share/man/
- /usr/bin/
-
FHS建议 /usr 中可以存在的目录
- /usr/game/
与游戏比较相关的数据放置处 - /usr/include/
C/C++等程序文件的头文件(header)与包含文件(include)放置处 - /usr/libexec/
某些不被一般用户常用的执行文件或脚本等。 - /usr/lib< qual>/
与lib< qual>功能相同,lib< qual>就是链接到这里的。 - /usr/src/
一般源代码建议放置到这里,src有source的意思。
- /usr/game/
/var的意义和内容
/var主要针对经常性变动的文件,包括缓存(cache)、日志文件(log file)以及某些软件运行所产生的文件,包括程序文件(lock file、run file),或例如MySQL数据库的文件等。
- FHS要求/ var 目录中必须存在的目录
- /var/cache/
应用程序本身运行过程中会产生的一些缓存 - /var/lib/
程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。 - /var/lock/
某些设备或是文件资源一次只能被一个应用程序使用,如果同时有两个程序使用该设备时,就可能产生一些错误的状况,因此就得要将该设备上锁(lock),以确保该设备只会给单一软件所使用。
-/var/log/
很重要。这是日志文件放置的目录,里面比较重要的文件有/var/log/messages、/var/log/wtmp(记录登录信息等)
-/var/mail/
放置个人电子邮箱的目录,不过这个目录也被放置到/var/spool/mail/目录中,通常这两个目录是互为链接文件。 - /var/run/
与/run相同。这个目录链接到/run目录 - /var/spool/
放置一些队列数据,所谓的队列就是排队等待其他程序使用的数据,这些数据被使用后通常都会被删除。
- /var/cache/
目录树(directory)
目录树的主要特性:
- 目录树的起始点位根目录(/,root);
- 每一个目录不止能使用本地分区的文件系统,也可以使用网络上的文件系统。举例来说,可以用Network File System(NFS)服务器挂载某特定目录等;
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的。
绝对路径与相对路径
- 绝对路径:由根目录(/)开始写起的文件名或目录名称,例如/home/tysong/.bashrc;
- 相对路径:相对于当前路径的文件名写法,例如./home/tysong或…/…/home/tysong/等,反正开头不是/就属于相对路径的写法。
特殊的目录:
- .:代表当前的目录,也可以用./来表示;
- …:代表上一层目录,也可以用…/来表示/
转载:https://blog.csdn.net/qq_20517403/article/details/101298417
查看评论