在使用 Linux 的过程中,是否遇到过磁盘突然变得很卡、系统响应迟钝,甚至连输入命令都要等半天?很有可能是某个进程疯狂读写磁盘,导致 I/O 拥堵!
如何快速排查是哪个进程导致了高磁盘 I/O?
如何实时监控磁盘读写情况?
今天就带你 用几条命令快速找出“幕后黑手”!
一、用 iotop 快速锁定“高 I/O 进程”
如果你想实时查看哪些进程正在疯狂读写磁盘,iotop
是你的首选!
sudo iotop -ao
参数解释:
-
-a
:显示累积 I/O 总量 -
-o
:只显示正在发生 I/O 的进程
你能清晰看到哪个进程读写了多少数据,谁是“磁盘杀手”一目了然。
二、用 pidstat 监控各进程的 I/O 活动
除了实时监控,你还可以用 pidstat
观察一段时间内的 I/O 使用情况:
pidstat -d 1
它每秒刷新一次,显示每个进程的读写速度:
Time UID PID kB_rd/s kB_wr/s Command
14:20:01 0 1234 105.00 0.00 mysqld
14:20:01 0 2345 0.00 32.00 rsyslogd
哪个进程读得最多、写得最猛,一目了然。
三、dstat:看磁盘+进程综合视图
如果你喜欢一目多用的工具,dstat
能同时展示:
-
CPU 使用率
-
磁盘读写速度
-
当前最“占用”磁盘的进程
命令如下:
dstat -cdlmn --top-io
实时、全面、直观,非常适合系统管理员或开发人员日常排查问题。
四、想深入研究?看 /proc/[pid]/io
如果你已经锁定某个进程,想知道它到底读了多少、写了多少磁盘,可以查看它的 /proc
目录:
cat /proc/1234/io
你会看到这样的内容:
read_bytes: 50000
write_bytes: 100000
特别关注
read_bytes
和write_bytes
,就能评估它的实际磁盘压力。
五、没有工具?快速安装!
如果你发现命令提示“未找到”,可直接安装:
# Ubuntu / Debian
$ sudo apt install iotop sysstat dstat
# CentOS / RHEL
$ sudo yum install iotop sysstat dstat
(建议同时安装
htop
、btop
,效果更炫酷)
六、总结
磁盘 I/O 问题一旦出现,不仅影响当前业务性能,甚至可能拖垮整个系统。 掌握这些命令,就相当于你手上多了一把“系统放大镜”,快速锁定问题源头,及时止损!