目录
0) df:看磁盘/文件系统空间(Disk Free) df:看磁盘/文件系统空间(Disk Free))
[df vs du:别混了(一个看"盘",一个看"目录/文件")](#df vs du:别混了(一个看“盘”,一个看“目录/文件”))
1) 目录与文件操作(最基础但最常用) 目录与文件操作(最基础但最常用))
[touch:创建空文件 / 更新时间戳](#touch:创建空文件 / 更新时间戳)
[mv:移动 / 重命名](#mv:移动 / 重命名)
2) 查看文件内容与编辑辅助(日志党必备) 查看文件内容与编辑辅助(日志党必备))
[head / tail:看开头/结尾](#head / tail:看开头/结尾)
3) 搜索与过滤(文本处理神器) 搜索与过滤(文本处理神器))
4) 进程与系统排查("为什么卡住了?") 进程与系统排查(“为什么卡住了?”))
[top / htop:实时看 CPU/MEM](#top / htop:实时看 CPU/MEM)
5) 网络与下载("服务器通不通?文件怎么拉?") 网络与下载(“服务器通不通?文件怎么拉?”))
6) 权限与用户(Linux 的"结界系统") 权限与用户(Linux 的“结界系统”))
7) 压缩与解压(传模型/传数据必备) 压缩与解压(传模型/传数据必备))
[zip/unzip:zip 格式](#zip/unzip:zip 格式)
8) 环境与命令定位("我的 python 到底是哪一个?") 环境与命令定位(“我的 python 到底是哪一个?”))
9) 磁盘/硬件/挂载(运维常用) 磁盘/硬件/挂载(运维常用))
10) 一条"日常最常用排错组合拳"(训练/部署特别好用) 一条“日常最常用排错组合拳”(训练/部署特别好用))
做开发、跑训练、上服务器排错,Linux 命令就像"随身多功能瑞士军刀":不一定天天用到每一把,但真出事的时候,手里没刀会很难受。
这篇把 排查运行时进程问题 讲清楚,再给你一份 日常最高频命令清单,每条都带示例,偏"真正在终端里能救命"的用法。最后附一条训练/部署常用的"组合拳"监控命令。
0) df:看磁盘/文件系统空间(Disk Free)
df 用来查看 文件系统维度 的空间使用情况:每个挂载点(/、/home、/dev/shm ...)的 总容量、已用、可用、使用率。
最常用:人类可读显示
df -h
-h:human-readable(GB/MB 显示,更直观)
典型输出(示例):
Filesystem Size Used Avail Use% Mounted on
/dev/nvme0n1p2 200G 120G 70G 64% /
tmpfs 32G 1.2G 31G 4% /dev/shm
只看某个路径属于哪个分区、剩多少空间
df -h /home
df -h /dev/shm
这个特别实用:你看到"目录没剩多少空间",先确认它到底挂在哪个分区上。
显示文件系统类型(排查挂载/容器环境很有用)
df -Th
-
-T:显示类型(ext4 / xfs / tmpfs / overlay 等) -
-h:依然人类可读
df vs du:别混了(一个看"盘",一个看"目录/文件")
| 命令 | 看的是什么 | 常见用途 |
|---|---|---|
df |
文件系统/挂载点 总量、剩余 | "这块盘快满了吗?""/dev/shm 还够吗?" |
du |
目录/文件 实际占用 | "到底是谁把空间吃掉了?" |
1) 目录与文件操作(最基础但最常用)
pwd:显示当前目录
pwd
ls:列出文件
ls -lh # 详细 + 人类可读大小
ls -a # 显示隐藏文件(.开头)
cd:切换目录
cd /opt/data
cd .. # 上一级
cd ~ # 家目录
mkdir:创建目录
mkdir logs
mkdir -p a/b/c # 递归创建(中间不存在也能建)
touch:创建空文件 / 更新时间戳
touch train.log
cp:复制
cp a.txt b.txt
cp -r dir1 dir2 # 复制目录
mv:移动 / 重命名
mv old.py new.py
mv file.txt /tmp/
rm:删除(⚠️不可恢复)
rm file.txt
rm -r folder
rm -rf folder # 强制递归删除(非常危险)
小建议:在不确定路径时,先 ls 看一下;删除目录前先 pwd 确认自己没在奇怪的位置(真实事故高发区)。
2) 查看文件内容与编辑辅助(日志党必备)
cat:输出文件内容
cat config.yaml
less:分页查看(强烈推荐)
less train.log
# /关键词 搜索,n 下一个,q 退出
head / tail:看开头/结尾
head -n 20 train.log
tail -n 100 train.log
tail -f train.log # 持续追踪日志(看训练进度/报错很爽)
wc:统计行数/单词数/字节数
wc -l train.log # 行数
3) 搜索与过滤(文本处理神器)
grep:按关键词筛选
grep "error" train.log
grep -n "OOM" train.log # 带行号
grep -r "TODO" ./src # 递归搜索
find:按条件找文件
find . -name "*.py"
find /opt/data -type f -size +100M
(排查磁盘爆炸时:找大文件一把梭)
awk:按列处理(日志/表格/进程输出常用)
ps aux | awk '{print $2, $11}' | head
这里示例是:从 ps aux 输出里抓 PID 和 命令列。
sed:文本替换
sed -i 's/old/new/g' file.txt
-i:原地修改(建议重要文件先备份:cp file.txt file.txt.bak)
4) 进程与系统排查("为什么卡住了?")
ps:看进程
ps aux | grep python
补充:
1. aux 是一种常用的"全量模式":
-
a:显示所有用户的进程(不仅仅是你当前终端的) -
u:用"用户友好"的格式显示(带 USER/CPU/MEM/COMMAND 等列) -
x:也显示没有绑定终端的进程(后台/守护进程等)
- **"|"**是什么:把输出接到下一个命令
最经典理解:
cmd1 | cmd2 | cmd3
-
cmd1负责"产出文本" -
cmd2负责"过滤/处理" -
cmd3负责"汇总/展示"
top / htop:实时看 CPU/MEM
top
htop 更好用(交互强),但可能需要安装。
kill:结束进程
kill 12345 # SIGTERM(较温和,给进程收尾机会)
kill -9 12345 # SIGKILL(强制,最后手段)
free:看内存
free -h
df:看磁盘(前面讲了)
df -h
du:看目录/文件占用空间(找"谁占了我硬盘")
du -sh * | sort -h
du -sh /opt/data/*
5) 网络与下载("服务器通不通?文件怎么拉?")
ping:连通性测试
ping -c 4 8.8.8.8
curl:请求/下载(万能)
curl -I https://example.com
curl -L -o file.zip https://example.com/file.zip
-
-I:只看响应头(判断是否 200、是否跳转) -
-L:跟随跳转(很多下载链接需要)
wget:下载
wget https://example.com/file.zip
ssh:远程登录
ssh user@server-ip
scp:拷贝文件(本地↔远程)
scp local.txt user@server:/tmp/
scp user@server:/tmp/a.log .
6) 权限与用户(Linux 的"结界系统")
chmod:改权限
chmod +x run.sh # 让脚本可执行
chmod 644 file.txt # 常见:rw-r--r--
chown:改归属
sudo chown -R amax:amax /opt/data/project
sudo:以管理员权限运行
sudo apt update
7) 压缩与解压(传模型/传数据必备)
tar:打包/解包
tar -czf code.tar.gz ./src # 压缩
tar -xzf code.tar.gz # 解压
zip/unzip:zip 格式
unzip data.zip
8) 环境与命令定位("我的 python 到底是哪一个?")
echo:打印变量/文本
echo $PATH
env:看环境变量
env | grep CUDA
which:命令在哪
which python
which nvidia-smi
history:历史命令
history | tail
9) 磁盘/硬件/挂载(运维常用)
lsblk:看磁盘/分区结构
lsblk
mount:查看挂载
mount | grep shm
uname:系统内核信息
uname -a
10) 一条"日常最常用排错组合拳"(训练/部署特别好用)
做训练/部署最怕"悄悄炸掉":GPU OOM、CPU 内存顶满、磁盘写爆、/dev/shm 不够导致 DataLoader 抽风......这条命令一眼全看完:
watch -n 1 "nvidia-smi; echo '---'; free -h; echo '---'; df -h / /dev/shm"
-
watch -n 1:每 1 秒刷新一次 -
nvidia-smi:GPU 显存/利用率 -
free -h:内存 -
df -h / /dev/shm:根分区 + 共享内存(很多训练容器/多进程加载会踩它)
结尾:你可以怎么"用这套命令打穿日常"
一个很实用的习惯是:先总览(df/free/top),再定位元凶(du/find/grep),最后处理(kill/rm/mv/chown/chmod) 。排障就像侦探推理,别一上来就"删库跑路"(rm -rf)------先锁定嫌疑人再动手。
你接下来如果要写"AI 训练/部署工程师命令速查表",可以按这几个高频场景扩展:
-
GPU 排查:显存碎片、进程占用、卡死定位
-
OOM 定位:CPU OOM vs GPU OOM、谁在疯狂吃内存
-
DataLoader 卡死:
/dev/shm、文件句柄、网络盘延迟 -
端口占用:服务起不来时一眼找到谁占了端口
-
Docker/容器:overlay 文件系统空间、日志、挂载