Ubuntu Linux运维实战指南4_文件系统基础知识

ops/2025/2/25 23:39:38/

4  文件系统的层次结构

        文件系统是Ubuntu的核心内容之一。在Linux系统中,一切都是文件,而文件系统就是文件的组织和管理方式。可以这么说,在本书中除前3章外,其余的所有章节都会涉及文件系统。深入理解和掌握文件系统是每个Linux学习者都必须面对的问题。而掌握好文件系统,Linux系统中的许多难题都会迎刃而解。

        本章将介绍什么是文件系统、文件系统的层次结构、Linux 文件系统的组织结构、Linux中常见的文件类型以及如何管理文件权限等。

本章主要涉及的知识点有:

  • 文件系统的层次结构:主要介绍Linux的树形文件系统结构以及路径名等
  • 文件类型:主要介绍Linux系统常见的文件类型,例如普通文件、目录文件、特殊文件、链接文件以及管道文件等
  • 文件权限:主要介绍文件权限的管理,包括显示文件权限、修改文件权限、设置文件权限以及其他的文件权限管理等

4.1  文件系统的层次结构

        在Linux系统中,最小的数据存储单位为文件。“一切都是文件”是Linux和UNIX一致贯彻的原则。也就是说,在Linux中,所有的数据都是以文件的形式存在的,包括设备。为了便于访问文件,Linux按照一定的层次结构来组织文件系统。本节对Linux的文件系统的层次结构进行介绍。

4.1.1 树形层次结构

        在Windows系统中,存储空间首先分为不同的硬的,在各个硬盘上再划分分区,在每个分区上创建文件系统,在文件系统中创建不同的目录,在目录下再创建一个或者多个子目录。所以。尽管Windows 的文件组织也是树形的层次结构,但是这个树形结构的根却不是唯一的,基本上每个分区都是一个相对独立的树形结构,且树与树之间并没有什么必然的联系,如图4-1所示。

图4-1 Windows 文件系统结构

        但是在Linux系统中,所有的存储空间和设备共享一个根目录,不同的磁盘块、不同的分区再挂载上成为某个子目录的子目录,甚至设备也挂载成某个子目录下的一个文件,如图4-2所示。与Windows 相比,观念上有比较大的区别,因此,在理解和使用Linux 文件系统时一定要注意。

图4-2  Linux  文件系统层次结构

        在创建  Linux  文件系统时,至少需要有一个根文件系统,作为整个文件系统树的根节点。然层用户可以根据自己的实际情况来创建其他的文件系统,例如  home、boot、var、opt、usr、swap等子目录。  当然,这些目录不一定都是以文件系统(分区)的形式存在的,也可能仅仅是根文件系统中的一个子目录。

        Linux专门提供了一个名称为tree的命令,用来查看这种树形的层次结构,如下所示。

root@node1:~# tree /home/
/home/
└── bdqn├── 公共的├── 模板├── 视频├── 图片├── 文档├── 下载├── 音乐├── 桌面└── snap└── snapd-desktop-integration├── 178│   ├── 公共的│   ├── 模板│   ├── 视频│   ├── 图片│   ├── 文档│   ├── 下载│   ├── 音乐│   └── 桌面├── common└── current -> 17822 directories, 0 files

        在上面的命令中,参数/home表示要列出其树形结构的路径。关于这个命令的详细使用方法,将在后面的章节中介绍。

        在Linux系统中,分区和目录的关系如下:

  1. 任何一个分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。
  2. 目录是逻辑上的区分,分区是物理上的区分。
  3. 根目录是所有Linux的文件和目录所在的地方,需要挂载上一个磁盘分区。

注意:创建不同分区(文件系统)的目的是可以把不同资料分别放入不同分区中管理,降低风险。另外,大硬盘搜索范围大,效率低,创建分区(文件系统)后可以提高效率。磁盘配频只能对分区进行设定。/home/var/usr/local经常是单独分区,因为经常会操作,容易产生碎片。

4.1.2 路径名

        通过前面的介绍,可以得知在Linux文件系统中,每个子目录都是整个目录树中的一个中间节点。从根目录开始到达每个子目录都需要经过一条路线,这条路线在Linux中称为路径。因此,路径就是到达某个目录中间所有的子目录的组合。例如:

/home/bdqn

        就是一个路径,该路径从根目录开始,中间经过了home目录,然后到达bdqn子目录。

        在Linux中,路径分为绝对路径和相对路径,下面分别进行介绍。

1、绝对路径

        所谓绝对路径,是指从根目录开始算起的路径,例如/var、/usr、/bin、/var/log等。也就是说,如果看到一个以/开始的路径,那么它一定是绝对路径。通过绝对路径可以非常清楚地表达目标文件在整个目录树中的位置。

        那么用户如何判断当前所在的路径呢?Linux提供了一个名称为pwd的命令来显示用户当前所处的位置。pwd 是一个使用非常频繁的命令,其含义是打印当前工作目录,如下所示:

root@node1:/home/bdqn# pwd
/home/bdqn

2、绝对路径

        顾名思义,相对路径是相对于当前的路径而言的。也就是说,如果一个路径从当前的路径算起,则一定是相对路径。

        在Linux中,相对路径有4种表示方法,分别为.、..、~user以及~。其中,表示当前路径;表示父路径;~user表示某个用户的主目录,其中user表示用户账号;~则表示当前用户的主目录,例如,以下路径都是相对路径:

root@node1:/home/bdqn# cd .
root@node1:/home/bdqn# cd ..
root@node1:/home# cd

        其中,/doc表示当前路径下的doc目录,../log表示父路径中的log目录,cd表示账号为root的用户的主目录。

        使用相对路径的好处是可以不受绝对路径的限制。这在创建配置文件的时候非常有用。因为应用程序可能会根据实际需要迁移到不同的位置,如果用户使用相对路径来表示配置文件,则通常不需要修改配置;如果采用绝对路径表示,则必须根据新的路径进行修改。

        另外,使用相对路径可以简化路径的输入。如果用户的当前位置的绝对路径比较长,在进行目录切换时,如果使用绝对路径,则必须每次都把从根目录开始算起的完整路径输入进去;如果使用相对路径,则会极大地简化路径。例如,如果想要切换到当前目录中的某个子目录,则只需要执行以下命令即可:

root@node1:/var/log# 

        或者

root@node1:/var# cd log/

        如果使用绝对路径,则需要执行以下命令:

root@node1:~# cd /var/log/

4.1.3 Linux 目录结构

        由于历史的原因,Linux的目录组织参考了UNIX的做法,而UNIX对于系统目录的组织和全名是有一定的规律可循的。下面通过tree命令列出当前系统中根目录下的所有目录:

root@node1:/var/log# tree / -L 1
/
├── bin -> usr/bin
├── boot
├── cdrom
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib32 -> usr/lib32
├── lib64 -> usr/lib64
├── libx32 -> usr/libx32
├── lost+found
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── snap
├── srv
├── swapfile
├── sys
├── tmp
├── usr
└── var24 directories, 1 file

表4-1 列出了部分常见的系统目录及其功能。

表4-1 常见的系统目录及其功能

目 录

说 明

/bin

包含系统管理员、系统以及普通用户可以使用的各种可执行命令,例如cp、cat、ed以及tar等

/boot

该目录与系统引导有关,包括系统引导程序、Linux内核文件vmlinuz、磁盘内存映像文件initrd。img

以及

GRUB

引导程序和配置文件等

/cdrom

光盘挂载点,用户可以通过该挂载点访间光盘上的文件

/dev

该目录包含当前系统支持的所有的设备文件。例Console表示控制台,mem表示系统的 物理内存,sda表示连接到主控制器的第一个磁盘

/etc

该目录可以说是Linux的控制中心,包含与系统和应用程序有关的各种配置文件,例如passwd、rc、host。conf以及init等

/home

用户主目录的根目录。每创建一个新的用户,就会在该目录下创建一个新的子目录,子目录以用户账号命名

/lib

lib64

该目录包含所有与系统和应用程序有关的可以共享的库文件。前者为32位,后者为64位

/lost+found

每个文件系统都会包含一个该目录,用来存放tsck命令在检测和修复文件系统时删除的目录或者文件

/media

该目录为移动介质的挂载点。例如,当用户插入U盘或者移动硬盘时,Linux系统会自动格该设备挂载到该目录下的一个子目录中

/mnt

文件系统的临时挂载点。用户可以临时将其他的文件系统挂载到该目录下使用

/opt

各可选应用程序的安装位置

/proc

各进程文件的存放位置。该目录比较特殊,是一个虚拟的文件系统,其中不包括任何物理文件,而是可以访问的当前系统的各种信息,例如CPU、内存、各进程对应的文件以及系统运行时间等。例如,通过/proc/cpuinfo

文件可以了解到当前系统的CPU信息,通过/proc/meminfo

可以了解到当前系统的内存信息等

/root

root用户的主目录

/sbin

该目录包含与系统管理有关的可执行文件,普通用户不可以使用

/sys

该目录包含各种系统设备的配置信息,例如/sys/bus目录包含与系统总线有关的配置信息

/tmp

系统临时目录

/usr

该目录比较特殊,可以作为根目录下的一个子目录,也可以作为一个单独的文件系统。其中包含多种共享数据文件,例如命令、库函数、头文件以及各种应用程序的文档等

/var

该目录同样可以作为根目录的子目录,也可以单独作为一个文律系统,包含各种可变的数据文件,例如日志文件


http://www.ppmy.cn/ops/161312.html

相关文章

精选案例展 | 智己汽车—全栈可观测驱动智能化运营与成本优化

本案例为“观测先锋 2024 可观测平台创新应用案例大赛”精选案例,同时荣获IT168“2024技术卓越奖评选-年度创新解决方案”奖。 项目背景 近年来,中国汽车行业进入转型升级阶段,智能网联技术成为行业发展的核心。车联网、自动驾驶等技术的加…

嵌入式面试题 CC++常见面试题整理_7

一.什么函数不能声明为虚函数 常见的不能声明为虚函数的有:普通函数(非成员函数):静态成员函数;内联成员函数;构造函数;友元函数。 1.为什么C不支持普通函数为虚函数普通函数(非成员函数)只能被overload,不能被override,声明为虚函数也没有什么意思&am…

华为云deepseek大模型平台:deepseek满血版

华为云硅基流动使用Chatbox接入DeepSeek-R1满血版671B 1、注册: 华为云deepseek大模型平台注册:https://cloud.siliconflow.cn/i/aDmz6aVN 说明:填写邀请码的话邀请和被邀请的账号都会获得2000 万 Tokens;2个帐号间不会有其他关联…

Ubuntu20.04在线安装QT纪实

1、打开控制台窗口 CtrlAltT,打开控制台,如下图: 2、输入更新命令 输入命令,sudo apt-get update 如下图: 3、安装qt和qtcreate 输入如下的命令,sudo apt-get install qt5-default qtcreator 如下图&…

一.Vue中的条件渲染

1.在<head>中引用 <script src"https://unpkg.com/vue3/dist/vue.global.js"></script> 2.在<body>中写入 <div id"app"><p><a v-if "user.usernameadmin"href"#">编辑</a><a …

数据同步的中间件

以下是10个支持MySQL、HBase、ClickHouse、HDFS等不同数据库之间数据同步的GitHub项目推荐&#xff1a; 项目名称语言主要特点支持的数据库GitHub链接DataXPython阿里巴巴开源的数据同步工具&#xff0c;支持多种数据库和文件系统。MySQL、ClickHouse、HDFS等GitHub链接Apache…

基于Spring Boot的农产品智慧物流系统设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…

【高并发】高并发架构设计

一、问题拆解方法论 明确场景边界 流量规模(QPS/TPS/数据量)业务特征(读多写少/写密集型/实时性要求)容忍度(延迟要求/数据一致性级别) 示例: “在电商秒杀场景中,我们面对的是瞬时10万QPS的读请求洪峰,要求99.9%请求在200ms内响应,且要保证库存准确性”分层优化策略…