深度学习必备:Linux 常用命令完全指南
命令全称主要用途ls -lhList查看文件列表cd切换目录pwd显示当前路径mkdir -p创建目录rm -rfRemove删除文件/目录cp -rCopy复制mvMove移动/重命名cat查看文件tail -fTail实时查看日志grep搜索文本ps aux查看进程killKill终止进程df -hDisk Free查看磁盘空间du -shDisk Usage查看目录大小nvidia-smiG
在深度学习训练过程中,我们经常需要在 Linux 服务器上进行各种操作。本文将详细介绍最常用的 Linux 命令,特别是那些在跑模型时经常用到的命令,并解释每个命令的缩写含义。
一、文件和目录操作
1. ls - 列出目录内容
缩写含义: List(列出)
# 基本用法
ls
# 显示详细信息(常用)
ls -l
# -l: long format(长格式)
# 显示所有文件(包括隐藏文件)
ls -a
# -a: all(全部)
# 人类可读的文件大小
ls -lh
# -h: human-readable(人类可读)
# 按修改时间排序
ls -lt
# -t: time(时间)
# 组合使用(最常用)
ls -lhta
深度学习场景示例:
# 查看模型文件大小
ls -lh *.pth
ls -lh checkpoints/
# 查看最近修改的日志文件
ls -lt logs/*.log
2. cd - 切换目录
缩写含义: Change Directory(改变目录)
# 进入指定目录
cd /path/to/directory
# 返回上一级目录
cd ..
# 返回上两级目录
cd ../..
# 返回家目录
cd ~
cd
# 返回上一次所在目录
cd -
3. pwd - 显示当前路径
缩写含义: Print Working Directory(打印工作目录)
pwd
# 输出类似: /home/user/projects/deep-learning
4. mkdir - 创建目录
缩写含义: Make Directory(创建目录)
# 创建单个目录
mkdir new_folder
# 创建多级目录
mkdir -p data/train/images
# -p: parents(父目录)- 自动创建中间目录
# 创建多个目录
mkdir logs checkpoints outputs
深度学习场景示例:
# 创建项目结构
mkdir -p project/{data/{train,val,test},models,logs,checkpoints}
二、文件删除命令(重点)
1. rm - 删除文件
缩写含义: Remove(移除)
# 删除单个文件
rm file.txt
# 删除多个文件
rm file1.txt file2.txt file3.txt
# 删除目录及其内容(危险!)
rm -r directory/
# -r: recursive(递归)
# 强制删除(不询问确认)
rm -f file.txt
# -f: force(强制)
# 组合使用:强制递归删除
rm -rf directory/
# 这是最危险但最常用的组合!
# 删除前确认
rm -i file.txt
# -i: interactive(交互式)
# 详细显示删除过程
rm -v file.txt
# -v: verbose(详细)
深度学习场景示例:
# 删除旧的模型检查点
rm checkpoints/epoch_*.pth
# 删除训练失败的输出
rm -rf outputs/failed_experiment/
# 删除所有临时文件
rm -f *.tmp
rm -f temp_*
# 删除大型缓存文件
rm -rf __pycache__/
rm -rf .ipynb_checkpoints/
# 谨慎!删除所有 .pth 文件前先列出查看
ls *.pth
rm *.pth
⚠️ 删除命令注意事项:
rm -rf /会删除整个系统!永远不要执行!- 删除前用
ls先查看要删除的文件 - 重要文件删除前先备份
- 使用
-i参数可以在删除前确认 - Linux 没有回收站,删除即永久删除
2. rmdir - 删除空目录
缩写含义: Remove Directory(移除目录)
# 只能删除空目录
rmdir empty_folder/
# 删除多级空目录
rmdir -p a/b/c/
# -p: parents(父目录)
三、文件复制和移动
1. cp - 复制文件
缩写含义: Copy(复制)
# 复制文件
cp source.txt destination.txt
# 复制目录
cp -r source_dir/ dest_dir/
# -r: recursive(递归)
# 保留文件属性
cp -p file.txt backup.txt
# -p: preserve(保留)
# 复制时显示进度
cp -v file.txt dest/
# -v: verbose(详细)
# 强制覆盖
cp -f source.txt dest.txt
# -f: force(强制)
深度学习场景示例:
# 备份模型
cp best_model.pth best_model_backup.pth
# 复制整个实验结果
cp -r experiments/exp001/ experiments/exp001_backup/
# 复制数据集到本地
cp -r /shared/datasets/imagenet/ ./data/
2. mv - 移动/重命名文件
缩写含义: Move(移动)
# 移动文件
mv source.txt destination/
# 重命名文件
mv old_name.txt new_name.txt
# 移动多个文件
mv file1.txt file2.txt file3.txt destination/
# 强制覆盖
mv -f source.txt dest.txt
# -f: force(强制)
# 不覆盖已存在文件
mv -n source.txt dest.txt
# -n: no-clobber(不覆盖)
深度学习场景示例:
# 重命名模型文件
mv model.pth model_epoch_100.pth
# 整理实验结果
mv experiment_* ./archive/
# 移动日志文件
mv *.log logs/
四、文件查看命令
1. cat - 查看文件内容
缩写含义: Catenate(连接)
# 查看文件
cat file.txt
# 查看多个文件
cat file1.txt file2.txt
# 显示行号
cat -n file.txt
# -n: number(编号)
深度学习场景示例:
# 查看训练日志
cat training.log
# 查看配置文件
cat config.yaml
2. less - 分页查看文件
含义: 比 more 更好的查看工具
# 分页查看(可上下滚动)
less large_file.log
# 常用快捷键:
# 空格键: 下一页
# b: 上一页
# /pattern: 搜索
# q: 退出
3. head / tail - 查看文件开头/结尾
含义: Head(头部)/ Tail(尾部)
# 查看前 10 行
head file.txt
# 查看前 20 行
head -n 20 file.txt
# -n: number(行数)
# 查看后 10 行
tail file.txt
# 查看后 50 行
tail -n 50 file.txt
# 实时查看文件更新(最常用!)
tail -f training.log
# -f: follow(跟随)
深度学习场景示例:
# 实时监控训练日志
tail -f logs/train.log
# 查看最近的训练记录
tail -n 100 training.log
# 查看错误日志开头
head -n 50 error.log
4. grep - 搜索文本
缩写含义: Global Regular Expression Print(全局正则表达式打印)
# 搜索包含关键词的行
grep "keyword" file.txt
# 忽略大小写
grep -i "keyword" file.txt
# -i: ignore case(忽略大小写)
# 显示行号
grep -n "keyword" file.txt
# -n: number(行号)
# 递归搜索目录
grep -r "keyword" directory/
# -r: recursive(递归)
# 反向匹配(不包含关键词的行)
grep -v "keyword" file.txt
# -v: invert(反转)
# 统计匹配行数
grep -c "keyword" file.txt
# -c: count(计数)
深度学习场景示例:
# 搜索训练日志中的错误
grep -i "error" training.log
# 查找所有损失值
grep "loss" training.log
# 搜索最佳准确率
grep "best accuracy" logs/*.log
# 统计 epoch 数量
grep -c "Epoch" training.log
# 查找包含 CUDA 错误的行
grep -n "CUDA" error.log
五、进程管理命令
1. ps - 查看进程
缩写含义: Process Status(进程状态)
# 查看当前用户进程
ps
# 查看所有进程
ps aux
# a: all(所有)
# u: user-oriented(面向用户)
# x: 包括没有控制终端的进程
# 查看特定进程
ps aux | grep python
深度学习场景示例:
# 查找 Python 训练进程
ps aux | grep python
# 查找 TensorFlow 进程
ps aux | grep tensorflow
# 查看 GPU 进程
ps aux | grep cuda
2. top / htop - 实时监控系统
含义: Top(顶部)显示最耗资源的进程
# 实时查看系统状态
top
# 更友好的界面(需要安装)
htop
# 常用快捷键(top):
# P: 按 CPU 使用率排序
# M: 按内存使用率排序
# k: 终止进程
# q: 退出
3. kill - 终止进程
含义: Kill(杀死)
# 终止进程(需要进程 ID)
kill 12345
# 强制终止
kill -9 12345
# -9: SIGKILL(最强终止信号)
# 按名称终止进程
pkill python
# pkill: process kill(进程终止)
# 终止所有匹配的进程
killall python
深度学习场景示例:
# 找到训练进程 PID
ps aux | grep train.py
# 终止训练进程
kill 12345
# 强制终止卡住的训练
kill -9 12345
# 终止所有 Python 进程(危险!)
pkill -9 python
4. nohup - 后台运行命令
缩写含义: No Hangup(不挂起)
# 后台运行,输出到 nohup.out
nohup python train.py &
# 指定输出文件
nohup python train.py > output.log 2>&1 &
# 2>&1: 将错误输出重定向到标准输出
# 查看后台任务
jobs
# 将后台任务调到前台
fg
深度学习场景示例:
# 后台训练模型
nohup python train.py --epochs 100 > train.log 2>&1 &
# 查看训练日志
tail -f train.log
# 后台运行多个实验
nohup python exp1.py > exp1.log 2>&1 &
nohup python exp2.py > exp2.log 2>&1 &
六、磁盘和空间管理
1. df - 查看磁盘空间
缩写含义: Disk Free(磁盘空闲)
# 查看所有磁盘
df
# 人类可读格式
df -h
# -h: human-readable(人类可读)
# 查看特定目录所在磁盘
df -h /home
2. du - 查看目录大小
缩写含义: Disk Usage(磁盘使用)
# 查看当前目录大小
du -sh .
# -s: summary(摘要)
# -h: human-readable(人类可读)
# 查看子目录大小
du -h --max-depth=1
# 查看最大的文件/目录
du -h | sort -rh | head -n 10
深度学习场景示例:
# 检查数据集大小
du -sh datasets/
# 查看各个实验占用空间
du -h --max-depth=1 experiments/
# 找出最大的模型文件
du -h checkpoints/ | sort -rh | head -n 10
# 检查日志文件占用
du -sh logs/
3. find - 查找文件
含义: Find(查找)
# 按名称查找
find . -name "*.pth"
# 按大小查找(大于 1GB 的文件)
find . -size +1G
# 按修改时间查找(7 天前)
find . -mtime +7
# 查找并删除
find . -name "*.tmp" -delete
深度学习场景示例:
# 查找所有模型文件
find . -name "*.pth"
# 查找大型数据文件
find ./data -size +1G
# 查找旧的日志文件并删除
find ./logs -name "*.log" -mtime +30 -delete
# 查找所有配置文件
find . -name "config.yaml"
七、GPU 监控命令(深度学习专用)
nvidia-smi - GPU 状态监控
缩写含义: NVIDIA System Management Interface
# 查看 GPU 状态
nvidia-smi
# 持续监控(每 1 秒刷新)
watch -n 1 nvidia-smi
# watch: 定期执行命令
# -n: 间隔秒数
# 只显示 GPU 使用率
nvidia-smi --query-gpu=utilization.gpu --format=csv
# 查看特定 GPU
nvidia-smi -i 0
常用技巧:
# 查看哪个进程占用 GPU
nvidia-smi
# 监控训练时 GPU 使用
watch -n 0.5 nvidia-smi
# 设置使用特定 GPU
CUDA_VISIBLE_DEVICES=0,1 python train.py
八、文件压缩和解压
tar - 打包文件
缩写含义: Tape Archive(磁带归档)
# 打包并压缩(最常用)
tar -czvf archive.tar.gz directory/
# -c: create(创建)
# -z: gzip(压缩)
# -v: verbose(详细)
# -f: file(文件)
# 解压
tar -xzvf archive.tar.gz
# -x: extract(解压)
# 查看压缩包内容
tar -tzvf archive.tar.gz
# -t: list(列出)
深度学习场景示例:
# 打包数据集
tar -czvf imagenet_train.tar.gz data/train/
# 打包实验结果
tar -czvf experiment_results.tar.gz outputs/ logs/ checkpoints/
# 解压预训练模型
tar -xzvf pretrained_models.tar.gz
# 打包代码和模型
tar -czvf submission.tar.gz *.py models/ requirements.txt
zip / unzip - ZIP 压缩
# 压缩文件
zip archive.zip file1 file2
# 压缩目录
zip -r archive.zip directory/
# -r: recursive(递归)
# 解压
unzip archive.zip
# 解压到指定目录
unzip archive.zip -d destination/
九、系统信息查看
1. free - 查看内存
含义: Free(空闲内存)
# 查看内存使用
free -h
# -h: human-readable(人类可读)
2. uname - 系统信息
缩写含义: Unix Name(Unix 名称)
# 查看系统信息
uname -a
# -a: all(全部信息)
十、实用技巧和组合命令
管道符 | 的使用
# 查找并计数
ls | wc -l
# wc: word count(词数统计)
# -l: lines(行数)
# 搜索并排序
grep "loss" train.log | sort
# 查看最大的文件
du -h | sort -rh | head -n 10
深度学习常用组合
# 1. 监控训练进度
tail -f train.log | grep "Epoch"
# 2. 统计数据集文件数
ls data/train/ | wc -l
# 3. 批量重命名文件
for i in *.jpg; do mv "$i" "img_$i"; done
# 4. 清理临时文件
find . -name "*.pyc" -delete
find . -name "__pycache__" -type d -exec rm -rf {} +
# 5. 监控 GPU 和训练
watch -n 1 'nvidia-smi && tail -n 20 train.log'
# 6. 查找占用 GPU 的进程
ps aux | grep python | grep -v grep
# 7. 批量杀死训练进程
ps aux | grep train.py | awk '{print $2}' | xargs kill
# 8. 备份重要文件
cp -r checkpoints/ checkpoints_backup_$(date +%Y%m%d)/
# 9. 快速创建实验目录
mkdir -p exp_$(date +%Y%m%d_%H%M%S)/{logs,checkpoints,outputs}
# 10. 查看最新的模型文件
ls -lt checkpoints/*.pth | head -n 5
总结
最常用的命令速查表
| 命令 | 全称 | 主要用途 |
|---|---|---|
ls -lh |
List | 查看文件列表 |
cd |
Change Directory | 切换目录 |
pwd |
Print Working Directory | 显示当前路径 |
mkdir -p |
Make Directory | 创建目录 |
rm -rf |
Remove | 删除文件/目录 |
cp -r |
Copy | 复制 |
mv |
Move | 移动/重命名 |
cat |
Concatenate | 查看文件 |
tail -f |
Tail | 实时查看日志 |
grep |
Global Regular Expression Print | 搜索文本 |
ps aux |
Process Status | 查看进程 |
kill |
Kill | 终止进程 |
df -h |
Disk Free | 查看磁盘空间 |
du -sh |
Disk Usage | 查看目录大小 |
nvidia-smi |
NVIDIA System Management Interface | GPU 监控 |
深度学习训练必备命令
# 开始训练
nohup python train.py > train.log 2>&1 &
# 监控训练
tail -f train.log
# 监控 GPU
watch -n 1 nvidia-smi
# 查找进程
ps aux | grep python
# 终止训练
kill -9 [PID]
# 检查磁盘空间
df -h
du -sh checkpoints/
# 清理缓存
rm -rf __pycache__/ .ipynb_checkpoints/
# 备份模型
cp best_model.pth best_model_$(date +%Y%m%d).pth
记住这些命令,你就能在 Linux 服务器上高效地进行深度学习训练了!建议将常用命令整理成自己的脚本,提高工作效率。
更多推荐
所有评论(0)