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

. : 代表当前目录,也可以用 ./ 来表示

.. :代表上一级目录,也可以用 ../ 来表示

如有错误,还请斧正!

posted @ 2020-12-23 14:11  予之路  阅读(189)  评论(0编辑  收藏  举报