微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在shell脚本中将日常磁盘使用情况导出为csv格式?

我的脚本如下。 当我们运行脚本时,它会自动将磁盘空间使用量保存在不同的单元中。

SIZES_1=`df -h | awk 'FNR == 1 {print $1","$2","$3","$4","$5","$6}'` SIZES_2=`df -h | awk 'FNR == 2 {print $1","$6}'` SIZES_3=`df -h | awk 'FNR == 3 {print $1","$6}'` SIZES_4=`df -h | awk 'FNR == 4 {print $1","$6}'` SIZES_5=`df -h | awk 'FNR == 5 {print $1","$6}'` SIZES_6=`df -h | awk 'FNR == 6 {print $1","$6}'` SIZES_7=`df -h | awk 'FNR == 7 {print $1","$6}'` SIZES_8=`df -h | awk 'FNR == 8 {print $1","$6}'` echo `date +%Z-%Y-%m-%d_%H-%M-%s` >>/home/jeevagan/test_scripts/sizes/excel.csv echo "$SIZES_1" >> /home/jeevagan/test_scripts/sizes/excel.csv echo "$SIZES_2" >> /home/jeevagan/test_scripts/sizes/excel.csv echo "$SIZES_3" >> /home/jeevagan/test_scripts/sizes/excel.csv echo "$SIZES_4" >> /home/jeevagan/test_scripts/sizes/excel.csv echo "$SIZES_5" >> /home/jeevagan/test_scripts/sizes/excel.csv echo "$SIZES_6" >> /home/jeevagan/test_scripts/sizes/excel.csv echo "$SIZES_7" >> /home/jeevagan/test_scripts/sizes/excel.csv echo "$SIZES_8" >> /home/jeevagan/test_scripts/sizes/excel.csv

这个脚本适合我的机器。

我的疑问是,如果别人的机器有很多文件系统,我的脚本将无法获取所有文件系统的使用。 如何使它自动抓住所有这些?

在Linux下,名称与正则expression式匹配的文件的磁盘使用情况?

Java:如何确定1.6之前的Windows系统上的磁盘空间

找出哪些文件夹和文件占用Windows计算机上的空间最多?

在android设备中填充磁盘空间

磁盘上的多个小文件的大小

测量进程的峰值磁盘使用情况

AWS亚马逊为小型实例提供160GB的空间。 在启动Suse Linux时,总的根分区空间是

预测磁盘故障

Postgres在更新时是否重写整行?

在Linux上的C#中寻找一个目录的可用空间

假设你想要所有的文件系统,你可以简化为:

printf '%sn' "$(date +%Z-%Y-%m-%d_%H-%M-%s)" >> excel.csv df -h | awk '{print $1","$6}' >> excel.csv

我会简化这个

{ date +%Z-%F_%H-%M-%s; df -h | tr -s ' ' ','; } >> excel.csv

组命令,所以只需要一个重定向

挤压空格,并用tr替换为单个逗号

不需要echo `date`或类似的东西:和date

date +%Y-%m-%d与date +%F相同

请注意,这在df -h的输出的第一行有一点小缺陷,最初看起来像这样

Filesystem Size Used Avail Use% Mounted on

在最后一列的标题中有一个空格,所以它变成了

Filesystem,Size,Used,Avail,Use%,Mounted,on

附加一个逗号。 原来的awk解决方案只是切断了该行的最后一个字。 类似的,路径中的空格也会跳过这个解决方案。

解决逗号问题,你可以例如运行

sed -i 's/Mounted,on$/Mounted on/' excel.csv

现在每隔一段时间

另外,要替换awk中的所有字段分隔符,而不是

awk '{print $1","$6}'

您可以使用

awk 'BEGIN { OFS = "," } { $1 = $1; print }'

或者更短,

awk -v OFS=',' '{$1=$1}1'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐