
使用 Linux 服务器的一些常用命令在 GPU 服务器上做训练、跑实验或排查问题时高频命令通常集中在进程、显存、磁盘、日志和终端会话几个方向。本文按实战场景整理常用命令假设你通过 SSH 连接 Ubuntu/Debian 服务器并且大部分操作不需要 sudo。一、ps — 查看进程ps是排查“这个训练还在不在跑”“谁占了资源”的基础命令。# 查看某个进程是否还在以及运行了多久ps-p41821-opid,etime,cmd# 示例输出# PID ELAPSED CMD# 41821 03:12:45 python train.py --batch_size 64常用字段解释pid进程 IDetime进程运行时长例如03:12:45cmd启动该进程的完整命令%cpuCPU 使用率%mem内存使用率user进程所属用户# 查看所有 python 相关进程psaux|grep[p]ython# 查看谁在占用 GPU配合 nvidia-smi 的 PID 使用nvidia-smips-pPID-opid,user,etime,cmd# 按内存占用排序快速找到吃内存的进程ps-eopid,user,%cpu,%mem,etime,cmd--sort-%mem|head-10grep [p]ython的小技巧可以避免 grep 自身也出现在结果里。如果还想看进程的父进程关系可以使用pstree-p41821二、nvidia-smi — GPU 状态GPU 服务器上最常用的命令就是nvidia-smi。# 基础查看显存、GPU 利用率、温度、进程等nvidia-smi# 每 2 秒实时刷新适合观察训练时资源变化watch-n2nvidia-smi# 按 CtrlC 退出如果你只需要看几个关键指标可以用--query-gpu输出精简表格# 查看显存占用、显存总量、GPU 利用率、温度nvidia-smi\--query-gpumemory.used,memory.total,utilization.gpu,temperature.gpu\--formatcsv示例输出大致如下memory.used [MiB], memory.total [MiB], utilization.gpu [%], temperature.gpu 24576, 81920, 98, 62如果想找哪些进程正在使用显卡显存# 查看占用 GPU 显存的进程nvidia-smi --query-compute-appspid,used_memory--formatcsv拿到 PID 后再回到ps查看它对应的脚本ps-pPID-opid,user,etime,cmd当 GPU 显示占用很高但你不确定是谁在跑时标准排查顺序是nvidia-smi→ 找到 PID →ps -p PID→ 看脚本名和启动命令。三、磁盘空间训练数据、checkpoint 和日志很容易占满磁盘。下面命令可以帮你定位空间被谁吃掉。# 查看各个磁盘分区的剩余空间df-h# -h 表示使用人类可读单位例如 100G、512Mdf看的是整个文件系统而du看的是某个目录实际占用。# 查看当前目录总共占多大du-sh.# 查看当前目录下各子目录大小并按大小降序排列du-sh*/|sort-rh|head-10# 查看训练输出目录占了多少空间du-sh/data/advance/runs_v2/*2/dev/null找大文件可以用find# 查找大于 1G 的文件并显示大小find/data-typef-size1G-execls-lh{}\;如果觉得上面的命令比较慢也可以用-printf输出更轻量# 查找 /data 下大于 1G 的文件按大小降序输出find/data-typef-size1G-printf%s %p\n|sort-rn|head-20如果服务器允许安装软件可以试试ncdu交互式查看目录体积会更直观ncdu /data四、tmux — 终端复用远程训练最怕 SSH 断开导致进程被杀。tmux可以创建一个独立于 SSH 连接的会话即使断开连接训练仍会继续运行。# 创建名为 train 的会话tmux new-strain# 列出所有会话tmuxls# 接入 train 会话tmux a-ttrain# 删除 train 会话tmux kill-session-ttrain会话内部的快捷键需要先按Ctrlb松开后再按第二个键。常用快捷键如下快捷键作用Ctrlb d脱离当前会话进程继续运行Ctrlb [进入滚屏模式按q退出Ctrlb c新建窗口Ctrlb n/Ctrlb p下一个 / 上一个窗口Ctrlb %左右分屏Ctrlb 上下分屏Ctrlb 方向键切换窗格Ctrlb x关闭当前窗格Ctrlb z当前窗格全屏 / 还原跑长时间训练时务必把任务放进tmux或nohup中。普通 SSH 会话一旦断开前台任务会被终止。五、监控与日志内存与 CPU# 查看系统内存free-h# 查看 CPU、内存、负载top# 更友好的进程管理器htop# 如果没有 ht op可尝试sudo apt install htoptop中需要关注的重点load average系统负载例如4.50, 5.10, 4.80%CPU进程 CPU 占用%MEM进程内存占用RES进程实际使用的物理内存终止进程# 温柔终止进程默认发送 SIGTERMkillPID# 强制终止进程只有普通 kill 无效时再使用kill-9PID# 按启动命令名批量终止pkill-fimprove.py使用pkill -f前最好先确认会匹配到哪些进程pgrep-afimprove.py查看日志# 实时跟进日志tail-ftrain.log# 查看日志最后 50 行tail-n50train.log# 查看日志前 20 行head-n20train.log如果日志文件可能被轮转替换使用tail -F会更可靠tail-Ftrain.log六、文件传输与远程操作在本地和服务器之间传模型权重、数据集和结果时常用scp与rsync。# 上传本地文件到服务器scp./local_model.pth userserver:/data/models/# 从服务器下载文件到本地scpuserserver:/data/runs/exp1/results.csv ./results.csv# 大目录或需要断点续传时使用 rsync 增量同步rsync-avP./runs_v2/ userserver:/data/advance/runs_v2/# 从服务器同步结果到本地rsync-avPuserserver:/data/runs_v2/results/ ./results/rsync参数说明-a归档模式保留权限、时间戳等-v显示详细信息-P显示进度并支持断点续传如果 SSH 端口不是默认的 22需要额外指定端口# scp 指定端口scp-P2222./file.txt userserver:/data/# rsync 指定端口rsync-avP-essh -p 2222./results/ userserver:/data/results/scp使用大写-Prsync使用小写-p/-P有不同的含义注意区分。七、后台任务nohup如果暂时不想使用tmux也可以使用nohup把任务放到后台。# 在后台启动训练输出写入 train.lognohuppython train.pytrain.log21各个部分含义nohup忽略挂断信号SSH 断开后任务继续运行 train.log标准输出写入train.log21标准错误也写入train.log后台运行记录进程 ID 方便后续管理# 将后台进程 PID 写入文件echo$!train.pid# 实时查看日志tail-ftrain.log# 根据 PID 结束训练kill$(cattrain.pid)八、综合排查流程当 GPU 卡顿、显存被占满或训练没有输出时可以按下面流程快速定位。是保留终止否nvidia-smi 查看 GPU 状态显存占用是否异常查询占用 GPU 的进程 PIDps -p PID 查看启动命令是否保留该进程tail -f 观察训练日志kill 或 pkill 结束进程watch -n 2 nvidia-smi 确认显存释放检查内存、CPU 和磁盘实际排查时通常只需要几条命令# 1. 看所有 GPU 进程nvidia-smi --query-compute-appspid,used_memory--formatcsv# 2. 根据 PID 查看启动命令ps-p12345-opid,user,etime,cmd# 3. 如果确认是残留任务结束进程kill12345# 4. 观察 GPU 是否释放watch-n2nvidia-smi这些命令覆盖了日常训练中最高频的场景。熟练掌握后大部分服务器问题都可以在几分钟内定位清楚。