写这一篇的时候,距离这个系列第一篇已经隔了不少时间。前面九篇把文件操作、权限、压缩、文本处理这些基础命令都过了一遍,如果你全部跟下来,单条命令大概率已经不成问题。但有个现象我反复遇到:新人拿着命令清单,看到一台陌生的服务器或者接到一个故障通知,依然会卡住手脚——因为真实环境里没有哪道题会写着“这道题用awk解决”,所有问题都是拿到现场信息,再临时决定用哪条命令。所以作为系列第十篇,我想换一种方式来写:不按命令类型往下罗列,而是用四个最常见的排障和运维场景来带命令,后面再补两块日常高频的组合操作。这样既能复习前几篇里出现过的基础命令,又能补上一些偏实战的系统级命令,争取让你看完就能直接照着用。
1. 拿到陌生系统先别慌:系统信息聚合命令,摸清家底再动手
我刚工作那会儿,接手一台没人维护的服务器,第一件事就是连上去看目录都是乱的,想干什么都不知道从哪下手。后来带我的师傅说了一句话,我一直记着:排查问题前先分清是“资源不够”还是“程序写错”,这两个方向差了十万八千里。分清的第一步,就是用系统信息命令把机器的家底摸清楚。
1.1 lscpu与free:CPU和内存的真实与表面
lscpu 是查看CPU信息最快的方式,不用去 /proc/cpuinfo 里翻半天。它的输出直接列清楚了架构、型号、核心数、线程数、套接字数,还有CPU的MHz频率和虚拟化支持情况。比如我遇到过一台机器,业务方说是单核,但lscpu一看是4核8线程,程序是按单核写的,后来一查问题根本不在资源上,而在锁竞争。这种误判,就是没先看硬件信息。
重点看这几项:
- Architecture:x86_64还是aarch64,决定你装软件包选哪个版本。
- CPU(s):逻辑核总数,按这个来定线程池大小、并发数。
- Core(s) per socket:每个物理CPU的物理核数。
- Model name:具体型号,排查指令集兼容性时有用。
内存这边,很多人习惯只看 free -h 的used列,这其实是个大坑。Linux的内存策略决定了它会尽量用内存做页缓存,所以 free 列出来的“free”往往很小,但这是正常的,不代表内存不够。真正要看的字段是 available,它表示“在不触发明显交换的情况下,还能分给新进程多少内存”。我接手过一台报OOM的机器,业务同事截图说used占了95%,我上去free -h一看,available还剩8G多,问题根本不在这台机器上,而是被监控脚本误判了。
bash复制free -h
建议养成习惯:内存告警先看available,再看si/so(swap换入换出量)。如果si和so两个数字长期不为0,说明物理内存确实顶不住了,这时候再怀疑内存不足才合理。
1.2 lsblk、df、blkid:磁盘关系盘清楚
磁盘相关的命令我建议按三层来看:lsblk 看结构,df 看使用率,blkid 看磁盘身份标识。三者的分工完全不同,但组合起来能把一台机器的磁盘情况看得很透彻。
lsblk 以树状结构展示块设备,挂载点、容量、类型一眼就能看明白。新加一块磁盘时,用 lsblk 看到一块没有挂载点的新盘,是最快的确认方式。df -hT 则是从文件系统角度统计使用率,其中 -T 会显示文件系统类型,这一点在判断是ext4、xfs还是overlay时特别有用。比如容器环境里常见overlay,你用df只看容量没问题,但要知道这是堆叠文件系统,实际底层空间可能来自同一个宿主机分区,这时候单独df的容量数字就有误导性。
bash复制# 查看块设备树状结构
lsblk
# 查看文件系统容量和使用率,带文件系统类型
df -hT
# 查看指定磁盘的UUID和文件系统类型
blkid /dev/sda1
还有一个容易踩的坑是inode耗尽。df -hT 看容量明明还有剩余,但系统就是报“No space left on device”,这种情况八成是inode被小文件占满了。用 df -i 看一下就明白,inode使用率达到100%时,文件系统写不进去任何新文件,哪怕容量还很多。常见于邮件队列目录、临时目录或者跑定时任务的输出目录。
1.3 vmstat与lspci:瞬时状态与外设识别
前面几个命令看的是静态信息,但排查性能问题的时候还需要动态观察。vmstat 1 5 是一个经典的动态采样命令,后面跟两个参数,单位是秒,表示每隔1秒输出一次,共输出5次。采样输出里最值得关注的是 r 和 wa 两列:r表示当前等待CPU的进程队列长度,持续大于CPU核数,说明CPU存在竞争;wa表示I/O等待时间占比,如果这个值长期很高,说明磁盘或存储子系统是瓶颈。
bash复制vmstat 1 5
外设识别方面,lspci 可以列出所有PCI总线上的设备,网卡、显卡、RAID卡都能看到。排查网卡丢包、型号不识别这类问题时,先跑一条 lspci | grep -i ethernet,再对应去看驱动模块是否加载,路径清晰很多。像我们排查过一台服务器的网卡流量异常,最后发现是机器上有两套网卡,业务流量走的是板载网卡,监控看的却是独立网卡,两个lspci一对比就清楚了。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 查日志是排障的第一步:journalctl和dmesg的高效检索姿势
很多人排障第一反应是去 /var/log 下面翻文件,这个方向没错,但效率太低。现代主流发行版基本都用systemd管理服务,日志体系也统一由journald接管。与其到每个服务的日志目录里人肉grep,不如先把journalctl用熟。
