切换到root权限用户。执行脚本a.sh
#!/bin/sh
/etc/init.d/syslog stop
echo 1 > /proc/sys/vm/block_dump
sleep 60
dmesg | awk '/(READ|WRITE|dirtied)/ {process[$1]++} END {for (x in process) \
print process[x],x}' |sort -nr |awk '{print $2 " " $1}' | \
head -n 10
echo 0 > /proc/sys/vm/block_dump
/etc/init.d/syslog start
##########end###########
显示结果如下:
Shutting down kernel logger: [ OK ]
Shutting down system logger: [ OK ]
kjournald(1039): 372
java(16517): 200 // 进程名(线程号):io量
java(13590): 157
java(4126): 150
java(16486): 148
java(13620): 113
java(13602): 95
java(4214): 90
java(3611): 90
java(16497): 81
Starting system logger: [ OK ]
Starting kernel logger: [ OK ]
显示的编号是线程号(thread) ,不是进程号(pid)
需要通thread id 找到 pid ,方法如下:需要加入-L参数
ps -Lef|grep tid
这样就可以查看出是那个应用在大量的操作磁盘了