在iotop -b的输出中对前十个进程进行排序并显示

编程语言 2026-07-10

我使用以下命令序列来显示消耗磁盘写入最多的前10个进程并记录日志:

/usr/sbin/iotop -b -n1 -qqq | sort -k1.36,1.43 -rn | head \>\> iotop.log

唯一的问题是,从第36个字符到第43个字符之间的排序没有考虑到数字后面的单位,因此有时会得到这样的结果:

    TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN      IO    COMMAND
b'  48925 be/4 oracle      0.00 B/s   80.31 K/s  0.00 %  0.00 % tnslsnr LISTENER_SCAN1 -no_crs_notify -inherit'
b'  49852 be/4 oracle      0.00 B/s   10.04 K/s  0.00 %  0.00 % ora_lg00_dbmxp2'
b'1332594 be/4 root        0.00 B/s    6.67 M/s  0.00 %  0.00 % nessus-agent-module -q'

我希望这里的最后一行排在最前面,因为它的磁盘写入速率为6.67 M/s,超过80.31 K/s。我还可以进一步修改排序选项。不过,有人有更好的主意吗?

解决方案

这并不能百分之百满足你的需求,但至少排序会起作用。

传入 --kilobytes-k 以将所有数值以千字节为单位输出。这意味着 6.67 M/s 将显示为 667x K/s,但至少最大的数字会排在最前面。

/usr/sbin/iotop -k -b -n1 -qqq | sort -k1.36,1.43 -rn | head \>\> iotop.log
                ^^

更多信息:https://www.man7.org/linux/man-pages/man8/iotop.8.html

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章