当前位置:首页>Linux>【知识点梳理】 Linux文件、命令与系统

【知识点梳理】 Linux文件、命令与系统

  • 2026-09-10 12:10:31
【知识点梳理】 Linux文件、命令与系统

【知识点梳理】 Linux文件、命令与系统

一份基于官方标准与手册的Linux核心知识精选指南

前言

Linux体系庞大,命令繁多,初学者往往在茫茫指令中迷失方向。事实上,Linux的设计哲学极为简洁优雅——一切皆文件(Everything is a file)。理解这句话,便握住了打开Linux大门的钥匙。

本文依据 Filesystem Hierarchy Standard (FHS) 3.0 官方标准、GNU Coreutils 官方手册以及 Linux man-pages 等权威资料编写而成。全文从文件系统入手,逐步展开文件操作、权限管理、进程管理等核心知识,力求深入浅出、兼具权威性与可读性。

Part 1. Linux的哲学:一切皆文件

在Linux世界中,一切皆文件并非一句口号,而是贯穿整个操作系统的设计哲学。

什么是“文件”?普通文本文件是文件,目录是文件,硬盘设备(如 /dev/sda)是文件,进程信息(如 /proc/1/status)也是文件。程序不需要为“读配置”“写日志”“访问设备”各写一套完全不同的接口,只需学会“操作文件”即可。同一套 “打开 → 读/写 → 关闭” 的思维贯穿始终。

💡 这意味着:读配置文件 = 打开一个文件、读内容;写日志 = 打开一个文件、追加内容;查看设备状态 = 读对应的设备文件(在权限允许的前提下)。

/proc 文件系统是一个伪文件系统(pseudo-filesystem),它不占用磁盘空间,而是提供了一个访问内核数据结构的接口。例如,执行 cat /proc/cpuinfo 可以查看CPU信息——你读到的不是磁盘上的文件,而是内核实时生成的数据。这便是“一切皆文件”在系统层面的生动体现。

Part 2. 文件系统与目录树(FHS标准)

2.1 一棵树的哲学

在“一切皆文件”的基础上,Linux将整个系统呈现为一棵单一的目录树,根是 /(根目录)。所有文件和目录都挂在这棵树上。不同的磁盘、分区可以“挂载”到树的任意目录下——对你而言,它们只是树的一部分,无需关心“这个目录在哪个物理硬盘上”。

FHS(Filesystem Hierarchy Standard,文件系统层次结构标准)由Linux基金会旗下的LSB工作组制定,其核心目的是:让软件能够预测已安装文件的位置,让用户能够预测已安装文件的位置。FHS通过规范文件与目录的存放位置,促进了应用程序、系统管理工具、开发工具和脚本之间的互操作性。

2.2 路径与当前位置

  • 绝对路径
    :从根 / 开始,如 /home/user/file.txt,唯一确定一个位置。
  • 相对路径
    :相对于“当前目录”,如 ./file.txt(当前目录下的文件)、../other/file.txt(上一级目录中的文件)。
  • 家目录 ~
    :每个用户有一个家目录(如 /home/user),~ 是其简写。

2.3 核心目录职责(FHS 3.0 标准)

根据FHS 3.0官方规范,以下是最需要记住的核心目录:

目录
用途
FHS规定
/
根目录
整棵树的起点;应用程序不得在根目录创建特殊文件或子目录
/bin
基本命令二进制文件
所有用户必需的基本命令二进制文件
/boot
引导加载程序文件
引导加载程序的静态文件
/dev
设备文件
设备文件
/etc
主机特定的系统配置
系统配置文件
/home
用户家目录
用户家目录(可选)
/lib
基本共享库和内核模块
必需的共享库和内核模块
/media
可移动介质挂载点
可移动介质的挂载点
/mnt
临时挂载点
临时挂载的文件系统
/opt
附加应用软件包
附加应用软件包
/root
root用户家目录
root用户的家目录
/usr
用户程序与数据
系统范围的只读数据
/var
可变数据
日志、缓存等可变数据

📌 记忆口诀:配置在 /etc,可变数据在 /var,用户数据在 /home(或 ~),系统软件在 /usr。

FHS标准还对文件进行了两个维度的分类:可共享(shareable)vs 不可共享(unshareable),以及可变(variable)vs 静态(static)。这种分类方式使得系统管理更加灵活——例如,/usr(可共享、静态)可以挂载为只读,而 /var(不可共享、可变)则需要读写权限。

2.4 基础导航命令

这些命令均属于 GNU Coreutils 软件包——它是每个类Unix操作系统上都存在的基本文件、Shell和文本操作工具的集合。

pwd          # 显示当前所在目录(print working directory)ls           # 列出当前目录内容ls -l        # 详细列表(含权限、属主、大小等)ls -a        # 包含隐藏文件(以 . 开头的文件)cd /path     # 切换到指定目录(change directory)cd ~         # 回到家目录cd ..        # 回到上一级目录

Part 3. 文件操作与文本处理

3.1 文件操作命令(GNU Coreutils)

以下命令均收录于 GNU Coreutils 官方手册:

mv — 移动/重命名

mv x y
  • 如果 y 是已存在目录:将 x 移动进 y 目录内
  • 如果 y 不存在:将 x 重命名为 y

cp — 复制

cp source dest       # 复制文件cp -r source dest    # 递归复制目录

rm — 删除(⚠️ 谨慎使用)

rm file.txt          # 删除文件rm -r dir/           # 递归删除目录rm -rf dir/          # 强制递归删除(不可恢复!)

mkdir — 创建目录

mkdir dirname        # 创建目录mkdir -p a/b/c       # 递归创建多级目录

3.2 文本查看工具

cat -n x             # 显示文件全部内容并打印行号tac x                # 反向打印文件(倒序输出)less x               # 分页查看(支持上下翻页;输入 /关键词 可向下搜索)head -n x file       # 打印文件开头 x 行tail -n x file       # 打印文件末尾 x 行tail -f logfile      # 实时追踪日志更新(运维必备!)

less 比 more 更强大,建议优先使用。

3.3 管道符 | — 命令组合的魔法

管道符 | 的作用是:把前面命令的输出,交给后面命令当作输入。

# 取文件中间一段:取开头100行,再截取末尾8行head -n 100 file | tail -n 8# 统计文件行数wc -l filehead -n 100 file | wc -l   # 统计前100行的行数

Part 4. 用户与权限管理

4.1 权限的基本概念

Linux是多用户操作系统,权限管理是其安全基石。每个文件或目录在创建时都会被赋予所有者(owner) 和所属组(group)。通常,所有者是当前用户,所属组是文件所在目录的组。

每个文件或目录有三个级别的所有权:

  • 所属用户(user / u)
     — 文件的所有者
  • 所属组(group / g)
     — 文件所属的用户组
  • 其他用户(others / o)
     — 不属于前两类的用户

4.2 rwx权限详解

根据GNU Coreutils官方文档,权限位由三组比特位构成:一组用于用户(所有者),一组用于文件所属组的其他用户,一组用于不在文件所属组中的其他用户——每组各需要读、写、执行/搜索三个比特位。

字母权限
数字权限
权限含义
r
(read)
4
读取权限
w
(write)
2
写入权限
x
(execute)
1
执行权限(对目录而言是“进入/搜索”权限)
-
0
没有权限

📌 权限如 rw-r--r-- 表示:所有者可读可写(6),所属组只读(4),其他人只读(4)。

4.3 核心权限命令

chmod — 修改权限

chmod 命令用于更改文件或目录的访问权限。

# 数字法(八进制模式)chmod 755 file       # 所有者:rwx(7),组:r-x(5),其他:r-x(5)chmod 644 file       # 所有者:rw-(6),组:r--(4),其他:r--(4)# 符号法chmod u+x file       # 给所有者添加执行权限chmod g-w file       # 移除组的写权限chmod a+r file       # 给所有用户添加读权限# 递归修改目录及其所有子文件chmod -R 755 dir/

💡 数字模式通常比符号模式更简短,但局限性在于它只能绝对设置权限,而符号模式可以相对地增减权限。例如,chmod u+x 只添加执行权限而不影响其他位,这在数字模式下无法直接实现。

chown — 修改所有者

chown 命令用于更改文件的所有者和/或所属组。

# 同时修改用户和组chown user:group file# 只修改用户chown user file# 递归修改chown -R user:group dir/

⚠️ 只有root用户可以更改文件的所有者给其他用户。普通用户只能更改自己文件的组(且必须属于目标组)。

4.4 文件权限 vs 目录权限

权限
对文件的作用
对目录的作用
r
可读取文件内容
可列出目录内容(需配合 x)
w
可修改文件内容
可在目录内创建/删除文件(需配合 x)
x
可执行文件
可进入目录(cd)

⚠️ 关键点:目录的 x 权限决定能否 cd 进入该目录。没有 x 权限,即使有 r 权限也无法进入目录查看内容。

Part 5. 进程与系统管理

在这里插入图片描述

5.1 什么是进程

进程是计算机中正在运行的程序实例。每个进程有唯一的进程ID(PID)。进程可以处于多种状态:运行中、睡眠中(等待事件)、已停止、僵尸(已结束但父进程尚未回收)等。

5.2 查看进程

ps — 进程快照

ps 命令报告当前进程的状态快照。它通过读取 /proc 中的虚拟文件来获取进程信息。

ps -ef               # 显示所有进程的详细信息(标准格式)# 输出列:UID(用户ID)、PID(进程ID)、PPID(父进程ID)、CMD(命令)等ps aux               # 显示所有进程(包括CPU和内存使用情况)

top — 实时监控

top 提供系统资源使用情况的连续更新视图。

top                  # 实时显示进程和系统资源# 交互命令:按 k 可杀死进程(提示输入PID和信号),按 r 可调整优先级

5.3 终止进程

kill 命令向指定进程发送信号。根据Linux man-pages官方手册:

kill PID             # 发送 TERM 信号(默认),让进程优雅终止kill -9 PID          # 发送 KILL 信号(信号9),强制终止kill -l              # 列出所有可用信号名称

💡 最佳实践:kill 命令应优先使用 TERM 信号(无参数) ,因为进程可以捕获 TERM 信号并执行清理操作后再终止。如果进程在 TERM 信号后仍未终止,再使用 KILL 信号(-9)。KILL 信号无法被捕获,因此目标进程没有机会执行任何清理操作。

5.4 查看系统状态

df -h                # 查看磁盘使用情况(人类可读格式)du -sh dir/          # 查看目录占用空间free -h              # 查看内存使用情况uptime               # 查看系统运行时间和负载uname -a             # 查看系统内核版本和硬件信息

Part 6. 时间、日期与日志

6.1 时间与日期

date                 # 输出当前系统时间date +"%Y年%m月%d日 %H时%M分%S秒"  # 自定义格式# %Y:年  %m:月  %d:日  %H:小时  %M:分钟  %S:秒cal                  # 查看当前月日历cal 2026             # 查看2026年全年日历

6.2 时间戳

date +%s             # 输出当前时间戳(从1970-01-01 00:00:00 UTC开始的秒数)date -d @时间戳数字   # 将时间戳还原为可读日期

6.3 系统日志

journalctl           # 查看系统日志(systemd日志)journalctl -f        # 实时追踪日志journalctl -u nginx  # 查看特定服务的日志

Part 7. 查找与定位

7.1 查找命令位置

which 命令名         # 查找可执行程序所在路径whereis 程序名       # 查找程序(同时显示二进制、源文件、手册位置)

7.2 find — 强大的文件搜索

find 搜索起始目录 -name "匹配名字"    # 从指定目录递归查找find / -name "*.c"                    # 查找全部 .c 后缀文件find /home -name "*.txt" -type f     # 查找 /home 下所有 .txt 文件

⚠️ 通配符匹配时,引号不能省略,防止shell提前解析通配符。

7.3 grep — 文本内容搜索

grep "关键词" 文件       # 在文件中搜索关键词grep -r "关键词" 目录/   # 递归搜索目录下所有文件ps -ef | grep nginx     # 在进程列表中搜索 nginxhistory | grep ssh      # 在历史命令中搜索 ssh

总结

回顾全文,Linux的核心知识可以浓缩为以下几个要点:

  1. 一切皆文件 — 这是理解Linux的哲学基石。从普通文件到设备、进程,统一通过文件接口访问。

  2. FHS标准目录树 — 整个系统以 / 为根,所有内容在树上各司其职。FHS确保了不同Linux发行版之间的互操作性。

  3. 权限即安全 — 理解 rwx 和 chmod/chown 是多用户环境的基础。文件在创建时即被赋予所有者和所属组。

  4. 管道即组合 — | 让简单命令组合出强大功能,体现了Unix“做一件事并做好”的设计哲学。

  5. 进程即运行 — 用 ps/top/kill 管理系统中的任务。kill 优先使用 TERM 信号,KILL 信号作为最后手段。

Linux的学习不是死记命令,而是理解其设计思想与标准规范。当你真正理解“一切皆文件”、“FHS目录树”和“权限模型”时,绝大多数命令和操作都会变得自然而有逻辑。

🚀 下一步建议:打开你的Linux终端,逐个尝试本文中的命令。实践是最好的老师!

本文参考了Linux Foundation FHS 3.0标准、GNU Coreutils官方手册、Linux man-pages项目及Red Hat官方文档等权威资料。

最新文章

随机文章