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 重启后自动挂载(不丢盘)

  1. 获取 UUID(永远不变,避免 /dev/sdX 漂移)

    lsblk -no UUID /dev/nvme1n1
    # 输出:a1b2c3d4-e5f6-7890-abcd-ef1234567890
    
  2. 编辑 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
    
  3. 预检查 & 生效

    sudo mount -a      # 无输出即成功
    sudo systemctl daemon-reload
    

1.3 Windows ↔ Linux 双系统互拷数据

场景推荐挂载命令
只读 NTFSsudo mount -t ntfs-3g -o ro,uid=$(id -u),gid=$(id -g) /dev/sdX /mnt/win
读写 NTFSntfs-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

祝炼丹愉快,永不掉线。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值