Linux 磁盘和 SSH 常用命令怎么整理:fdisk、mount、awk、grep 和 scp

6次阅读
没有评论

Linux 命令最容易变成一堆临时复制记录:今天查磁盘分区,明天 grep 日志,后天 scp 一个 jar 包,再过几个月就忘了每条命令当时解决的是什么问题。

我更愿意把这类命令按场景整理,而不是按命令名堆在一起。因为真正排障时,脑子里想的不是“我要用哪个命令”,而是“我要确认磁盘、日志、网络还是远程文件”。

先把命令分成几个场景

一个够用的 Linux 运维备忘可以先分成五类:

  • 日志查看:tailgrepawk
  • 磁盘分区:fdisk -lblkidmount
  • 文件传输:scprsync
  • 远程登录:sshssh-copy-idauthorized_keys
  • 定时任务:传统 cron 和 Quartz cron 的差异。

这样整理以后,下一次遇到问题,就能先定位场景,再找命令。

日志排查先控制范围

线上查日志时,不建议一上来就全量 cat 或无范围搜索。更稳的是先控制行数,再根据关键字逐步缩小。

tail -n 5000 /path/to/service.log | grep 'start to upload'

如果需要看匹配行前后上下文,可以用:

tail -n 10000 service.log | grep -A 2 -B 2 '关键字'

这里的 -A 2 表示 after,显示匹配行之后两行;-B 2 表示 before,显示匹配行之前两行。日志量很大时,先用 tail 限制范围,再用 grep 查关键字,会比直接扫全文件更可控。

awk 适合处理结构化的命令输出。比如想看 fdisk 输出里每一行到底被空格分成几列,可以先用:

sudo fdisk -l --bytes /dev/sdb | grep '^/dev' | awk '{print NF}'

NF 表示当前行字段数量。遇到空格数量不固定的命令输出时,先看字段数,再决定取哪一列,能少踩很多坑。

fdisk 适合看分区,不要随手写盘

fdisk -l 常用于查看磁盘和分区信息:

sudo fdisk -l
sudo fdisk -l --bytes /dev/sdb

只读查看问题不大,但进入 fdisk /dev/sdb 后就要谨慎了。删除分区、创建 GPT 分区表、写入分区表都可能破坏数据。真正操作前至少确认三件事:

  1. 设备名是不是目标磁盘,不要把 /dev/sdb/dev/sdc 看错。
  2. 重要数据是否已经备份。
  3. 本次是只读查看,还是确实要重新分区和格式化。

如果要把一块盘重新做 GPT 分区,大致流程是:

sudo fdisk /dev/sdb

进入交互后再执行查看、删除、创建 GPT、创建分区和写入。退出后通常还要格式化:

sudo mkfs.ext4 /dev/sdb1

然后创建挂载目录并挂载:

sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data

如果希望开机自动挂载,再写 /etc/fstab。这里更推荐使用 UUID,不要只依赖 /dev/sdb1 这种可能变化的设备名。

blkid /dev/sdb1

拿到 UUID 后再写入 fstab,并用 mount -a 验证配置是否正确。

分区类型和文件系统不是一回事

新手很容易把 fdisk 里看到的 Linux83GPText4 混在一起。

可以简单这样理解:

  • GPT 或 MBR 是分区表类型。
  • 83Linux filesystem 是分区类型标识。
  • ext4、xfs、btrfs 才是具体文件系统。
  • mount 关心的是文件系统能否被挂载。

所以在 fdisk 里看到某个分区显示为 Linux,并不等于它一定已经格式化成 ext4。要看文件系统,更适合用:

blkid /dev/sdb1
lsblk -f

如果 mount 失败,不要只盯着 fdisk。要同时看文件系统类型、挂载点是否存在、权限、dmesg 报错和 /etc/fstab 配置。

SSH 免密登录按权限一步步排

SSH 免密登录本质上是把本机公钥放到远程服务器的 ~/.ssh/authorized_keys 里。

本机生成密钥:

ssh-keygen -t rsa -b 4096

复制公钥到服务器:

ssh-copy-id [email protected]

如果不能用 ssh-copy-id,也可以手动追加公钥。远程服务器上目录和文件权限要注意:

mkdir -p ~/.ssh
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

排查免密失败时,先看这些点:

  • 本机用的是哪把私钥。
  • 远程用户是否正确。
  • 公钥是否真的写入对应用户的 authorized_keys
  • .sshauthorized_keys 权限是否过宽。
  • sshd_config 是否允许公钥认证。

如果要在公开文章里记录命令,服务器地址、用户名、密钥路径都应写成占位,不要直接暴露真实公网 IP、真实用户名或私钥路径。

scp 适合少量文件,批量同步用 rsync

临时传一个 jar 包或配置文件,scp 很方便:

scp app.jar [email protected]:/opt/app/

如果是大量文件、断点续传或目录同步,rsync 更合适:

rsync -av --progress ./dist/ [email protected]:/opt/app/dist/

选择时可以这样判断:

  • 单个文件、一次性传输:用 scp
  • 大目录、频繁同步、希望跳过未变化文件:用 rsync
  • 生产发布:最好交给部署脚本或 CI,不要长期靠手工 scp。

cron 和 Quartz cron 不要混用

传统 Linux cron 通常是 5 位:

*/10 * * * *

它表示每 10 分钟执行一次。

Quartz Scheduler 常见是 6 位或 7 位,例如:

0 */10 * * * ?

这里第一位是秒,表示每小时的第 0、10、20、30、40、50 分钟执行。两套表达式长得像,但字段含义不同,直接复制很容易错。

记录定时任务时最好顺手写一句人话解释,例如“每 10 分钟执行一次”,不要只留表达式。

最后沉淀成排障清单

Linux 命令备忘最有价值的不是命令本身,而是排障顺序。

我会给自己留这样一份清单:

  • 查日志:先限制范围,再查关键字,再看上下文。
  • 查磁盘:先 lsblk -fblkid,再看 fdisk -l
  • 改分区:先备份、确认设备名,再进入写盘操作。
  • 挂载失败:看文件系统、挂载点、权限、fstabdmesg
  • SSH 失败:看用户、公钥、权限、私钥和服务端配置。
  • 传文件:少量用 scp,批量和重复同步用 rsync
  • 定时任务:区分 Linux cron 和 Quartz cron,并写明自然语言解释。

这类笔记整理到最后,应该从“命令收藏夹”变成“排障路线图”。下一次真出问题时,能少一点临场搜索,多一点稳稳地往下查。

正文完
 0
bdspAdmin
版权声明:本站原创文章,由 bdspAdmin 于2026-06-29发表,共计2641字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)