了解Linux的文件系统

了解Linux的文件系统

对于一个深度Windows用户而言,刚刚上手Linux时还是很懵逼的,毕竟文件系统结构和Windows有着较大的差别,并且,文件夹和文件引用到处都是。不过,好在我使用了某面板,emmmm,相较于命令行,我更喜欢可视化的界面,(可能这就是大佬和小白的区别),哈哈哈。

言归正传,这篇文章主要介绍Linux的文件系统,希望能够对你有所帮助。

我的Linux

由于前段时间服务器出现了一些问题,所以我执行了重装三步走,所幸文件都有备份,影响不是很大。
我使用的Linux是CentOS8.1,本文余下内容也将以CentOS8.1作为基础展开。

结构

在Linux系统中安装tree后,使用以下命令可以展示出文件夹的结构。

tree -L 1 /

效果如图:

200531_Linux文件结构_1.png?x-oss-process=style/Compress

可以看到,我的CentOS8.1中,有21个目录,不同的目录承担了不同的功能。

目录

/bin

/bin 目录是包含一些二进制文件的目录,即可以运行的一些应用程序。

你会在这个目录中找到你安装的一些程序,以及用于新建和删除文件和目录、移动它们基本工具。还有其它一些程序,等等。

/boot

/boot 目录包含启动系统所需的文件。

这个目录非常重要,影响到Linux的正常运行,所以,一般情况下,不要操作这个目录。另一方面,也不用担心无意中破坏系统:你必须拥有超级用户权限才能执行此操作。

/dev

/dev 目录包含设备文件。

其中许多是在启动时或甚至在运行时生成的。 例如,如果你将新的网络摄像头或 USB 随身碟连接到你的机器中,则会自动弹出一个新的设备条目。

/etc

/etc 是“ 要配置的所有内容(Everything To Configure)”

它包含大部分(如果不是全部的话)的系统配置文件。
例如,包含系统名称、用户及其密码、网络上计算机名称以及硬盘上分区的安装位置和时间的文件都在这里。

/home

/home 是你可以找到用户个人目录的地方。类似于Windows的用户文件夹,不过我并没有使用。

/lib

/lib 是库文件所在的地方。

库是包含应用程序可以使用的代码文件。它们包含应用程序用于在桌面上绘制窗口、控制外围设备或将文件发送到硬盘的代码片段。

在文件系统周围散布着更多的 lib 目录,但是这个直接挂载在 / 的 /lib 目录是特殊的,除此之外,它包含了所有重要的内核模块。 内核模块是使你的显卡、声卡、WiFi、打印机等工作的驱动程序。

/media

在 /media 目录中,当你插入外部存储器试图访问它时,将自动挂载它。

/mnt

然而,/mnt 目录是一些过去的残余。这是你手动挂载存储设备或分区的地方。现在不常用了。

/opt

/opt 目录通常是你编译软件(即,你从源代码构建,并不是从你的系统的软件库中安装软件)的地方。应用程序最终会出现在 /opt/bin 目录,库会在 /opt/lib 目录中出现。

稍微的题外话:应用程序和库的另一个地方是 /usr/local,在这里安装软件时,也会有 /usr/local/bin和 /usr/local/lib 目录。开发人员如何配置文件来控制编译和安装过程,这就决定了软件安装到哪个地方。

/proc

/proc,就像 /dev 是一个虚拟目录。

它包含有关你的计算机的信息,例如关于你的 CPU 和你的 Linux 系统正在运行的内核的信息。与 /dev 一样,文件和目录是在计算机启动或运行时生成的,因为你的系统正在运行且会发生变化。

/root

/root 是系统的超级用户(也称为“管理员”)的主目录。 它与其他用户的主目录是分开的,因为你不应该动它。

/run

/run 是另一个新出现的目录。系统进程出于自己不可告人的原因使用它来存储临时数据。这是另一个不要动它的文件夹。

/sbin

/sbin 与 /bin 类似,但它包含的应用程序只有超级用户(即首字母的 s )才需要。你可以使用 sudo命令使用这些应用程序,该命令暂时允许你在许多 Linux 发行版上拥有超级用户权限。

/sbin 目录通常包含可以安装、删除和格式化各种东西的工具。你可以想象,如果你使用不当,这些指令中有一些是致命的,所以要小心处理。

/usr

/usr 目录是在 UNIX 早期用户的主目录所处的地方。然而,正如我们上面看到的,现在 /home 是用户保存他们的东西的地方。如今,/usr 包含了大量目录,而这些目录又包含了应用程序、库、文档、壁纸、图标和许多其他需要应用程序和服务共享的内容。

你还可以在 /usr 目录下找到 bin,sbin,lib 目录,它们与挂载到根目录下的那些有什么区别呢?现在的区别不是很大。在早期,/bin 目录(挂载在根目录下的)只会包含一些基本的命令,例如 ls、mv 和 rm ;这是一些在安装系统的时候就会预装的一些命令,用于维护系统的一个基本的命令。 而 /usr/bin 目录则包含了用户自己安装和用于工作的软件,例如文字处理器,浏览器和一些其他的软件。

但是许多现代的 Linux 发行版只是把所有的东西都放到 /usr/bin 中,并让 /bin 指向 /usr/bin,以防彻底删除它会破坏某些东西。因此,Debian、Ubuntu 和 Mint 仍然保持 /bin 和 /usr/bin (和 /sbin 和 /usr/sbin )分离;其他的,比如 Arch 和它衍生版,只是有一个“真实”存储二进制程序的目录,/usr/bin,其余的任何 bin 目录是指向 /usr/bin` 的“假”目录。

/srv

/srv 目录包含服务器的数据。如果你正在 Linux 机器上运行 Web 服务器,你网站的 HTML文件将放到 /srv/http(或 /srv/www)。 如果你正在运行 FTP 服务器,则你的文件将放到 /srv/ftp。

/sys

/sys 是另一个类似 /proc 和 /dev 的虚拟目录,它还包含连接到计算机的设备的信息。

/tmp

/tmp 包含临时文件,通常由正在运行的应用程序放置。文件和目录通常(并非总是)包含应用程序现在不需要但以后可能需要的数据。

你还可以使用 /tmp 来存储你自己的临时文件 —— /tmp 是少数挂载到根目录下而你可以在不成为超级用户的情况下与它进行实际交互的目录之一。

/var

/var 最初被如此命名是因为它的内容被认为是 可变的(variable),因为它经常变化。今天,它有点用词不当,因为还有许多其他目录也包含频繁更改的数据,特别是我们上面看到的虚拟目录。

不管怎样,/var 目录包含了放在 /var/log 子目录的日志文件之类。日志是记录系统中发生的事件的文件。如果内核中出现了什么问题,它将被记录到 /var/log 下的文件中;如果有人试图从外部侵入你的计算机,你的防火墙也将记录尝试。它还包含用于任务的假脱机程序。这些“任务”可以是你发送给共享打印机必须等待执行的任务,因为另一个用户正在打印一个长文档,或者是等待递交给系统上的用户的邮件。

其他

你的系统可能还有一些我们上面没有提到的目录。例如,在屏幕截图中,有一个 /snap 目录。这是因为这张截图是在 Ubuntu 系统上截取的。Ubuntu 最近将 snap 包作为一种分发软件的方式。/snap 目录包含所有文件和从 snaps 安装的软件。

总结

尽管 Linux 发行版之间存在细微差别,但它们的文件系统的布局非常相似。无论是CentOS还是Unbutun又或是debian,都会有那些常用的目录进行操作,不过,可视化的工具也不失为一个合理的选择,让我们能够像操作Windows一样操作Linux。


参考:
《Linux 文件系统详解 | Linux 中国》