Skip to content

Linux文件系统

一条死谏

  • 在Linux里面,一切皆是文件

目录结构

图片丢失了
目录结构详解

根目录(/)是所有目录的起点,以下是核心目录的功能说明,需牢记各目录的用途:

目录路径核心功能关键说明
/根目录所有目录和文件的顶层,唯一的根节点
/bin基础命令二进制文件存放系统启动和日常操作必需的命令(如ls、cd、cp),所有用户可执行
/sbin系统管理命令二进制文件存放需root权限执行的系统管理命令(如mount、reboot、ifconfig)
/etc系统配置文件目录存放所有系统级配置文件(如passwd、fstab、nginx.conf)
/home普通用户主目录每个普通用户对应一个子目录(如/home/user1),存储用户个人数据和配置
/rootroot用户主目录超级管理员的专属目录,无需放在/home下
/var可变数据目录存放经常变化的数据(如日志、邮件、缓存、数据库文件),核心子目录:/var/log(日志)、/var/www(网页文件)
/tmp临时文件目录所有用户可读写,系统重启后数据会清空,适合存放临时文件
/usr用户程序和资源目录类似Windows的Program Files,核心子目录:/usr/bin(用户命令)、/usr/lib(库文件)、/usr/share(共享资源,如文档、图标)
/dev设备文件目录所有硬件设备以文件形式存在(如/dev/sda1(第一块硬盘第一个分区)、/dev/tty1(第一个虚拟终端)、/dev/null(黑洞设备))
/mnt临时挂载目录默认用于临时挂载外部设备(如U盘、移动硬盘),可手动创建子目录挂载
/boot系统启动目录存放系统启动必需的文件(如内核镜像vmlinuz、启动引导程序grub),需独立分区以保证启动安全

文件类型

提示

  • 我们常用ls -l来查看文件类型,第一个字符表示文件类型
  • ll等同于ls -l,一般系统会默认设置有别名 什么是别名?→
图片丢失了
文件类型与权限

文件权限

权限字符串格式(共10位):类型位 + 所有者权限(3位) + 所属组权限(3位) + 其他用户权限(3位)

示例:-rwxr-xr-- 解析:

  • 第1位(-):文件类型(普通文件)

  • 第2-4位(rwx):所有者权限(读、写、执行)

  • 第5-7位(r-x):所属组权限(读、执行,无写权限)

  • 第8-10位(r--):其他用户权限(仅读权限)

权限字符含义:

  • r(读权限,4):可查看文件内容或列出目录内容(ls)

  • w(写权限,2):可修改文件内容或创建/删除目录内的文件(需配合x权限)

  • x(执行权限,1):可执行文件(如脚本、程序)或进入目录(cd)

  • -(无权限,0):无对应权限

权限数值计算:每位权限由r、w、x的数值相加得到,如rwx=4+2+1=7,r-x=4+0+1=5,r--=4+0+0=4,因此上述示例的权限数值为754。

  • 特殊权限
    • s(SUID和SGID):主要是用于在执行文件时,无论当前执行者是谁,获得的是文件拥有者或组的权限
    • t(粘着位):主要针对目录,添加后该目录下,文件只有拥有者或root才能删除或重命名,也就是说对于删除操作,别人删除不了自己的文件

文件类型

  • -:普通文件(文本文件、二进制文件、脚本文件等),如.txt、.sh、可执行程序

  • d:目录文件(用于存放其他文件和目录),如/home、/etc

  • l:软链接文件(符号链接),文件名为浅蓝色,ls -l会显示“箭头”指向目标文件

  • b:块设备文件(按块读取数据的设备),如硬盘、U盘(/dev/sda)

  • c:字符设备文件(按字符读取数据的设备),如键盘、鼠标、终端(/dev/tty)

  • p:管道文件(用于进程间通信,临时存在)

  • s:套接字文件(用于网络通信或本地进程间通信,如/var/run/mysql.sock)

常用操作

目录篇

命令语法功能描述常用选项/场景示例
pwd打印当前工作目录(绝对路径)忘记当前在哪个目录下直接执行 pwd,输出如 /home/user1
cd 目录路径切换工作目录,类似Windows的双击文件夹操作cd ~(切换到当前用户主目录)cd ..(切换到父目录)- cd -(切换到上一次工作目录)cd /etc(切换到/etc目录)cd ~(切换到用户主目录)
ls [选项] 目录/文件列出目录内容或文件信息-l(长格式显示,含权限、所有者、大小等)-a(显示所有文件,包括隐藏文件(以.开头))-h(如KB、MB单位显示)-t(按修改时间排序,最新在前)ls -lha home(显示/home目录下所有文件,长格式+可读大小)
mkdir [选项] 目录名创建目录-p(递归创建多级目录,如mkdir -p /a/b/c,无需手动创建/a和/a/b)mkdir -p /tmp/test/dir(递归创建/tmp/test/dir目录)
什么是别名?
  • 别名(Alias)可以理解为快捷方式,通常是命令+参数组合成短命令
  • 在终端中输入alias可以查看当前系统定义的别名
  • 例如,alias ll='ls -l'意思就是llls -l的别名,以后输入ll就相当于输入ls -l

文件篇

命令说明示例
touch 文件名创建空文件touch test.txt
cp [选项] 源文件/目录 目标路径复制文件或目录。常用选项:-r(递归复制目录)、-p(保留权限/时间戳)、-v(显示过程)cp -rp /etc/profile /home/user1/
mv [选项] 源文件/目录 目标路径移动文件/目录,或重命名(同一目录下为重命名)重命名:mv test.txt new_test.txt;移动:mv new_test.txt /home/user1/
cat 文件名从开头查看文件全部内容(适合小文件)cat /etc/hosts
tac 文件名从结尾反向查看文件内容tac /var/log/messages
head -n 数字 文件名查看文件前 N 行(默认 10 行)head -5 /var/log/messages
tail [选项] 文件名查看文件后 N 行或实时监控。常用选项:-n(行数)、-f(实时跟踪)tail -f /var/log/nginx/access.log
vi/vim 文件名 (常用)文本编辑器。核心操作:i 进入编辑模式,Esc 退出,:wq 保存退出,:q! 强制退出不保存vim /etc/profile

软链接与硬链接

提示

  • 软链接(ln -s):类似Windows的快捷方式,指向目标文件或目录的路径。
  • 硬链接(ln):多个文件名指向同一个文件数据块,增加文件引用计数,ll可查看文件引用计数,在第二部分。
  • inode:每个文件都有一个唯一的inode号,可以理解为文件的档案卡片,里面放着文件的位置,权限,大小,类型,创建/修改/访问时间等信息
  • block:文件数据实际存储的地方,可以理解为文件的实际内容存储区域
图片丢失了

关于删除 rm -rf

  • 删除软链接:直接删除即可,不会影响目标文件
  • 删除硬链接:删除其中一个链接文件,其他链接文件仍可访问目标文件,直到引用计数为0时,才会真正删除目标文件

挂载

术语说明
挂载(mount)将存储设备(硬盘、U盘、镜像文件)关联到Linux目录树的过程,访问该目录即访问设备内容
挂载点用于挂载设备的空目录(如 /mnt/data),挂载后原目录内容会被临时覆盖
卸载(umount)解除设备与挂载点的关联,恢复挂载点原有内容
/etc/fstab开机自动挂载配置文件,记录设备与挂载点的对应关系
UUID设备唯一标识(替代设备名 /dev/sda1),避免设备名变动导致挂载失败

1. 基础挂载/卸载

场景命令说明
临时挂载磁盘mount /dev/sda1 /mnt/data挂载 /dev/sda1/mnt/data,重启失效
临时挂载ISO镜像mount -o loop /opt/CentOS-10.iso /mnt/iso-o loop:挂载镜像文件(必加参数)
卸载设备umount /mnt/data优先用挂载点卸载,避免设备忙报错
强制卸载(慎用)umount -f /mnt/data设备忙时强制卸载,可能导致数据损坏

2. 查看挂载信息

命令作用
mount查看所有已挂载的设备
df -h查看挂载点磁盘使用情况(人性化显示)
blkid查看设备UUID和文件系统类型(如ext4、xfs)
cat /etc/fstab查看开机自动挂载配置

文件系统类型

文件系统核心特性适用场景
ext4Linux默认文件系统,ext系列最新版本(前身为ext2、ext3),支持大文件(最大16TB)、大分区(最大1EB),具备日志功能(防止数据丢失),稳定性和兼容性强大多数场景(如系统分区、数据分区)
xfs高性能日志文件系统,支持更大的文件和分区(最大文件8EB,最大分区16EB),读写速度快大文件存储和高并发场景(如数据库、大数据存储),CentOS 7/8默认系统文件系统
btrfs新一代文件系统,支持快照、动态扩容、数据校验等高级特性,稳定性略逊于ext4和xfs需要灵活管理和数据安全的场景,尚未成为主流默认文件系统
vfat兼容Windows和Linux,支持FAT32格式;缺点:不支持权限管理、单文件最大4GBU盘、移动硬盘等移动存储设备
ntfsWindows默认文件系统,Linux需安装ntfs-3g驱动才能支持读写访问Windows分区或NTFS格式的移动存储设备