记录:linux高频高效命令汇总
前言
大家进行项目部署、代码复现等少不了使用linux终端。在这里汇总了自己日常高频使用的命令汇总和梳理,希望可以帮到大家。主要包含:磁盘挂载、文件传输、代码程序后台运行。
适用场景:新机器初始化、实验室服务器迁移、云实例持久化存储、远程复现论文代码。
1. 磁盘挂载:从插上硬盘到重启不丢盘
痛点:插上移动硬盘/云盘只读、重启后挂载消失、权限 777 不安全。
1.1 五步完成首次挂载
| 步骤 | 命令 | 备注 |
|---|---|---|
| ① 看设备 | lsblk -f | 带文件系统类型列,一眼认出 ext4 / ntfs / exfat |
| ② 建挂载点 | sudo mkdir -p /mnt/data | 推荐 /mnt/用途 或 /data |
| ③ 格式化(可选) | sudo mkfs.ext4 /dev/nvme1n1 | 新盘才需要 |
| ④ 临时挂载 | sudo mount /dev/nvme1n1 /mnt/data | 立刻可用 |
| ⑤ 验证 | df -hT /mnt/data | 确认容量、文件系统 |
1.2 重启后自动挂载(不丢盘)
-
获取 UUID(永远不变,避免
/dev/sdX漂移)lsblk -no UUID /dev/nvme1n1 # 输出:a1b2c3d4-e5f6-7890-abcd-ef1234567890 -
编辑 fstab(先备份!)
sudo cp /etc/fstab /etc/fstab.bak sudo nano /etc/fstab追加一行:
UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /mnt/data ext4 defaults,noatime 0 2 -
预检查 & 生效
sudo mount -a # 无输出即成功 sudo systemctl daemon-reload
1.3 Windows ↔ Linux 双系统互拷数据
| 场景 | 推荐挂载命令 |
|---|---|
| 只读 NTFS | sudo mount -t ntfs-3g -o ro,uid=$(id -u),gid=$(id -g) /dev/sdX /mnt/win |
| 读写 NTFS | ntfs-3g /dev/sdX /mnt/win |
| exFAT U 盘 | sudo mount -t exfat /dev/sdb1 /mnt/usb |
2. 文件传输:rsync 替代 scp 的 6 个理由
痛点:scp 断点续传差、大量小文件慢、远程与本地目录不同步。
2.1 安装 & 版本
# 双方都要装
sudo apt install rsync # Debian/Ubuntu
sudo yum install rsync # CentOS 7
sudo pacman -S rsync # Arch
rsync --version # 建议 ≥ 3.2.x,支持 `--info=progress2`
2.2 一口气掌握 6 个高频用法
| 需求 | 命令 | 解释 |
|---|---|---|
| 首次全量备份 | rsync -avP ~/project/ user@remote:/data/project/ | -P = 断点续传 + 进度条 |
| 增量同步 | rsync -a --info=progress2 --delete ~/project/ remote:/data/project/ | 只传变动,删除远端多余 |
| 排除大文件 | rsync -av --exclude='*.iso' --exclude='wandb/' ~/data/ remote:/data/ | 支持多次 --exclude |
| 排除文件太多 | rsync -av --exclude-from=rsync.ignore ~/data/ remote:/data/ | 把忽略列表写进文件 |
| 双向同步 | rsync -avui --inplace ~/project/ remote:/data/project/ | -u 不覆盖较新文件 |
| 限速跑满千兆 | rsync -av --bwlimit=100M ~/video/ remote:/video/ | 避免把实验室网打爆 |
(1)日常想快速可以直接rsync -av /路径 /路径 既可以看进程也可以进行传输。
(2)在 rsync 里,路径末尾加不加 / 直接决定「同步的是『目录本身』还是『目录里面的内容』」。
一句话口诀:
有斜杠 = 传内容,无斜杠 = 传壳。
(3)还可以实现利用sh文件批量传输
新建文件:batch_rsync.sh
#!/usr/bin/env bash
# 把下面三处改成你的
USER="ubuntu"
HOST="gpu01.lab.com"
DST_ROOT="/data/backup"
while IFS= read -r SRC; do
[[ $SRC =~ ^# ]] && continue # 跳过注释
echo ">>> 正在搬 $SRC"
rsync -avhP --delete \
--exclude='.git/' \
--exclude='*.pth' \
"$SRC"/ "$USER@$HOST:$DST_ROOT/$(basename "$SRC")"
done < list.txt
给它执行权限:
chmod +x batch_rsync.sh
任务清单 list.txt
一行一个目录,可加 # 注释:
# 论文代码
~/project/Transformer-CL
# 数据集
~/data/imagenet-1k
跑起来!
./batch_rsync.sh
看到绿色进度条,就是成功。
后台不挂小技巧 (后面也会有详细讲解)
怕 SSH 断?两步:
# ① 进 tmux
tmux new -s move
# ② 在 tmux 里跑
./batch_rsync.sh
# ③ 按 Ctrl+b d 退出,回家再 attach
tmux attach -t move
可以根据自身实际情况查询教程或者AI一下生成sh脚本
2.3 和 VS Code / PyCharm 联动
-
VS Code Remote-SSH 默认走 scp,可在
settings.json里改成 rsync:
"remote.SSH.transfer": "rsync" -
PyCharm Deployment → Advanced → 勾「使用 rsync」即可。
3. 代码后台运行:Tmux 命令
痛点:ssh 断网训练中断、多个实验窗口切到崩溃、想共享终端其他伙伴。
3.1 安装 & 首启
sudo apt install tmux
tmux new -s train
# 底部出现绿色状态栏即成功
3.2 一条时间线学会会话管理
| 场景 | 命令/快捷键 | 效果 |
|---|---|---|
| 新建会话 | tmux new -s cv | 创建名为 cv 的会话 |
| 断网保活 | Ctrl+b d | 会话仍在后台跑 |
| 重新接入 | tmux attach -t cv | 回家接着看 loss |
| 杀死会话 | tmux kill-session -t cv | 清理僵尸会话 |
| 查看列表 | tmux ls | 一目了然 |
| 重命名 | Ctrl+b $ | 把 0 改成有意义的名字 |
3.3 面板分屏:一屏顶六屏
- 水平分屏:
Ctrl+b " - 垂直分屏:
Ctrl+b % - 光标切换:
Ctrl+b 箭头 - 放大/还原:
Ctrl+b z
3.4 配置优化(复制即用)
~/.tmux.conf
# 鼠标支持
set -g mouse on
# 256 色
set -g default-terminal "screen-256color"
# 开启滚动条
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "copy-mode -e; send-keys -M"
# 状态栏右侧显示 GPU 利用率
set -g status-right '#(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits)% GPU'
重载配置:tmux source ~/.tmux.conf
3.5 与 conda/venv 搭配的最佳实践
# 在 tmux 会话里
conda activate torch210
python train.py 2>&1 | tee log.txt
# 退出后随时看 log
tail -f log.txt
4. 彩蛋:一条命令把上面三件事串起来
#!/bin/bash
# save as init_lab.sh
set -e
DISK=$1 # 例如 /dev/nvme1n1
MOUNT=/data
UUID=$(lsblk -no UUID $DISK)
# 1. 挂载
sudo mkdir -p $MOUNT
echo "UUID=$UUID $MOUNT ext4 defaults,noatime 0 2" | sudo tee -a /etc/fstab
sudo mount -a
# 2. 同步代码
rsync -avP --exclude='.git/' --exclude='wandb/' ./ $MOUNT/project/
# 3. 启动 tmux 训练
tmux new-session -d -s train
tmux send-keys -t train "cd $MOUNT/project && conda activate torch210 && python train.py" C-m
echo "磁盘已挂载,代码已同步,训练已在 tmux 会话 train 中后台运行!"
使用:
chmod +x init_lab.sh
./init_lab.sh /dev/nvme1n1
祝炼丹愉快,永不掉线。

被折叠的 条评论
为什么被折叠?



