面向 AI 的 Linux:在远程 GPU 服务器上不求人的生存指南


文档摘要

面向 AI 的 Linux:在远程 GPU 服务器上不求人的生存指南 本节摘要:大多数 AI 跑在 Linux 上,你得懂到「不被卡住」的程度。你在 macOS 或 Windows 上开发,可一旦 SSH 进云端 GPU 机器、租了 Lambda 实例、起了 EC2,你落地的就是 Ubuntu——终端是你唯一的界面,没有 Finder、没有资源管理器、没有 GUI。如果你不会从命令行导航文件系统、装系统包、管进程,你就会一边付着闲置 GPU 的钱一边搜「Linux 怎么解压文件」。

面向 AI 的 Linux:在远程 GPU 服务器上不求人的生存指南

本节摘要:大多数 AI 跑在 Linux 上,你得懂到「不被卡住」的程度。你在 macOS 或 Windows 上开发,可一旦 SSH 进云端 GPU 机器、租了 Lambda 实例、起了 EC2,你落地的就是 Ubuntu——终端是你唯一的界面,没有 Finder、没有资源管理器、没有 GUI。如果你不会从命令行导航文件系统、装系统包、管进程,你就会一边付着闲置 GPU 的钱一边搜「Linux 怎么解压文件」。这是一份生存指南,只覆盖你在远程 Linux 机器上做 AI 工作真正需要的那些:文件系统布局、15 条覆盖 95% 场景的核心命令、用 chmod/chown 解决 Permission denied、用 apt 装系统包并把一台全新 GPU 机器初始化好、磁盘空间管理,以及从 macOS 迁过来最容易踩的那些坑。

对应原课程:Phase 00 · Lesson 11 · linux-for-ai(原英文 phases/00-setup-and-tooling/11-linux-for-ai/docs/en.md)。前置:第 01 节「开发环境」、第 10 节「终端与 Shell」。

学习目标

阅读完本节,你应当能够:

  1. 在 Linux 文件系统里导航,从命令行完成必备的文件操作。
  2. chmodchown 管理文件权限,解决「Permission denied」错误。
  3. apt 装系统包,把一台全新 GPU 机器初始化好。
  4. 识别 macOS 与 Linux 的差异,避免在远程机器上被这些细节绊住。

一、问题与直觉

你在 macOS 或 Windows 上开发。可一旦 SSH 进云端 GPU 机器、租 Lambda 实例、起 EC2,你落地的就是 Ubuntu。终端是你唯一的界面——没有 Finder、没有资源管理器、没有 GUI。如果你不会从命令行导航文件系统、装包、管进程,你就会一边付闲置 GPU 的钱,一边搜「Linux 怎么解压文件」。

这是一份生存指南——只覆盖你在远程 Linux 机器上做 AI 工作真正需要的东西,不多不少。

文件系统布局

Linux 把所有东西组织在单一根 / 下,没有 C:\ 也没有 /Volumes。你实际会碰到的目录:

你的家目录是 ~/home/你的用户名你做的事几乎都在这里发生

💡 心智模型:Linux 的 / 是「一棵树」,所有目录都挂在这棵树上。对比 Windows 的多盘符(C/D/E),Linux 是单根树,外接盘挂到 /mnt/media。记住这一点,文件路径就不会迷路。

二、从零实现

15 条核心命令(覆盖 95% 场景)

移动:

pwd # 我在哪? ls # 这有什么? ls -la # 这有什么,含隐藏文件与详情? cd /path/to/dir # 去那 cd ~ # 回家 cd .. # 上一层

文件与目录:

mkdir my-project # 建目录 mkdir -p a/b/c # 一次建嵌套目录 cp file.txt backup.txt # 拷文件 cp -r src/ src-backup/ # 拷目录(递归) mv old.txt new.txt # 改名 mv file.txt /tmp/ # 移动 rm file.txt # 删文件(无回收站,没了就没了) rm -rf my-dir/ # 删目录及里面所有东西

⚠️ 设计警示:rm -rf永久删除,无撤销。回车前再三确认路径。rm -rf /rm -rf ~ 这类误操作能让整台机器瞬间归零——这是远程服务器上最高频的灾难。

读文件:

cat file.txt # 打印整个文件 head -20 file.txt # 前 20 行 tail -20 file.txt # 后 20 行 tail -f log.txt # 实时跟踪日志(Ctrl+C 停) less file.txt # 翻页浏览(q 退出)

搜索:

grep "error" training.log # 找含 "error" 的行 grep -r "learning_rate" . # 搜当前目录所有文件 grep -i "cuda" config.yaml # 不区分大小写 find . -name "*.py" # 找当前目录下所有 Python 文件 find . -name "*.ckpt" -size +1G # 找大于 1GB 的 checkpoint

权限

Linux 上每个文件都有属主与权限位。脚本不能执行、目录写不进时,你都会撞上它:

ls -l train.py # -rwxr-xr-- 1 user group 2048 Mar 19 10:00 train.py # ^^^ 属主权限: 读、写、执行 # ^^^ 组权限: 读、执行 # ^^^ 其他人: 只读

常见修复:

chmod +x train.sh # 让脚本能执行 chmod 755 deploy.sh # 属主全权,其他人读+执行 chmod 644 config.yaml # 属主读+写,其他人只读 chown user:group file.txt # 改属主(需要 sudo)

凡是报「Permission denied」,几乎都是权限问题。chmod +xsudo 能修大多数。

装系统包(apt)

Ubuntu 用 apt 装系统级软件:

sudo apt update # 刷新包列表(永远先做这步) sudo apt install -y htop # 装包(-y 跳过确认) sudo apt install -y build-essential # C 编译器、make 等,很多 Python 包需要 sudo apt install -y tmux # 终端复用器 apt list --installed # 装了啥 sudo apt remove htop # 卸载

一台全新 GPU 机器的初始化命令:

sudo apt update && sudo apt install -y \ build-essential \ git \ curl \ wget \ tmux \ htop \ unzip \ python3-venv

用户与 sudo

你通常以普通用户登录。有些操作需要 root(管理员)权限:

whoami # 我是谁? sudo command # 以 root 跑一条命令 sudo su # 变身 root(exit 退出,慎用)

云端 GPU 实例上,你通常是唯一用户且已有 sudo 权限。别所有事都用 root 跑,需要时才用 sudo——这是 Unix 安全的基本功。

进程与 systemd

训练卡住或要查谁在跑时:

htop # 交互式进程查看器(q 退出) ps aux | grep python # 找运行中的 Python 进程 kill 12345 # 优雅停掉 PID 12345 的进程 kill -9 12345 # 强杀(优雅停不掉时用) nvidia-smi # GPU 进程与显存

systemd 管服务(后台守护进程),跑推理服务器时会用到:

sudo systemctl start nginx # 启动服务 sudo systemctl stop nginx # 停止 sudo systemctl restart nginx # 重启 sudo systemctl status nginx # 看运行状态 sudo systemctl enable nginx # 开机自启

磁盘空间

GPU 机器磁盘往往有限,模型与数据集很快塞满:

df -h # 所有挂载盘的用量 df -h /home # /home 的用量 du -sh * # 当前目录每项的大小 du -sh ~/.cache # 缓存大小(pip、HuggingFace 模型在这) du -sh /data/checkpoints/ # 你的 checkpoint 多大 # 找最大的空间占用 du -h --max-depth=1 / 2>/dev/null | sort -hr | head -20

常见省空间手段:

pip cache purge # 清 pip 缓存 sudo apt clean # 清 apt 缓存 rm -rf checkpoints/epoch_01/ checkpoints/epoch_02/ # 删旧 checkpoint

网络

你会从命令行下模型、传文件、调 API:

wget https://example.com/model.bin # 下文件 curl -O https://example.com/data.tar.gz # curl 同样下文件 curl -s https://api.example.com/health | python3 -m json.tool # 调 API,美化 JSON # 机器间传文件 scp model.bin user@remote:/data/ # 拷到远程 scp user@remote:/data/results.csv . # 从远程拷回 scp -r user@remote:/data/checkpoints/ ./local-dir/ # 拷目录 # 同步目录(大传输比 scp 快,断点续传) rsync -avz --progress ./data/ user@remote:/data/

💡 大传输用 rsync 不用 scp:rsync 只传变化的字节,且断网能续传;scp 每次全量重传。下几 GB 模型时差异巨大。

tmux:让会话活下去

SSH 进远程机器后,合上笔记本就杀了你的训练。tmux 防止这件事(详见第 10 节):

tmux new -s train # 起 "train" 会话 # 起训练,然后: # Ctrl+B 再按 D # 断开(训练继续跑) tmux ls # 列会话 tmux attach -t train # 重新接上

长训练任务,永远在 tmux 里跑。永远。

Windows 用户用 WSL2

Windows 用户用 WSL2 能得到真正的 Linux 环境,无需双系统:

# PowerShell(管理员) wsl --install -d Ubuntu-24.04 # 重启后从开始菜单开 Ubuntu sudo apt update && sudo apt upgrade -y

WSL2 跑真正的 Linux 内核,本节所有内容在其中都有效。Windows 文件在 WSL 里位于 /mnt/c/Users/你的名字/。GPU 透传靠 Windows 侧装的 NVIDIA 驱动(装 Windows 版,不装 Linux 版),CUDA 就能在 WSL2 里用。

三、框架对比:macOS 到 Linux 的迁移坑

从 macOS 过来会被这些细节绊住:

macOS Linux 说明
brew install sudo apt install 包名偶尔不同,如 readline 在 macOS 是 readline,Linux 是 libreadline-dev
open file.txt xdg-open file.txt 远程机器没 GUI,用 catless
pbcopy/pbpaste SSH 下没有剪贴板管道
~/.zshrc ~/.bashrc macOS 默认 zsh,多数 Linux 服务器用 bash
/opt/homebrew/ /usr/bin//usr/local/bin/ 二进制位置不同
sed -i '' 's/a/b/' file sed -i 's/a/b/' file macOS 的 sed 在 -i 后要空串,Linux 不要
不区分大小写文件系统 区分大小写 Model.pymodel.py 在 Linux 上是两个文件
行尾 \n 行尾 \n 相同;但 Windows 用 \r\n 会破坏 bash 脚本,跑 dos2unix 修复

⚠️ 设计警示:大小写敏感是最坑 macOS 用户的点。本地能跑、push 到 Linux 服务器就 ModuleNotFoundError,九成是文件名大小写不一致——本地不区分所以「能跑」,Linux 区分就找不到。养成严格区分大小写的习惯。

四、可复用产物

本节产出一组速查(原课程无独立产物文件,内容已在本节):

  • Linux 命令速查卡:导航(pwd/ls/cd/find)、文件(cp/mv/rm/mkdir/cat/head/tail/less)、搜索(grep/find)、权限(chmod/chown/sudo)、包(apt update/install)、进程(htop/ps/kill/nvidia-smi)、服务(systemctl)、磁盘(df -h/du -sh)、网络(curl/wget/scp/rsync)、会话(tmux)。贴在桌面随时查。

五、练习

  1. (Easy) SSH 进任意 Linux 机器(或开 WSL2),导航到家目录,建一个项目文件夹,用 touch 在里面建三个空文件,用 ls -la 列出。
  2. (Medium) 用 apt 装 htop,运行它,找出最占内存的进程;再起一个 tmux 会话,在里面跑 sleep 300,断开、列会话、重新接上;最后用 df -h 看磁盘,du -sh ~/.cache/* 看缓存占了多少。
  3. (Hard)scp 把一个本地文件传到远程,再用 rsync -avz --progress 传同一文件,对比体验;然后写一个一键初始化新 GPU 机器的 shell 脚本(装 build-essential/git/tmux/htop/python3-venv,配好 SSH 密钥,装 uv 与 PyTorch),让新机器开机就能跑训练。

本节要点回顾

  1. AI 大多跑在 Linux:SSH 进云端 GPU 你落地的是 Ubuntu,终端是唯一界面,不懂就被卡住、白付 GPU 钱。
  2. 单根树文件系统:一切在 / 下,家目录是 ~,外接盘挂 /mnt/media
  3. 15 条命令覆盖 95%:导航(ls/cd/pwd)、文件(cp/mv/rm/mkdir)、读文件(cat/head/tail/less)、搜索(grep/find)。
  4. rm -rf 永久无撤销:回车前再三确认路径,远程服务器最高频灾难。
  5. 权限三件套:chmod(改权限)、chown(改属主)、sudo(临时 root);Permission denied 几乎都是权限问题。
  6. apt 装系统包:sudo apt update 永远先做;新 GPU 机器有一套标准初始化命令。
  7. 大传输用 rsync:只传变化字节、断点续传,远胜 scp
  8. 长训练永远在 tmux 里:合笔记本、断网都不杀进程。
  9. macOS→Linux 坑:大小写敏感(最坑)、包名不同、sed 语法差异、bash 而非 zsh、行尾符。

下一节,我们将进入「调试与性能分析」——为本章收尾,把训练出错时的排查与代码提速的工程方法补齐。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U