我在网上看到有关 IOSTAT 使用的相互矛盾的信息。我特别希望能够显示自启动以来的平均值。根据我读到的信息,如果我从未发出命令 IOSTAT,它将显示自启动以来的平均值。但是,如果在某个时刻我发出了 IOSTAT 命令,则下一次执行将不是自启动以来,而是自上次执行以来。
假设我之前已经运行过一次,那么如何在启动后执行 IOSTAT?
答案1
iostat
显示自启动以来的统计数据,一次(每次命令运行,而不是每次启动)。然后根据参数(例如: running iostat 2
,每两秒一次),它将显示自上次在同一命令运行中显示以来的统计信息:
这第一份报告由 iostat 命令生成提供有关时间的统计信息自系统启动以来,除非使用 -y 选项(在这种情况下,第一个报告被省略)。随后的每份报告覆盖时间自上次报告以来。每次运行 iostat 命令时都会报告所有统计信息。该报告由 CPU 标题行和后跟的 CPU 统计信息行组成。在多处理器系统上,CPU 统计信息在系统范围内计算为所有处理器的平均值。将显示设备标题行,后跟已配置的每个设备的一行统计信息。
实际上iostat
只是做了一些减法。簿记角色由内核完成。iostat
只是访问各种/proc
(或者可能是其他类似的条目)。其中(只需使用strace
在iostat 2
):
/proc/diskstats
/proc/uptime
/proc/stat
第一次读取是自启动以来。要知道自上次显示以来,它iostat
会记住(在运行时在内存中)先前的值,并将它们减去新读取的值:这就是该时间段内发生的情况。
为了确认OP的问题:每次运行iostat
命令都独立于该iostat
命令的其他运行。它不会影响其他同时运行的iostat
命令或该iostat
命令的未来运行。