Linux 基本功学习地图
约 2536 字大约 8 分钟
2026-05-14
Linux 基本功不是背命令大全,而是建立一套能看懂系统、使用系统、排查系统问题的路线图。
- 学习顺序
- 系统视角
- 排查能力
- 练习路径
很多人第一次学 Linux,会从一长串命令开始:ls、cd、grep、chmod、systemctl、journalctl……命令越记越多,真正遇到问题时却还是不知道从哪里下手。
原因很简单:Linux 不是一堆孤立命令,而是一套操作系统。命令只是入口,背后真正重要的是:文件在哪里、进程怎么跑、权限怎么限制、网络怎么连、服务怎么托管、日志在哪里看、资源瓶颈怎么判断。
这篇文章先不急着讲某个具体命令,而是给整个“Linux 基本功”系列画一张学习地图。
先建立一个系统视角
日常使用 Linux,大多数问题都可以放进下面几类:
| 你遇到的现象 | 背后的系统概念 | 常用入口 |
|---|---|---|
| 找不到文件、路径不对 | 文件系统、路径、工作目录 | pwd、ls、cd、find |
| 命令能不能执行、参数怎么传 | Shell、命令模型、环境变量 | bash、zsh、echo、env |
| 没权限、不能写入、不能执行 | 用户、用户组、文件权限 | id、chmod、chown、sudo |
| 服务起不来、重启后没了 | 进程、systemd、服务生命周期 | ps、systemctl、journalctl |
| 端口访问不了、域名解析异常 | IP、端口、DNS、路由、防火墙 | ss、curl、dig、ip |
| 磁盘满、内存高、CPU 飙升 | 资源使用、负载、I/O | df、du、free、top |
| 定时任务没执行、脚本行为不一致 | Shell 脚本、环境、定时调度 | crontab、systemd timer |
学习 Linux 时,不要只问“这个命令怎么用”,更应该问:这个命令在帮我观察系统的哪一部分?
第一层:先会在命令行里移动
第一层目标很朴素:打开终端后,你知道自己在哪里,知道怎么找文件,知道命令为什么会这样执行。
建议先掌握这些内容:
- 路径与工作目录:理解绝对路径、相对路径、
.、..、~。 - 目录结构:知道
/etc、/var、/usr、/home、/tmp大概放什么。 - Shell 是什么:区分终端、Shell、命令、脚本。
- 命令模型:理解命令、选项、参数和退出码。
- 管道与重定向:理解为什么 Linux 命令可以组合起来使用。
这一层不需要追求复杂,只要能做到:
pwd
ls -lah
cd /var/log
grep -n "ERROR" app.log
ps aux | grep nginx并且知道每条命令大概在做什么。
学习重点
第一层最重要的不是记住多少选项,而是形成“当前位置、输入、输出、错误、退出码”的基本意识。后面所有排查都建立在这个基础上。
第二层:知道系统怎样组织资源
会用命令以后,下一步要知道 Linux 是怎么组织系统资源的。
文件是一切操作的入口
Linux 里大量东西都以文件形式出现:普通文件、目录、软链接、设备文件、配置文件、日志文件。你修改配置、查看日志、部署程序,本质上都在和文件系统打交道。
这一层需要理解:
- 文件名和文件本身不是一回事;
- 软链接和硬链接不是简单的“快捷方式”;
- 挂载点会影响你看到的目录内容;
- 磁盘满了不一定只是“大文件太多”,也可能是被删除但仍被进程占用的文件。
权限决定“谁能做什么”
很多初学者看到 Permission denied,第一反应是加 sudo。这能临时解决一部分问题,但也容易掩盖真正原因。
更可靠的思路是先问:
| 问题 | 对应检查 |
|---|---|
| 当前用户是谁 | id、whoami |
| 文件属于谁 | ls -l |
| 目录有没有进入权限 | 检查路径上每一级目录的 x 权限 |
| 服务以哪个用户运行 | systemctl show 服务 --property=User,Group |
| 是否真的需要 root | 能不用 sudo 就不要默认使用 |
权限这部分学明白后,很多“明明文件存在但程序读不到”的问题都会变得清晰。
进程和服务是程序运行的形态
程序不是“安装了”就等于“正在运行”。在 Linux 里,你需要区分:
- 软件包是否安装;
- 进程是否存在;
- 服务是否被 systemd 管理;
- 服务是否开机自启;
- 服务虽然 running,但业务是否真的可用。
比如一个 Web 服务访问不了,systemctl status nginx 显示 active (running) 只说明 Nginx 进程还在。下一步还要看端口监听、配置、日志、防火墙和上游服务。
第三层:能独立排查问题
Linux 基本功真正有用的地方,是遇到问题时能按层次排查,而不是随机尝试命令。
可以先记住一个通用流程:
描述现象:到底是“访问超时”“拒绝连接”“权限不足”,还是“服务退出”?
缩小范围:是单个用户、单台机器、单个服务,还是所有服务都异常?
找证据:状态、日志、端口、资源、配置变更分别看一遍。
做最小验证:只改一个变量,确认问题是否变化。
再修复:不要在没证据时连续重启、改权限、清缓存。
常见问题可以按下面的入口开始:
| 问题 | 第一入口 | 第二入口 |
|---|---|---|
| 服务起不来 | systemctl status 服务 | journalctl -u 服务 -n 100 |
| 端口访问不了 | ss -lntp | curl -v、防火墙、日志 |
| 磁盘满了 | df -h | du -sh *、lsof +L1 |
| 权限错误 | ls -l、id | 检查目录链路权限和服务用户 |
| CPU 高 | top、ps | 线程、日志、业务请求量 |
| 内存不够 | free -h | ps aux --sort=-%mem、OOM 日志 |
| 定时任务不执行 | crontab/systemd timer 状态 | 环境变量、路径、执行权限、日志 |
| SSH 连不上 | 错误类型 | 网络、端口、认证、known_hosts |
这也是后面“故障排查”模块要重点展开的内容。
推荐学习顺序
如果你是从零开始,可以按这个顺序读:
| 阶段 | 先读什么 | 目标 |
|---|---|---|
| 1 | Shell 与命令行 | 看懂命令如何执行,理解输入输出和退出码 |
| 2 | 文件系统 | 知道文件、路径、目录结构和挂载的基本关系 |
| 3 | 用户与权限 | 能判断谁能读、写、执行,少滥用 sudo |
| 4 | 文本处理 | 能用 grep、sed、awk、sort 等处理日志和输出 |
| 5 | 进程与服务 | 知道程序如何运行、如何被 systemd 管理 |
| 6 | 网络基础 | 能排查 DNS、端口、监听和防火墙问题 |
| 7 | 软件包管理 | 会安装、更新、查找软件来源和安装位置 |
| 8 | 磁盘、内存与资源 | 能判断系统是不是被资源打满 |
| 9 | 脚本与自动化 | 把重复操作变成可靠脚本或定时任务 |
| 10 | 故障排查 | 把前面的知识串成稳定的问题定位流程 |
如果你已经在服务器上工作,可以不必完全线性阅读。比如正在排查服务问题,就先看 systemctl、journalctl、端口和日志相关内容,再回头补 Shell、权限和文件系统基础。
每一篇文章该怎么练
Linux 学习最怕“看懂了,但没用过”。每学一篇,都建议做三个动作:
- 照着跑一遍:不要只看命令,真的在本机或测试服务器上执行。
- 改一个条件:换目录、换文件、换用户、换端口,观察结果变化。
- 记录一个错误:故意制造一个小错误,再按文章里的流程排查。
比如学路径时,可以故意在不同目录运行同一个相对路径命令;学权限时,可以创建一个普通用户和一个只读文件;学 systemd 时,可以看一个真实服务的 unit 文件和日志。
不建议一开始就在生产机上练习
初学阶段最好使用本地虚拟机、云服务器测试机、Docker 容器或不重要的开发环境。涉及 rm、chmod -R、chown -R、磁盘清理、防火墙和服务重启的操作,都要先确认影响范围。
从“命令速查”走向“系统判断”
命令速查很有用,但它只是第一步。真正熟悉 Linux 以后,你会逐渐从“我要用哪个命令”转向“我要验证哪个假设”。
例如端口访问不了时,不是马上搜索“Linux 端口不通命令”,而是按假设排查:
| 假设 | 验证方式 |
|---|---|
| 服务没启动 | systemctl status |
| 服务没监听端口 | ss -lntp |
| 监听在错误地址 | 看 127.0.0.1 还是 0.0.0.0 |
| 防火墙拦了 | 查 ufw、firewalld、安全组 |
| DNS 指错了 | dig、nslookup |
| 应用内部报错 | journalctl 或应用日志 |
这就是 Linux 基本功的目标:不是把所有命令背下来,而是能用有限的命令,一层一层把问题变小。
- 1找一台不会影响生产的 Linux 环境,确认自己能登录和执行普通命令。
- 2用 `pwd`、`ls`、`cd` 熟悉当前位置和目录切换。
- 3找一个日志文件,用 `grep -n` 和 `grep -C` 搜索关键词。
- 4查看一个正在运行的服务:`systemctl status 服务名` 和 `journalctl -u 服务名 -n 50`。
- 5遇到错误时先写下现象和假设,再执行命令验证,不要直接重启或加 `sudo`。
- Linux 基本功的核心不是背命令,而是理解文件、进程、权限、网络、服务、日志和资源。
- 推荐先建立命令行和文件系统基础,再学习权限、进程服务、网络和资源排查。
- 排查问题时先描述现象、缩小范围、找证据,再做最小修复。
- 每篇文章都要配合实际练习,把命令速查变成系统判断能力。
版权所有
版权归属:Shuo Liu
