【知识点梳理】 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官方规范,以下是最需要记住的核心目录:
| | |
|---|
/ | | 整棵树的起点;应用程序不得在根目录创建特殊文件或子目录 |
/bin | | |
/boot | | |
/dev | | |
/etc | | |
/home | | |
/lib | | |
/media | | |
/mnt | | |
/opt | | |
/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 — 移动/重命名
- 如果
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官方文档,权限位由三组比特位构成:一组用于用户(所有者),一组用于文件所属组的其他用户,一组用于不在文件所属组中的其他用户——每组各需要读、写、执行/搜索三个比特位。
📌 权限如 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 目录权限
⚠️ 关键点:目录的 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的核心知识可以浓缩为以下几个要点:
一切皆文件 — 这是理解Linux的哲学基石。从普通文件到设备、进程,统一通过文件接口访问。
FHS标准目录树 — 整个系统以 / 为根,所有内容在树上各司其职。FHS确保了不同Linux发行版之间的互操作性。
权限即安全 — 理解 rwx 和 chmod/chown 是多用户环境的基础。文件在创建时即被赋予所有者和所属组。
管道即组合 — | 让简单命令组合出强大功能,体现了Unix“做一件事并做好”的设计哲学。
进程即运行 — 用 ps/top/kill 管理系统中的任务。kill 优先使用 TERM 信号,KILL 信号作为最后手段。
Linux的学习不是死记命令,而是理解其设计思想与标准规范。当你真正理解“一切皆文件”、“FHS目录树”和“权限模型”时,绝大多数命令和操作都会变得自然而有逻辑。
🚀 下一步建议:打开你的Linux终端,逐个尝试本文中的命令。实践是最好的老师!
本文参考了Linux Foundation FHS 3.0标准、GNU Coreutils官方手册、Linux man-pages项目及Red Hat官方文档等权威资料。