磁盘分区空间检测工具
时间:2022-07-24
本文章向大家介绍磁盘分区空间检测工具,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
!/usr/bin/env bash
===============================================================================
FILE: find_disk_usage.sh
USAGE: ./find_disk_usage.sh <directory> [top N]
DESCRIPTION: 根据指定目录,查找出目录下占用空间最大的top N目录和文件,如果没有指定top N,默认为top 10
OPTIONS: ---
REQUIREMENTS: ---
BUGS: ---
NOTES: ---
ORGANIZATION: 院长
CREATED: 2020/09/05
REVISION: ---
===============================================================================
ok () {
echo "$(date +%F %T)|$$|$BASH_LINENO|info|job success: $*"
exit 0
}
die () {
echo "$(date +%F %T)|$$|$BASH_LINENO|error|job fail: $*" >&2
exit 1
}
usage() {
cat <<_OO_
USAGE:
$0 <directory> [top N]
OO
exit 1
}
判断参数
specified_directory="
判断指定目录合法性
if [[ -z "
usage
fi
如果没有指定或指定的top N不合法则设置为默认值10
if ! ( echo "
top_n=10
fi
判断服务器负载
is_load_limit=1 #0代表关闭负载开关,1代表打开负载开关,当打开负载开关时,如果服务器高于2/每核,则禁止脚本运行
if [[ $is_load_limit -eq 1 ]];then
#获取服务器负载
cu_load=$( awk '{print $1}' /proc/loadavg )
[[ -z "$cu_load" ]] && die "get loadavg fail"
#获取CPU核数
cpu_core_count=$( grep 'processor' /proc/cpuinfo|wc -l )
[[ $cpu_core_count -eq 0 ]] && "get cpu core count fail"
#计算可以支持的最大负载
core_count_limit=$((cpu_core_count*2))
[[ $( expr $cu_load > $core_count_limit ) -ne 0 ]] && die "Current server load $cu_load , limited is $core_count_limit, to stop working"
fi
创建临时文件
temp_file=$( mktemp )
开始统计文件大小
top_count=1 echo "File or directory disk usage top $top_n:" while read usage_m file_path do
[[ -f $file_path ]] && file_type="File"||file_type="Directory"
echo "Top.${top_count} ${usage_m}(MB) ${file_type} $file_path"
top_count=$((top_count+1))
done <<< "temp_file|sort -nr|head -{top_n} )"
打印没有权限日志
if [[ -s $temp_file ]];then
cu_user=$( id|awk '{print $1}' )
echo
echo "Current user $cu_user does not have permissions for the following directory or file:"
cat $temp_file
fi
删除临时文件
[[ -f temp_file ]] && rm -f
- split-brain 脑裂问题(Keepalived)
- Android新手之旅(3) 信息的输出
- Nginx code 状态码说明
- Flash/Flex学习笔记(6):制作基于xml数据源的flv视频播放器
- proxy_pass根据path路径转发时的"/"问题记录
- 温故而知新:查看端口占用情况以及DOS中的管道操作/重定向操作
- Android新手之旅(7) RadioButton的自定义
- Flash/Flex学习笔记(4):如何打开网页及Get/Post数据
- Flash/Flex学习笔记(5):捕获摄像头(续)--在线抓屏并保存到客户端本地
- 分布式监控系统Zabbix--使用Grafana进行图形展示
- Silverlight在线创建PDF(支持中文)
- Flash/Flex学习笔记(3):动态添加组件
- Flash/Flex学习笔记(1):Hello World!
- 数据库常规操作
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- iOS 图像处理技术追踪-Core Image
- Android BottomSheetDialog使用实现底部拖动弹窗
- Android 滑动渐变背景Toolbar、点击置顶ScrollView
- Android 自定义View 画圆(奥运五环)
- Android 触摸屏交互之手势监听
- Android Glide加载网络图片不显示,但用网页打开又正常显示
- Android获取APP的版本号和版本名
- Android 在一个APP里打开另一个APP
- Android 自定义加载动画Dialog弹窗
- Android 天气APP(十一)未来七天的天气预报、逐小时预报、UI优化
- Android 天气APP(十)继续优化、下拉刷新页面天气数据
- Activity 活动跳转(Java&Kotlin)
- Android 天气APP(九)细节优化、必应每日一图
- Android CheckBox修改选中颜色并去除选中时的水波纹效果
- 绘制带回归线的散点图