在命令行上检索磁盘统计信息

马特·克拉克

我怎样才能最方便地从bash脚本获取磁盘统计信息?

我已经在用

cat /sys/block/*/stat

计算磁盘/分区的整体带宽,但是我也试图确定磁盘的整体大小以及已使用/可用的扇区数。

我知道可以使用使用这些统计信息df,但是我正在寻找一种替代方法(df如何完成其后端工作?),最好使用/sys/class//sys/block/

这可能吗?还是我需要使用df | awktop获得我正在寻找的统计信息?

编辑

用例:

这用于度量标准报告脚本,该脚本将从系统收集各种信息并将其报告给制图系统。

即获取扇区读/写统计信息

for device in /sys/block/*
do

    stats=$( cat $device/stat )

    sectorsRead=$( echo $stats | awk '{print $3}' )
    sectorsWrite=$( echo $stats | awk '{print $7}' )

    doSomethingWith sectorsRead
    doSomethingWith sectorsWrite
done

我正在寻找类似的方法,但要获取扇区总数,而不是已用/可用扇区。

芒登

您尝试做的最便携式的工具是df不要摆弄/sys不能保证在任何非Linux系统上都可以使用的功能。而且不要重新发明轮子。这正是POSIX指定df用途以及原因

当然,事情并不是那么简单,并且有各种各样的df实现,其中一些实现具有不同的格式。但是,撰写POSIX规范的优秀人才以其无穷的智慧在的规范中包括以下选项df

 -P
    Produce output in the format described in the STDOUT section.

因此,如果您始终使用df -P,那么它应尽可能地具有可移植性。当使用该标志时,任何符合POSIX的df版本(应该全部兼容或尽可能没有区别)将按照以下规范(取自POSIXdf页面产生oputput

当同时指定了-k和-P选项时,应写入以下标头行(在POSIX语言环境中):

“文件系统1024块已使用的可用容量已安装在\ n上”

当指定-P选项而没有-k选项时,应写以下标题行(在POSIX语言环境中):

“文件系统512块已使用的可用容量已安装在\ n上”

该实现可以调整标题行和各个数据行的间距,以使信息以有序的列显示。

对于每个指定的文件系统,带有-P的其余输出应由一行信息组成。这些行的格式应如下:

“%s%d%d%d%d%d %% s \ n”,,,,,,

在下面的列表中,所有以512字节为单位(指定-k时为1024字节)表示的数量应四舍五入到下一个更高的单位。这些字段是:

文件系统的名称,以实现定义的格式。文件系统的总大小,以512字节为单位。该图的确切含义是实现定义的,但应包括,以及系统通常不为用户提供的任何保留空间。分配给文件系统中现有文件的总空间,以512字节为单位。文件系统中可用于由非特权用户创建新文件的总空间,以512字节为单位。当该数字小于或等于零时,除非进程具有适当的特权,否则必须先删除其他文件才能在文件系统上创建任何新文件。所写的数字可能小于零。当前分配给文件系统上所有文件的正常可用空间的百分比。

以百分比表示。如果小于零,则此百分比可能大于100。百分比值应表示为正整数,任何小数结果都将其舍入为下一个最高整数。

在其下显示文件系统层次结构的目录。

您可能还应该使用该-k标志来始终将结果打印为1024字节单位而不是512字节。您还可以进行设置LC_ALL=POSIX以确保语言环境不会影响输出。将所有内容放在一起可得出:

结合使用还具有超便携性awk,您可以执行以下操作:

totalSectors=$(env -i LC_ALL=POSIX df -k -P /dev/sda1 | awk 'NR>1{print $2}')
usedSectors=$(env -i LC_ALL=POSIX df -k -P /dev/sda1 | awk 'NR>1{print $3}')
availableSectors=$(env -i LC_ALL=POSIX df -k -P /dev/sda1 | awk 'NR>1{print $4}')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在命令行上获取netfilter统计信息

来自分类Dev

在命令行上获取netfilter统计信息

来自分类Dev

在命令行上更改用户信息

来自分类Dev

在命令行上找到视频卡信息

来自分类Dev

Windows上通过命令行的符号链接文件信息

来自分类Dev

命令行主机信息

来自分类Dev

命令行分区信息

来自分类Dev

从命令行查看与“本地连接”状态gui相同的统计信息

来自分类Dev

在Linux下如何从命令行检索视频文件信息?

来自分类Dev

命令行上的命令选项-详细信息和功能?

来自分类Dev

命令行获取此系统信息

来自分类Dev

在命令行上记录Unix命令

来自分类Dev

如何在命令行上显示软件包升级详细信息?

来自分类Dev

在Mac OS X中从命令行在文件上执行“获取信息”

来自分类Dev

在Windows 10上通过命令行读取实时传感器信息吗?

来自分类Dev

如何从命令行创建Windows 10恢复磁盘?

来自分类Dev

Powershell命令以查看命令行中显示的完整信息

来自分类Dev

在命令行上提供临时的PYTHONPATH?

来自分类Dev

在PuTTY命令行上指定私钥

来自分类Dev

命令行上的CMake传递列表

来自分类Dev

HWUT:命令行上的参数

来自分类Dev

等效于命令行上的退出

来自分类Dev

在OSX的命令行上使用Dropbox

来自分类Dev

Mac上的小指命令行工具?

来自分类Dev

DNS无法在命令行上运行

来自分类Dev

在Windows命令行上搜索目录

来自分类Dev

在命令行上更改提示?

来自分类Dev

在命令行上替换值

来自分类Dev

在命令行上执行make(Java)