Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

附录 C:Linux 基础

北京大学光华管理学院

本附录介绍运行课程代码所需的 Linux 和命令行(command line)基础。很多 AI 工具、服务器、集群和开源包都默认在 Linux 环境中运行;现代 LLM 和预测模型的实践也经常需要在命令行中管理环境、模型文件和实验脚本 Alammar & Grootendorst, 2024。你不需要掌握系统管理,但需要会登录服务器、移动文件、查看目录、运行 Python 和理解基本管道命令。

学习目标

完成本附录后,你应该能够:

为什么要学 Linux

Linux 是大量服务器、集群和 AI 工具的默认运行环境。课程中的 notebook 可以在本地运行,但当你需要 GPU、大内存或长时间任务时,通常会进入 Linux 服务器或集群。

命令行看起来不如图形界面直观,但它有三个优势:

预测项目里常见错误往往不是模型公式错,而是当前目录不对、数据文件不在预期位置、Python 环境不一致,或输出被写到了另一个文件夹。Linux 基础的主线就是路径、文件和环境;可复现的时间序列分析同样依赖这种清楚的数据、代码和输出组织 Hyndman & Athanasopoulos, 2021

我们用计算机历史解释为什么 AI 时代又需要命令行。早期计算机是大型机,后来个人电脑和图形界面让很多操作变成鼠标点击;但当数据、模型和算力重新回到集群和服务器上时,批量操作又变得重要。你不可能用鼠标点击一万次来处理一万个文件,也不可能靠本地笔记本完成所有深度学习任务。终端是你和服务器、集群、脚本和 AI 工具对话的接口。

个人 AI 设备也说明了这一点。设备连上显示器后看起来像一台普通 Linux 电脑,但真正运行模型、安装包、查看 GPU 状态、复制课程命令和远程访问,仍然主要通过 Terminal 完成。未来无论使用学校集群、云服务器、实验室工作站还是本地 AI 盒子,Linux 命令行都会是最稳定的操作入口。

如何获得 Linux 环境

Windows 10+ 用户可以使用 WSL(Windows Subsystem for Linux)安装 Ubuntu 或 Debian,也可以使用 Windows Terminal 登录远程服务器。

macOS 用户的 Terminal 与 Linux 命令非常接近,可以直接练习大部分命令。

课程中需要较大计算资源时,可以使用 PKU 集群或其他 Linux 服务器。

AI 预测任务可能从本地 notebook 开始,但训练深度模型、调用批量任务或处理大量文件时,命令行会变成主要工作界面。会用 pwdlscdpython -m pip 和日志重定向,能显著减少环境排查时间。

我们把命令行称为你和服务器、AI 工具对话的界面。Windows 用户如果没有 Terminal,可以打开 Microsoft Store,搜索 Terminal,安装 Windows Terminal。安装后先输入:

ssh

如果终端打印出用法说明,说明 SSH 命令可用;如果提示找不到命令,先解决终端工具问题,再尝试登录集群。

登录服务器

SSH 命令的一般形式是:

ssh 用户名@服务器地址

例如:

ssh 2512345678@wm2-login.pku.edu.cn

其中 2512345678 是你的远程用户名,后面是服务器地址。输入密码时终端通常不会显示字符,这是正常的。集群环境还可能要求 OTP 动态验证码。

查看当前位置

登录后先确认自己在哪里:

whoami
pwd
ls
ls -htla

含义分别是:

$HOME 是你的用户主目录:

echo $HOME

目录切换

使用 cd 切换目录:

cd project
cd ..
cd

cd .. 回到上一级目录,单独输入 cd 回到主目录。路径理解是 Linux 文件系统的核心基础。运行 notebook、安装包和读取数据时,很多错误都来自当前目录不对。

文件操作

创建空文件:

touch hello.txt

创建目录:

mkdir hello_linux

移动或重命名:

mv hello.txt notes.txt

删除文件:

rm notes.txt

删除目录要格外小心:

rm -r hello_linux

不要随便使用 rm -rf,尤其不要在不确认路径时删除目录。课程作业中通常不需要强制删除。

查看文件

常见查看命令:

cat file.txt
less file.txt
head file.txt
tail file.txt
wc file.txt

大文件不要直接用 cat 全部打印。先用 headtail 查看开头和结尾;如果想像滚动页面一样查看,可以用 less file.txt,进入后用方向键或翻页键移动,按 q 退出。

ls -htla 是一个常用组合。h 让文件大小更容易读,t 按时间排序,l 使用长列表格式,a 显示隐藏文件。长列表最左侧会显示权限:第一个字符 d 表示目录;rwx 分别表示可读、可写、可执行。权限通常按“所有者、同组用户、其他用户”三组展示。

编辑文件

服务器上常见编辑器包括:

初学者可以先用:

nano notes.txt

保存和退出按屏幕底部提示操作。nano 底部的 ^X 表示按 Ctrl+X;退出时如果询问是否保存,输入 Y 表示保存,确认文件名后回车即可。它可以理解为服务器上的极简记事本,适合改小脚本、配置和笔记。

运行 Python

在终端中查看 Python 版本:

python --version
python -c "import sys; print(sys.executable)"

在本地、Anaconda、Jupyter 和远程服务器之间切换时,最常见的问题是“以为自己在一个 Python 里安装包,实际 notebook 用的是另一个 Python”。所以每次排查环境问题时,都先运行上面的 sys.executable 检查路径,再用同一个解释器执行安装命令:

python -m pip install nixtla

运行脚本:

python script.py

注意区分系统终端和 Python 解释器。普通终端提示符常见形式是 $ 或包含用户名、主机名的字符串;进入 Python 后通常会看到 >>>。如果你在 >>> 后输入 ls,Python 会把它当成 Python 代码而不是 Linux 命令。退出 Python 可以输入 exit(),回到终端后再运行文件操作命令。

如果 .py 文件里只写了一个表达式,运行脚本时不一定会显示结果。想看到输出,应使用 print()

print(3 + 4)

安装包建议使用:

python -m pip install pandas

这样可以减少 pippython 不属于同一环境的问题。

查看 GPU 或本地 AI 设备状态时,不同平台命令可能不同。英伟达环境常见命令是 nvidia-smi,新型本地设备还可能提供自己的 dashboard 或系统监控工具。不要只看“有 GPU”三个字;还要看当前进程、温度、功耗、可用内存和是否已有别人在运行任务。运行深度学习 notebook 前,先确认资源状态,可以减少中途失败和互相抢资源。

标准输入、输出和错误

Linux 中很多程序把结果写到标准输出 stdout,把错误或状态信息写到标准错误 stderr。默认情况下,它们都会显示在屏幕上。

可以把输出保存到文件:

ls -l /usr/bin > ls-output.txt

追加输出:

ls -l /usr/bin >> ls-output.txt

保存错误信息:

ls -l /bin/usr 2> ls-error.txt

这些机制对保存实验日志很有用。

管道

管道把一个命令的输出交给下一个命令:

ls -l /usr/bin | wc
ls /bin /usr/bin | sort | head

常见管道工具包括:

预测项目中,管道常用于查看日志、统计文件数量、筛选错误信息。

例如用 wc 统计输出行数,用 grep 筛选错误,用 tail 查看最新日志,用 >>> 保存结果。这些命令帮助你把一次手工运行变成可复查的实验记录。

上传和下载

图形化工具可以使用 FileZilla。熟悉命令行后,可以使用:

scp local.csv 用户名@服务器地址:~/project/
rsync -av data/ 用户名@服务器地址:~/project/data/

传输前确认文件不含密码、API key 或敏感数据。

获取帮助

查看命令手册:

man mkdir
mkdir --help

如果不知道命令是否会修改文件,先读帮助或在测试目录中练习。

小结

Linux 基础的目标不是背命令,而是理解文件、路径、环境和输入输出。预测项目中,绝大多数服务器问题都可以归结为:你在哪个目录,用哪个 Python,读哪个文件,把输出写到了哪里。

练习

  1. 登录服务器后运行 whoamipwdls -htla

  2. 创建目录 forecasting_practice,进入目录并创建 hello.py

  3. hello.py 中写一行 print("hello forecasting"),并用 Python 运行。

  4. ls -htla 的输出保存到 files.txt

  5. 使用管道统计当前目录中文件列表的行数。

参考文献

References
  1. Alammar, J., & Grootendorst, M. (2024). Hands-On Large Language Models: Language Understanding and Generation. O’Reilly Media.
  2. Hyndman, R. J., & Athanasopoulos, G. (2021). 预测:方法与实践. OTexts. https://otexts.com/fpp3cn/