前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >巧用shell脚本统计磁盘使用情况(r4笔记第12天)

巧用shell脚本统计磁盘使用情况(r4笔记第12天)

作者头像
jeanron100
发布2018-03-15 14:55:06
6730
发布2018-03-15 14:55:06
举报

在系统环境中存在大量的文件时,统计磁盘空间的工作变得尤为重要。 首先是传统的文件统计,通常使用-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 我们可以输出行号,然后换行 先输出行号

代码语言:javascript
复制

[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 在这个基础上可以发挥更多的功能,可以使用各种监控指标进行更进一步的扩展。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 杨建荣的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档