Lesson 0002:Linux 命令行——DevOps 的母语

不管你以后用 Docker、Kubernetes、AWS 还是 Terraform,最终你都是在跟 Linux 服务器打交道。命令行不是你「偶尔用一下」的工具——它是 DevOps 工程师的主要工作界面

为什么命令行这么重要?

三个原因:

  1. 服务器没有 GUI。 你 SSH 进去就是黑底白字的终端,没有鼠标,没有桌面。
  2. 自动化 = 脚本 = 命令行。 CI/CD 流水线里跑的不是 GUI 操作,而是一行行命令。
  3. 效率碾压 GUI。 一行 grep ERROR /var/log/*.log | wc -l 比打开 20 个日志文件搜索快 100 倍。

思维模型:一切皆文件

Linux 有一个核心哲学:一切皆文件(Everything is a file)。

这意味着:学会一套文件操作命令,你就能操作 Linux 的一切

第一部分:生存命令(15 分钟)

打开你的终端。跟着敲。这 12 个命令是你每天都会用的。

1. 你在哪 & 有什么

pwd                     # Print Working Directory — 当前在哪
ls                      # List — 列出当前目录的文件
ls -la                  # -l=长格式(权限/大小/时间)-a=包括隐藏文件
cd /tmp                 # Change Directory — 去 /tmp
cd ~                    # 回家目录
cd -                    # 回上一个目录

2. 读文件

cat /etc/hostname       # 打印整个文件(短文件用)
less /var/log/syslog    # 分页浏览(上下箭头翻,q 退出)
head -5 /etc/passwd     # 看前 5 行
tail -f /var/log/syslog # 实时追踪文件末尾(Ctrl+C 退出)

3. 搜索

grep root /etc/passwd           # 在文件中找「root」
grep -r "error" /var/log/       # 递归搜索整个目录
find /tmp -name "*.log"         # 按文件名在 /tmp 下找 .log 文件
find /tmp -mtime -1             # 找 /tmp 下最近 1 天修改过的文件
grep vs find:grep 搜索文件内容,find 搜索文件名和属性

4. 管道和重定向

这是 Linux 命令行的灵魂——把小命令串成流水线。

# | (pipe):把左边命令的输出传给右边命令
ps aux | grep nginx          # 在所有进程中找 nginx
cat /var/log/syslog | grep error | wc -l   # 数有多少行包含 error

# > (重定向输出):把输出写到文件(覆盖)
echo "hello" > /tmp/test.txt

# >> (追加重定向):把输出追加到文件末尾
echo "world" >> /tmp/test.txt

# < (重定向输入):把文件内容喂给命令
wc -l < /tmp/test.txt        # 数文件有多少行

第二部分:运维命令(15 分钟)

这些是 DevOps 日常排查问题用的。

5. 进程管理

ps aux              # 列出所有进程(BSD 风格)
ps aux | head -5    # 只看前 5 行
top                 # 实时进程监控(q 退出)
htop                # top 的彩色增强版(如果没有:sudo apt install htop)

# 杀掉进程
kill 1234           # 优雅终止 PID 1234
kill -9 1234        # 强制杀死(别上来就用 -9)

6. 磁盘 & 内存

df -h               # 磁盘使用情况(-h = human-readable)
du -sh /var/log/    # 某个目录占多少空间
free -h             # 内存使用情况

7. 网络

curl https://api.github.com       # 发 HTTP 请求,打印响应
curl -I https://google.com        # 只看响应头
ss -tlnp                          # 查看哪些端口在监听
ping -c 3 8.8.8.8                # ping 3 次就停

8. 权限

ls -l /etc/passwd        # 看权限:-rw-r--r--  1 root root ...
#  ↑      ↑      ↑
#  owner  group  others  各有 r(读) w(写) x(执行) 权限

chmod +x script.sh       # 给脚本加执行权限
chmod 755 script.sh      # rwxr-xr-x(数字方式)
数字权限含义
7rwx读+写+执行
6rw-读+写
5r-x读+执行
4r--只读

9. 服务管理(systemd)

现代 Linux 用 systemd 管理后台服务。你以后配置 Nginx、Docker、你写的后端服务,都会用到:

systemctl status docker     # 看 Docker 服务的状态
systemctl start nginx       # 启动 Nginx
systemctl stop nginx        # 停止 Nginx
systemctl enable nginx      # 开机自启
systemctl restart nginx     # 重启
journalctl -u nginx -f      # 实时看 Nginx 的日志

10. 包管理(apt)

sudo apt update             # 更新包索引
sudo apt install htop       # 安装 htop
sudo apt remove htop        # 卸载 htop
apt search nginx            # 搜索包

动手练习:用命令行排查一个「假故障」

目标:在你的终端里完成以下任务,体验完整的排查流程。

  1. df -h 看你的磁盘还剩多少空间
  2. free -h 看内存使用情况
  3. ps aux | grep -i docker 找 Docker 进程是否在运行
  4. ss -tlnp 看哪些端口被占用了
  5. du -sh /var/log/ 看日志占了多少空间
  6. grep -r "error" /var/log/ 2>/dev/null | head -10 搜最近的 error 日志
2>/dev/null 是什么意思?这是把「错误输出」(stderr)扔进 /dev/null(一个黑洞)。不加的话,你没权限读的日志文件会报 Permission denied,干扰结果。

小测验

Q1:把 ps aux 的输出传给 grep nginx,用什么符号?(选一个)
Q2:你想实时追踪一个日志文件的新增内容,用什么命令?(选一个)
Q3:chmod 755 给文件设置的权限是什么?(选一个)
Q4:grep 和 find 的区别是什么?(选一个)

推荐资源

下一步

下一课我们进入 DevOps 的第一个核心工具:Git 进阶——不只是 commit 和 push,而是 rebase、stash、bisect 这些你面试会被问到的操作。

有问题?直接在这个对话里问。命令跑不通?把报错信息发给我,我帮你排查。
← Lesson 0001 · 术语表 · Linux 速查表 · Mission