跳转至

Ch15 §01 Linux 与命令行 · 讲解稿

章节定位: Ch15 日常工具。教"开发者必备 shell 技能": 文件/权限/进程/网络/管道。 承接: Ch13 §03 OS 原理 → Ch15 §01 日常使用 走向: §02 Git / §03 代码设计 / §04 测试 / §05 DevOps 篇幅: ~3700 字 / 阅读 11 分钟 / 讲解 22-25 分钟


一 · 一句话总览

Linux/CMD = AI 工程师的日常工具: 文件浏览 (ls/cat/grep) + 权限 (chmod) + 进程 (ps/kill) + 网络 (curl/ssh) + 管道 (|) + shell 脚本。AI 工程师 90% 时间在终端。


二 · 章节主线 (5 段)

第 1 段 · 文件系统与浏览 (8 分钟)

3.1.1 目录结构

Linux 是树形, 根 /。常见目录:

目录 用途
/home/user/ 用户目录
/etc/ 配置
var log 路径 日志 (系统目录)
tmp 路径 临时 (系统目录)
/usr/bin/ 系统命令
/data/ 数据 (常自建)

3.1.2 浏览命令

ls -la              # 详细列表
ls -lh              # 人类可读大小
cd /path/to/dir     # 切换目录
pwd                 # 当前路径
tree -L 2           # 树形结构 (2 层)

3.1.3 文件操作

cat file.txt        # 全文输出
less file.txt       # 分页
head -n 10 file     # 前 10 行
tail -n 20 file     # 后 20 行
tail -f log.txt     # 实时跟踪
cp src dst          # 复制
mv src dst          # 移动 / 重命名
rm -rf dir          # 递归删除 (慎用!)
mkdir -p a/b/c      # 创建多级目录

3.1.4 查找

find / -name "*.py"                  # 按名
find . -size +100M                   # 按大小
find . -mtime -7                     # 7 天内修改
grep -rn "PLACEHOLDER" src/                 # 文件内容
grep -i "error" log.txt              # 大小写不敏感

第 2 段 · 权限与用户 (8 分钟)

3.2.1 权限位

rwx 三位分别 owner / group / other: - r (4): 读 - w (2): 写 - x (1): 执行

chmod 755 file      # rwxr-xr-x
chmod 644 file      # rw-r--r--
chmod +x script.sh  # 加执行权限

3.2.2 owner / group

chown user:group file
chown -R user:group dir/

3.2.3 su / sudo

su - user        # 切换用户
sudo cmd         # 临时 root
sudo -i          # root shell

3.2.4 SSH

ssh user@host                # 登录
ssh -i ~/.ssh/key.pem user@host  # 用私钥
ssh -L 8080:localhost:80 host    # 端口转发
scp file user@host:/path/       # 上传
rsync -avz src/ host:dst/       # 同步

3.2.5 安全

  • ~/.ssh/authorized_keys: 公钥
  • ~/.ssh/config: 别名配置
  • 不要 root 密码登录, 用 key

第 3 段 · 进程与系统监控 (8 分钟)

3.3.1 进程查看

ps aux             # 静态列表
top                # 动态 (CPU/内存)
htop               # top 增强版
pgrep -f "python"  # 找进程

3.3.2 进程控制

kill PID           # SIGTERM (15)
kill -9 PID        # SIGKILL (强杀)
killall python     # 按名杀
nohup cmd &        # 后台运行, 不挂起

3.3.3 信号

信号 编号 用途
SIGHUP 1 终端断开
SIGINT 2 Ctrl+C
SIGTERM 15 kill 默认
SIGKILL 9 强杀

3.3.4 服务管理

systemctl status nginx       # 查状态
systemctl start nginx        # 启动
systemctl enable nginx       # 开机启动
journalctl -u nginx -f       # 看日志

3.3.5 资源监控

free -h                # 内存
df -h                  # 磁盘
nvidia-smi             # GPU
iostat -x 1            # IO
netstat -tulnp         # 端口
ss -tulnp              # 现代版 netstat

第 4 段 · 网络与 HTTP (8 分钟)

3.4.1 curl

curl https://api.example.com            # GET
curl -X POST -H "Content-Type: application/json" \
     -d '{"key":"value"}' \
     https://api.example.com/data       # POST
curl -I https://example.com             # 只看 header
curl -L https://short.url               # 跟随重定向

3.4.2 wget

下载文件, 比 curl 简单。

3.4.3 ssh 隧道

# 本地端口转发: localhost:8080 → host:80
ssh -L 8080:localhost:80 user@host

# 反向隧道: host:8080 → localhost:80
ssh -R 8080:localhost:80 user@host

用于: 远程开发, 访问内部服务。

3.4.4 nc (netcat)

调试 TCP/UDP:

nc -zv host 80           # 测试端口
nc -l 8080               # 监听 8080
echo "GET / HTTP/1.0" | nc example.com 80

3.4.5 DNS 排查

nslookup example.com
dig example.com
host example.com

第 5 段 · Shell 脚本与管道 (8 分钟)

3.5.1 管道与重定向

cat file | grep "PLACEHOLDER" | wc -l    # 计数
cmd > file                        # 覆盖输出
cmd >> file                       # 追加
cmd 2>&1                          # 错误也输出
cmd < file                        # 输入

3.5.2 常用命令组合

# 找最大文件
du -sh * | sort -hr | head

# 统计代码行数
find . -name "*.py" | xargs wc -l

# 监控日志错误
tail -f log.txt | grep --line-buffered ERROR

# 批量重命名
for f in *.txt; do mv "$f" "${f%.txt}.md"; done

3.5.3 Bash 脚本

#!/bin/bash
set -euo pipefail

NAME=${1:-world}
echo "Hello, $NAME!"

for i in {1..5}; do
    echo "Iteration $i"
done

set -e: 错即停; set -u: 未定义变量错; set -o pipefail: 管道任一错即停。

3.5.4 环境变量

export PATH=/opt/conda/bin:$PATH
echo $HOME
echo $PATH

~/.bashrc 或 ~/.zshrc 永久生效。

3.5.5 tmux / screen

终端复用:

tmux new -s work       # 新会话
tmux attach -t work    # 接入
Ctrl+B, D              # 脱离

AI 训练常用: SSH 断开会话不丢。


三 · 易错点 (5 条)

  1. rm -rf: 慎用, 不可恢复。
  2. chmod 777: 太宽, 安全风险。
  3. kill -9: 应先 SIGTERM。
  4. curl POST 默认: 不带 body, 需 -d 或 -X POST。
  5. sudo 与 su: 不要混用, 选一个。

四 · 跨章连接

章节 关联
Ch13 §03 操作系统 进程 / 文件 / 权限原理
Ch13 §04 并发 进程后台运行
Ch15 §05 DevOps 服务部署 (systemd)

五 · 自测 5 题

  1. chmod 755 含义?
  2. ps aux 与 top 区别?
  3. kill -9 与 kill -15 区别?
  4. curl POST 写法?
  5. set -e 含义?

六 · 一句话总结

Linux/CMD = 开发者必备。文件 (find/grep) + 权限 (chmod) + 进程 (ps/kill) + 网络 (curl/ssh) + 管道 (|) + shell 脚本。Ch15 §02 教 Git 版本管理。


七 · 板书建议

[板书 1: 浏览]
   ls / cat / grep / find

[板书 2: 权限]
   rwx 4/2/1
   chmod 755

[板书 3: 进程]
   ps / top / kill
   SIGTERM / SIGKILL

[板书 4: 网络]
   curl / ssh / nc
   端口转发

[板书 5: Shell]
   | 管道
   set -euo pipefail

八 · 参考资料

  1. "The Linux Command Line" (免费书)
  2. man bash
  3. Ch13 §03 操作系统 (本套书)
  4. Ch15 §05 DevOps (本套书)