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

在系统环境中存在大量的文件时,统计磁盘空间的工作变得尤为重要。 首先是传统的文件统计,通常使用-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 在这个基础上可以发挥更多的功能,可以使用各种监控指标进行更进一步的扩展。

原文发布于微信公众号 - 杨建荣的学习笔记(jianrong-notes)

原文发表时间:2015-01-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Golang语言社区

Google Cloud 宣布支持Go 1.11

The Go Blog Announcing App Engine’s New Go 1.11 Runtime

16220
来自专栏zhisheng

渣渣菜鸡的 ElasticSearch 源码解析 —— 环境搭建

去 https://www.elastic.co/downloads/past-releases 这里找到 ElasticSearch 6.3.2 版本,下载后...

27820
来自专栏ml

flume安装及配置介绍(二)

注: 环境: skylin-linux Flume的下载方式:   wget http://www.apache.org/dyn/closer.lua/flu...

367110
来自专栏一个会写诗的程序员的博客

《Spring Boot极简教程》第7章 Spring Boot集成模板引擎

其实,没有任何一个模板引擎(jsp,velocity,thymeleaf,freemarker,etc)可以完全实现MVC绝对的分层,只有“自由度”上的界定罢了...

11640
来自专栏我是攻城师

Spring Boot开发之明月千城(一)

36330
来自专栏A周立SpringCloud

Spring Cloud各组件配置属性总结

我们知道,Spring Cloud是个工具集,整合了各种组件。有的组件Spring Cloud是拿来主义,有的组件Spring Cloud又进行了一些增强(例如...

37250
来自专栏bboysoul

社会工程学信息收集工具(Userrecon)

这个工具最主要的功能就是可以让你在知道用户名的情况下批量去各个社交网站上查找这个用户名的主页,方便收集对象的主页

41240
来自专栏GIS讲堂

eclipse中建geoserver源码

概述:本文讲述的是在eclipse中如何构建geoserver源码工程,其中涉及到了jdk,github,marven等。

16830
来自专栏张善友的专栏

MS 的IOC容器(ObjectBuilder)?

MS 的 Net Framework 2.0的Enterprise Library - November 2005 CTP 和Composite User I...

20770
来自专栏张善友的专栏

Windows Server AppFabric Beta 2 已经发布

Windows Server AppFabric Beta 2是一个包含完全功能的AppFabric版本(This build represents our “...

18850

扫码关注云+社区

领取腾讯云代金券