Linux知识点
软件常见的5种安装方式
* 1.源码安装软件:最复杂,也是最灵活的安装方式,适合定制软件,二次开发;
* 2.二进制安装:将编译好的软件包,解压、配置后直接使用;适合大型软件例如MySQL数据库、Java运行环境jdk、Tomcat;jar包与war包的部署;
* 3.rpm安装:一键安装、依赖问题;
* 4.yum安装:一键自动安装软件与依赖,但是受yum源的限制;
* 5.docker镜像:一次构建到处运行,容器化技术;
查看系统配置文件位置
#查看用户组:/etc/group
#查看账户信息文件:/etc/passwd
#查看用户账号信息加密文件/etc/shadow
#查看组信息文件/etc/group
#查看组信息加密文件/etc/gshadow
which 命令 #查找命令的绝对路径Linux 文件系统核心
核心前置认知
Linux系统中,文件名≠文件本身。文件的存储分为两个核心部分:
文件的真实数据内容:存放在block中
文件的元数据(属性信息):存放在inode中 内核通过inode号唯一识别文件,而非文件名,这是理解链接的核心前提。
block(数据块)– 存放文件真实内容
大小固定(常见 4KB),大文件会占用多个 block
只存数据,不存文件名、权限等信息
核心定义
block是Linux文件系统层面最小的数据存储单元,由磁盘的多个物理扇区(默认512字节)组成,格式化文件系统时固定大小,常见默认值4KB。
核心特性
一个block只能被一个文件占用,哪怕文件仅1字节,剩余空间也无法被其他文件复用;
大文件会占用多个block,block的位置指针存放在对应inode中;
磁盘的绝大多数空间,都会划分给block区,用于存放所有文件的真实数据。
常用查看命令
# 查看磁盘block使用情况(空间占用)
df -h
# 查看文件系统block大小
stat / | grep "IO Block"inode(索引节点)文件的“唯一身份证”
存放文件元信息:权限、属主、时间、block 位置指针
每个文件有唯一 inode 号
不存储文件名,文件名在目录里
核心定义
inode(index node,索引节点),是存储文件元数据的专用结构,每个文件/目录有且仅有一个inode,对应全局唯一的inode号。
inode存储的元数据清单
关键误区纠正:inode中绝对不存储文件名,文件名仅存放在目录文件中。
### 核心特性
内核通过inode号识别文件,文件名只是给用户使用的“别名”;
inode本身也占用磁盘空间,格式化时会划分独立的inode区,inode总量固定;
磁盘写满有两种场景:block区占满(空间不足)、inode区占满(大量小文件耗尽inode,哪怕block有剩余也无法新建文件)。
常用查看命令
# 查看文件inode号
ls -li 文件名
# 查看inode完整元数据
stat 文件名
# 查看磁盘inode使用情况
df -i补充信息
目录是什么?
目录本质也是文件,里面存的是:文件名 → inode 号 的对应关系
Linux中,目录也是一种特殊的文件。它的block中不存放用户数据,而是存放一张目录项表(dentry),表中每一条记录都是:文件名 → 对应inode号的映射关系。
系统打开文件的完整流程
用户输入文件名,系统从所在目录的dentry表中,匹配到文件名对应的inode号;
通过inode号找到inode结构体,校验访问权限;
权限校验通过,根据inode中的block指针,读取对应block中的文件数据。
. 和 .. 的核心本质
ls -a 可以看到每个目录都有 . .. # 这两个特殊目录
. :当前目录,inode = 当前目录 inode
..:上一级目录,inode = 父目录 inode
每个目录默认自带这两个硬链接
二者是系统为每个目录默认创建的硬链接,没有任何特殊之处:
. :代表当前目录,inode号与当前目录的inode号完全一致,是当前目录的一个硬链接;
.. :代表上一级父目录,inode号与父目录的inode号完全一致,是父目录的一个硬链接。
补充细节
新建空目录的默认硬链接计数为2:目录本身的名称是1个硬链接,加上目录内的.,合计2个;
目录内新建子目录,父目录的硬链接计数会+1:因为子目录内的..会指向父目录,新增一个硬链接;
这也是系统禁止普通用户给目录创建硬链接的核心原因:避免出现目录硬链接循环,破坏文件系统的树状结构。
硬链接(hard link):同一个文件的多个“入口”
1. 特点
与原文件共用同一个 inode
本质是同一个文件,只是多一个入口
删除一个,另一个依然可用
不能跨分区、不能链接目录
2. 命令
ln 原文件 硬链接名本质原理
硬链接的本质,是同一个inode号,对应多个不同的文件名(目录项)。创建硬链接,不会生成新的inode,也不会复制block中的数据,仅在目录的dentry表中,新增一条新文件名 → 原文件inode号的映射记录。
核心特性
与原文件共享同一个inode,inode号完全一致,文件之间完全平等,无“主从”之分;
删除任意一个硬链接,仅删除一条目录项映射,硬链接计数-1;只有当硬链接计数降至0时,系统才会回收inode和对应的block,文件才会被真正删除;
不支持跨分区/跨文件系统:不同分区的inode号独立,A分区的inode号在B分区无意义;
系统禁止给目录创建硬链接,避免目录循环;
几乎不占用额外磁盘空间,仅新增目录项的极小开销。
命令演示
# 语法:ln 原文件路径 硬链接文件路径 ln test.txt test_hard.link # 验证:inode号完全一致 ls -i test.txt test_hard.link # 验证:硬链接计数变为2 ls -l test.txt
典型使用场景
重要文件防误删:多路径创建硬链接,删除原文件不影响数据访问;
多路径共享大文件:无需复制数据,不占用额外磁盘空间。
软链接(symbolic link / 快捷方式)Linux的“快捷方式”
1. 特点
有独立 inode,是一个新文件
内容只存原文件路径
类似 Windows 快捷方式
原文件删除后,软链接失效(变红)
可跨分区、可链接目录
2. 命令
ln -s 原文件 软链接名本质原理
软链接是一个完全独立的普通文件,拥有自己独立的inode和block。它的block中不存放用户数据,仅存放目标文件/目录的绝对/相对路径。系统访问软链接时,会读取其存储的路径,自动跳转访问目标文件。
2. 核心特性
拥有独立的inode号,与原文件inode完全不同;
原文件删除、移动、重命名后,软链接会直接失效(断链,ls命令中标红);
支持跨分区/跨文件系统,甚至支持跨网络挂载目录创建;
支持给目录创建软链接,是日常运维中最常用的形式;
软链接自身的权限仅为标识,最终访问权限由目标文件决定。
命令演示
# 语法:ln -s 目标文件/目录路径 软链接文件路径
# 最佳实践:优先使用绝对路径创建,避免软链接移动后断链
ln -s /root/test.txt /root/test_soft.link
•
# 给目录创建软链接
ln -s /root/test_dir /root/test_dir_link
•
# 验证:inode号与原文件完全不同
ls -i test.txt test_soft.link4. 典型使用场景
软件版本管理:多版本切换时,仅修改软链接指向,无需修改业务配置;
路径简化:将深层路径的文件/目录软链接到常用目录,比如把nginx二进制文件软链接到/usr/bin,实现全局调用;
系统库文件兼容:解决Linux动态库的版本依赖问题。
硬链接 vs 软链接 核心对比表
高频实操避坑指南
软链接断链坑:优先用绝对路径创建软链接,相对路径创建的软链接,移动后大概率断链。
目录软链接删除坑:删除目录软链接时,末尾不要加/,rm -rf test_dir_link/会删除原目录的所有内容,正确写法是rm -rf test_dir_link。
inode耗尽坑:磁盘空间充足但无法新建文件,优先用df -i检查是否inode被大量小文件耗尽。
内容修改坑:修改硬链接/软链接的内容,本质都是修改原文件的block数据,所有关联文件都会同步变更。
mdadm 与 LVM 核心区别
mdadm
磁盘阵列工具,组建RAID,做磁盘冗余、读写提速、故障容错。
LVM
逻辑卷管理,灵活分区扩容缩容、合并拆分磁盘。
层级关系
硬盘 → mdadm(RAID) → LVM → 挂载使用
极简差异
mdadm:保数据安全、提速
LVM:灵活调整分区大小
用户组管理指令介绍
⚙️ 核心区别:操作视角不同
usermod -aG**(以用户为中心):usermod 是专门用来修改用户属性**的工具。当你使用它时,你的出发点是:“我要修改某个用户的配置,给他增加一个所属的组”。
gpasswd -a**(以组为中心):gpasswd 是专门用来管理用户组属性**的工具。当你使用它时,你的出发点是:“我要管理这个用户组,往里面拉进一个新成员”。
📋 优缺点与适用场景对比
表格
💡 总结与建议
在日常运维中,你可以根据具体的场景灵活选择:
推荐用 gpasswd -a 的场景:当你只需要把单个用户加入到某一个组时(比如把 tom 加到 admin 组),它的语义最清晰,而且完全不用担心手滑漏写参数导致覆盖权限,非常适合新手和常规操作。
推荐用 usermod -aG 的场景:当你需要一次性把用户加入多个组时(比如新建一个开发人员,要同时把他加到 docker, www-data, dev 等多个组),用 usermod 会极其高效,敲一条命令就能搞定。
磁盘管理
磁盘的介绍及管理
* 固态硬盘:读写速度快,理论上达到GB级传输,缺点:寿命低,贵
* 机械硬盘:受机械马达转速影响,MB级传输,缺点:速度慢,优点:容量大,价格低,适合对性能要求低,数据量大的数据存储;
* /dev目录中包含设备映射文件;
* /dev/sda /dev/sdb /dev/sdc
* 分区:为了方便数据备份、数据隔离对物理磁盘进行软件分区操作,将分区范围写入磁盘的分区表;
* 格式化:用于重新建立文件系统,拆分磁盘存储空间,存储单元;
* Inode: 元节点,存储文件的元数据(创建时间、大小、权限、inode编号,对应的block块地址;)
* block:块数据,磁盘上最小的存储单元,默认大小4k,每个文件至少占用一个block,大于4k的文件会占用多个block; 存放的是数据的“内容”;
Linux一些知识点
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法