Linux (RHEL8) 目录结构
Linux配置目录的依据——FHS
利用Linux来开发产品或发行版的社区、公司太多了,如果每个人都用自己的想法来配置文件放置位置,那么结果可想而知,所以,Filesystem Hierarchy Standard (FHS)出炉了!
FHS依据文件系统使用的频繁与否与 是否允许使用者随意更动, 而将目录定义成为四种交互作用的形态。
-
可分享的:
可以分享给其他系统挂载使用的目录,所以包括执行文件与用户的邮件等数据, 是能够分享给网络上其他主机挂载用的目录;
-
不可分享的:
自己机器上面运作的装置文件或者是与程序有关的socket文件等, 由于仅与自身机器有关,所以当然就不适合分享给其他主机了。
-
不变的:
有些数据是不会经常变动的,跟随着distribution而不变动。 例如函式库、文件说明文件、系统管理员所管理的主机服务配置文件等等;
-
可变动的:
经常改变的数据,例如登录文件、一般用户可自行收受的新闻组等。
下面是一些代表性的目录:
可分享(shareable) | 不可分享(unshareable) | |
---|---|---|
不变(static) | /usr (软件存放处) | /etc (配置文件) |
/opt (第三方辅助软件) | /boot (启动与内核文件) | |
可变(variable) | /var/mail (用户邮箱) | /var/run (程序相关) |
/var/spool/news (新闻组) | /var/lock (程序相关) |
事实上,FHS针对目录树架构仅定义出三层目录底下应该放置什么数据而已,分别是底下这三个目录的定义:
- / (root, 根目录):与开机系统有关;
- /usr (unix software resource):与软件安装/执行有关;
- /var (variable):与系统运作过程有关。
根目录(/):
根目录是整个系统最重要的一个目录,因为不但所有的目录都是由根目录衍生出来的,同时根目录也与开机/还原/系统修复等动作有关。若系统出现问题,根目录必须要包含能够修复文件系统的程序才行。因此,FHS标准建议:根目录(/)所在分区应该越小越好,且应用程序所安装的软件最好不要与根目录放在同一分区,保持根目录越小越好,如此,不但性能较佳,根目录所在文件系统也不易发生问题。
/urs:
依据FHS的基本定义,/usr里面放置的资料属于可分享的与不可变动的( shareable, static),如果你知道如何通过网络进行分区的挂载,那么/usr确实可以分享给区域网路内的其他主机来使用!
usr是Unix Software Resource的缩写。 FHS建议所有软件开发者,应该将他们的资料合理的分别放置到这个目录下的次目录,而不要自行建立该软体自己独立的目录。
因为是所有系统预装的软件(发行版发布者提供的软体)都会放置到/usr底下,因此这个目录有 点类似Windows系统的 [C:\Windows\ + C:\Program files]这两个目录的综合体,系统刚安装完毕时,这个目录会占用最多的硬盘空间。
/var :
如果/usr是安装时会占用较大硬盘容量目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。因为/var目录主要针对常态性变动文件,包括缓存(cache)、登录文件(logfile)以及某些软件运行所产生的文件,包括程序文件(lock file,run file),或者例如Mysql数据库的文件等。
更多参考:FHS
目录树
在linux下,所有的文件与目录都是从根目录(/)下开始的。那是所有目录与文件的源头,然后一个一个分支下来,有点像树枝状,因此,我们称这种目录配置方式为,目录树(directory tree),它主要的特性有:
- 目录树的起始点为根目录(/)
- 每一个目录不只能使用本地分区的文件系统,也可以使用网络上的文件系统。举例说明,可以利用Network File System(NFS)服务器挂载某特定目录等;
- 每一个文件在此目录树中的文件名(包含完整路径)都是独一无二的
在RHEL8使用 ls -l / 命令来查询
[root@localhost ~]# ls -l /
total 28
lrwxrwxrwx. 1 root root 7 Aug 12 2018 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Dec 16 23:33 boot
drwxr-xr-x. 20 root root 3300 Dec 23 10:53 dev
drwxr-xr-x. 135 root root 8192 Dec 23 10:53 etc
drwxr-xr-x. 3 root root 18 Dec 16 23:28 home
lrwxrwxrwx. 1 root root 7 Aug 12 2018 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 Aug 12 2018 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 Aug 12 2018 media
drwxr-xr-x. 3 root root 18 Dec 16 23:22 mnt
drwxr-xr-x. 2 root root 6 Aug 12 2018 opt
dr-xr-xr-x. 325 root root 0 Dec 23 10:52 proc
dr-xr-x---. 16 root root 4096 Dec 23 10:54 root
drwxr-xr-x. 40 root root 1200 Dec 23 10:54 run
lrwxrwxrwx. 1 root root 8 Aug 12 2018 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 Aug 12 2018 srv
dr-xr-xr-x. 13 root root 0 Dec 23 10:52 sys
drwxrwxrwt. 24 root root 4096 Dec 23 11:58 tmp
drwxr-xr-x. 12 root root 144 Dec 16 23:19 usr
drwxr-xr-x. 21 root root 4096 Dec 16 23:32 var
目录相关介绍如下:
/bin
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。面向所有用户,例如:cat、ls、cp等/boot
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。/dev
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。/etc
etc 是 Etcetera(附加物) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。/home
普通用户的主目录/lib
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。/media
挂载点目录,移动设备(在windows中,插入一张光盘,系统会自动读取光盘,用户可以直接执行,但在linux中,插入光盘后需要在挂载点挂载这个设备之后才可以使用这个设备。)/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。/opt
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。/proc
伪文件系统,内核映射文件/root
超级权限者的用户主目录。/run
某些程序或者是服务启动后,会将他们的PID放置在这个目录下/sbin
可执行文件,管理命令;其中用到的库文件可能在/lib,配置文件可能在/etc/srv
srv可以视为service的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。 常见的服务例如WWW, FTP等等。 举例来说,WWW伺服器需要的网页资料就可以放置在/srv/www/里面。呵呵,看来平时我们编写的代码应该放到这里了。/sys
这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录与核心相关的资讯。 包括目前已载入的核心模组与核心侦测到的硬体装置资讯等等。 这个目录同样不占硬盘容量。/tmp
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。/usr
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。/var
某些大文件的溢出区,比方说各种服务的日志文件
绝对路径与相对路径
绝对路径:由根目录(/)开始书写的文件名或目录名称。
相对路劲:相对于当前路径的文件名写法。
├── root
│ └── Desktop
│ └── dir
│ └── dir2
假设我此刻在Desktop位置,我想找到dir2文件夹,该如何做呢?
绝对路径: cd /root/Desktop/dir/dir2
相对路径:cd ./dir/dir2
.
: 代表当前目录,也可以用 ./
来表示
..
:代表上一级目录,也可以用 ../
来表示
如有错误,还请斧正!