linux磁盘使用情况脚本,巧用shell脚本统计磁盘使用情况

在系统环境中存在大量的文件时,统计磁盘空间的工作变得尤为重要。

首先是传统的文件统计,通常使用-s选项,但是只能得到一个概要的信息,如果想定位哪些文件消耗的空间较大还是比较麻烦的。

[ora11g@rac1 new_test]$ du -s .

1296    .

[ora11g@rac1 new_test]$ du -sh .

1.3M    .

[ora11g@rac1 new_test]$ du -s .

1296    .

这个时候,勉强可以使用-s ./*的形式得到所有的文件夹的大小情况。但是还是不够直观。

[ora11g@rac1 new_test]$ du -s ./*

80      ./append

32      ./append_fix

60      ./COL_LIST

24      ./compare

56      ./DESC_LIST

4       ./DUMP

80      ./DUMP_LIST

44      ./extract

48      ./full_append

92      ./init

48      ./loading

8       ./monitor

20      ./net_extract

108     ./parallel

88      ./parfile

248     ./partition_append

76      ./partition_extract

128     ./prepare

40      ./split_loading

8       ./tab_parall.lst

这个时候可以考虑使用-S选项,得到的列表会统计文件夹及其目录的大小。定位问题相对比较轻松。

[ora11g@rac1 new_test]$ du -S .

80      ./append

20      ./net_extract

80      ./DUMP_LIST

8       ./append_fix/ERRTAB_LIST

24      ./append_fix

48      ./loading

8       ./monitor

44      ./extract

248     ./partition_append

48      ./full_append

24      ./init/sqls/target

20      ./init/sqls/source

8       ./init/sqls

40      ./init

56      ./DESC_LIST

108     ./parallel

4       ./compare/logs

4       ./compare/sqls

16      ./compare

4       ./DUMP

28      ./prepare/post

28      ./prepare/pre

72      ./prepare

60      ./COL_LIST

76      ./partition_extract

88      ./parfile

4       ./split_loading/sqls

36      ./split_loading

12      .

但是如果文件目录下有很多的文件和文件夹,查出来的结果就会比较凌乱。我们可以得到最占用空间的10个目录,这样定位问题就比较有针对性。

下面的命令可以得到前10位的占用空间较大的目录。通过sed直接过滤了前10位之后的信息。

[ora11g@rac1 test]$ du -S .|sort -rn|sed '{11,$D;}'

130668  .

552     ./ext_datapump/split_loading

500     ./parallel

460     ./ext_datapump_14_jul/DUMP

444     ./ext_datapump/split_loading/log_bak

324     ./ext_datapump/DUMP_LIST

316     ./ext_datapump/ext_datapump/DUMP_LIST

316     ./ext_datapump_14_jul/ext_datapump/DUMP_LIST

304     ./ext_datapump/DESC_LIST

300     ./ext_datapump/COL_LIST

这样看起来还可以,但是如果输出的结果中显示空间的占用情况排名就好了。比如

1   x xxx

2   xxxxxx

我们可以输出行号,然后换行

先输出行号

[ora11g@rac1 test]$ du -S .|sort -rn|sed '{11,$D;=}'

1

130668  .

2

552     ./ext_datapump/split_loading

3

500     ./parallel

4

460     ./ext_datapump_14_jul/DUMP

5

444     ./ext_datapump/split_loading/log_bak

6

324     ./ext_datapump/DUMP_LIST

7

316     ./ext_datapump/ext_datapump/DUMP_LIST

8

316     ./ext_datapump_14_jul/ext_datapump/DUMP_LIST

9

304     ./ext_datapump/DESC_LIST

10

300     ./ext_datapump/COL_LIST

[ora11g@rac1 test]$

然后换行

[ora11g@rac1 test]$ du -S .|sort -rn|sed '{11,$D;=}'|sed 'N;s/\n/ /'

1 130668        .

2 552   ./ext_datapump/split_loading

3 500   ./parallel

4 460   ./ext_datapump_14_jul/DUMP

5 444   ./ext_datapump/split_loading/log_bak

6 324   ./ext_datapump/DUMP_LIST

7 316   ./ext_datapump/ext_datapump/DUMP_LIST

8 316   ./ext_datapump_14_jul/ext_datapump/DUMP_LIST

9 304   ./ext_datapump/DESC_LIST

10 300  ./ext_datapump/COL_LIST

这个时候大部分工作都完成了,剩下的就是结果集的格式化了。可以简单格式化一下。

[ora11g@rac1 test]$ du -S .|sort -rn|sed '{11,$D;=}'|sed 'N;s/\n/ /'|awk '{print $1 ":" "\t" $2 "\t" $3 "\n"}'

1:      130668  .

2:      552     ./ext_datapump/split_loading

3:      500     ./parallel

4:      460     ./ext_datapump_14_jul/DUMP

5:      444     ./ext_datapump/split_loading/log_bak

6:      324     ./ext_datapump/DUMP_LIST

7:      316     ./ext_datapump/ext_datapump/DUMP_LIST

8:      316     ./ext_datapump_14_jul/ext_datapump/DUMP_LIST

9:      304     ./ext_datapump/DESC_LIST

10:     300     ./ext_datapump/COL_LIST

最后可以把错误日志做一个简单的处理。

[ora11g@rac1 test]$ du -S .2>/dev/null|sort -rn|sed '{11,$D;=}'|sed 'N;s/\n/ /'|awk '{print $1 ":" "\t" $2 "\t" $3 "\n"}'

1:      130668  .

2:      552     ./ext_datapump/split_loading

3:      500     ./parallel

4:      460     ./ext_datapump_14_jul/DUMP

5:      444     ./ext_datapump/split_loading/log_bak

6:      324     ./ext_datapump/DUMP_LIST

7:      316     ./ext_datapump/ext_datapump/DUMP_LIST

8:      316     ./ext_datapump_14_jul/ext_datapump/DUMP_LIST

9:      304     ./ext_datapump/DESC_LIST

10:     300     ./ext_datapump/COL_LIST

在这个基础上可以发挥更多的功能,可以使用各种监控指标进行更进一步的扩展。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23718752/viewspace-1398417/,如需转载,请注明出处,否则将追究法律责任。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值