当前位置: 首页 > 科技观察

一篇文章厘清Linux操作系统的目录结构

时间:2023-03-11 23:31:35 科技观察

经常在Windows环境下工作的同学,第一次使用Linux操作系统可能会感到手足无措。Linux操作系统理念是一切皆文件。所以当我们登录Linux操作系统时,我们看到的是各种各样的目录和文件。尤其是进入非桌面版的时候,看到的都是命令行提示符。图1Linux交互界面这给大家造成了很大的学习障碍。事实上,如果你登陆桌面版(比如Ubuntu),你会发现它其实和Windows非常相似。学习门槛也低很多。图2图形界面目录??结构桌面版只封装了底层。从本质上讲,Linux操作系统中的一切都是文件。不仅存储数据的磁盘是文件,其他设备也是文件。操作系统内部的信息也是以文件的形式呈现的,比如CPU信息、内存信息、进程信息等等。因此,如果想学习Linux操作系统,对整个文件系统有更深入的了解是非常有必要的。其实有专门的文档介绍Linux的目录结构。该文档称为文件系统层次结构标准(简称FHS)。但是这篇文档很长,Linux的目录结构中有些目录没有在这篇文档中,所以本文简单介绍一下Linux的核心目录。/–根目录首先介绍下Linux下的根目录。Linux的目录结构就像一棵倒置的树。最底层是树干,然后是树枝,逐层细分。根目录是Linux的最底层目录,就像大树的树干。一切都在根目录下,用路径符号/表示。如果非要找个类比的话,可以把根目录理解为Windows下的C:\目录。但严格来说,Linux下的“/”是所有内容(包括文件目录、设备和文件等)的根目录,而Windows下的C:\则不是,因为如果有多个磁盘或多个分区,那么可能会有在Windows下为D:\或E:\。我们可以通过执行命令cd/将当前工作路径切换到根目录。并使用命令tree-L1显示根目录的所有子目录。具体如图3所示。本例中只显示一级子目录。当然二级子目录也可以通过-L2来显示,但是结果可能会占满整个屏幕。图3根目录示例/bin–用户基本二进制文件目录/bin目录是根目录的一级子目录。该目录包含最基本的用户二进制文件,即应用程序。该目录与Windows下的Programs目录非常相似。并不是所有的应用程序都存放在这个目录下,一些不是特别基础的程序也会存放在/usr/bin目录下。比如Chrome浏览器等,或者用户自己安装的一些程序,通常都在/usr/bin下。系统应用程序通常在该目录下,如ls、mkdir、cp等。如果您使用的是桌面版操作系统,则可以通过GUI查看该目录下的内容。下图是一个具体的例子。图4二进制目录/boot–静态引导文件/boot目录下包含的文件是用于启动操作系统的文件。例如GRUB引导装载程序文件和操作系统内核。但是bootloader的配置文件并不在这里,而是在/etc目录下。/cdrom-CD-ROM挂载点目录/cdrom不是FHS标准的一部分,但我们可以在大多数发行版中看到它。该目录是光盘的临时安装点。/dev–Linux下的设备文件,设备也是文件,比如磁盘、U盘或者CD。包括无线网卡、摄像头和串口等都是一个文件。通常这些文件都在/dev目录下,可以切换到该目录下查看具体内容。图5设备目录图为/dev目录的部分截图。这个目录下最常见的文件可能是/dev/sda,代表一个SCSI磁盘。除了和物理设备打交道外,这个目录下还有很多伪设备。比如/dev/random代表一个产生随机数的设备,/dev/loop0是一个将本地文件映射到磁盘的虚拟设备。这些伪设备有时非常有用,我们经常使用这些设备进行一些测试。图6GUI目录/etc–配置文件操作系统和应用程序的配置文件通常存放在一个目录下,即/etc。许多配置文件作为文本文件存储在这里。我们可以通过文本编辑器修改配置项。比如网络的IP地址,Nginx的配置,系统日志的配置等等,都可以在这里找到。/home–主目录此目录称为主目录。在Linux操作系统下,每个用户通常都有自己的目录,在/home下。例如本例中有一个名为zhangsn的用户,其主目录在/home下,如图7所示。用户的主目录包含此数据文件和与用户相关的配置文件。通常一个用户只能修改其目录下的文件,只有授权后才能访问其他文件。图7zhangsn的主目录/lib——基本共享库/lib目录存放/bin和/sbin中的二进制文件(应用程序)所需的库文件。/usr/bin下应用所依赖的库一般都在/usr/lib目录下。/lost+found-可恢复文件每个文件系统都有一个lost+found目录。如果文件系统崩溃,系统将在下次启动时执行数据检查。检查过程中,如果发现有数据冲突的文件,则将其放入该目录。这样,您可以尝试手动恢复文件。/media–可移动媒体包含/media下的子目录,这些子目录是某些可移动设备的安装点。当一些可插拔设备插入计算机时,会自动创建一个子目录并挂载到该目录下。/mnt——临时挂载点目录这个目录通常是空的。主要用来临时挂载一些外部文件系统。比如有多个数据盘,格式化后的盘会挂载到该目录下。mnt字符是mount的缩写,意思是挂载。/opt–由可选包(OptionalPackages)安装的非常规软件通常安装在这个目录下。/proc–Kernel&ProcessFiles该目录也是一个虚拟目录,即不是存放文件数据的目录。该目录下存放的文件通常用于获取操作系统内核的内部信息或进程的内部信息。图8proc目录例如每个进程在该目录下都有一个子目录,字母名称就是进程ID。通过cat命令读取目录下的文件,可以得到进程的详细信息。比如我们进入目录/proc/258,这是进程号为258的进程的信息,通过ls命令可以看到如下内容。图8进程详细信息/root–root主目录/root目录是root用户的主目录。root用户的home目录不在/home下,而是在root目录下。这是需要注意的事情。/run–应用程序状态文件该目录是一个比较新的目录,用于应用程序存放经常变化的文件,例如文件锁、进程ID或套接字等。/sbin–系统管理二进制文件该目录类似于/bin目录,用于存放二进制文件。与/bin目录不同的是,该目录存放的是系统管理用的二进制文件,如磁盘格式化(mkfs)、磁盘分区(fdisk)、网络配置(ifconfig)等命令。图9系统命令/selinux-SELinux虚拟文件系统如果你的Linux发行版使用SELinux作为安全管理,那么这个目录包含了SELinux使用的相关文件。/srv-服务数据此目录存储特定服务提供的数据。通常这个目录是空的。该目录中的数据通常是对外提供的,如网站上存储的用户信息等。这里需要注意/var和/tmp的区别。前者是提供给外部用户使用的,而两者是应用程序自己使用的,重启后/tmp中的数据会丢失。/tmp–临时文件应用程序生成的临时数据通常存储在此目录中。该目录的一个特点是系统重启后目录中的数据会被清除。/usr–UserBinaries&Read-OnlyData不同于系统使用的应用程序和文件。用户使用的应用程序文件存放在/usr目录下。比如/bin下存放的是系统二进制文件,/usr/bin下是用户使用的二进制文件。系统库文件存放在/lib下,应用程序使用的库文件存放在/usr/lib下。/var–可变数据文件/var目录是与/usr目录相对应的可写目录。/usr目录中的内容是只读的,而/var是可写的。正常操作期间的日志文件和一些写入通常转到/var目录。例如,日志文件通常存储在/var/log中。好了,Linux目录的介绍到此结束。相信通过这次的介绍,大家会对Linux的目录和文件有更深入、更细致的了解。这些目录也可以在以后的工作中更加合理的使用。