前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >磁盘分区空间检测工具

磁盘分区空间检测工具

作者头像
院长技术
发布2020-09-07 15:04:20
8900
发布2020-09-07 15:04:20
举报
文章被收录于专栏:院长运维开发院长运维开发

!/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 () {

代码语言:javascript
复制
echo "$(date +%F\ %T)|$$|$BASH_LINENO|info|job success: $*" 
exit 0

}

die () {

代码语言:javascript
复制
echo "$(date +%F\ %T)|$$|$BASH_LINENO|error|job fail: $*" >&2
exit 1

}

usage() {

代码语言:javascript
复制
cat <<_OO_

USAGE:

代码语言:javascript
复制
$0 <directory> [top N]

OO

代码语言:javascript
复制
exit 1

}

判断参数

specified_directory="

判断指定目录合法性

if [[ -z "

代码语言:javascript
复制
usage

fi

如果没有指定或指定的top N不合法则设置为默认值10

if ! ( echo "

代码语言:javascript
复制
top_n=10

fi

判断服务器负载

is_load_limit=1 #0代表关闭负载开关,1代表打开负载开关,当打开负载开关时,如果服务器高于2/每核,则禁止脚本运行

if [[ $is_load_limit -eq 1 ]];then

代码语言:javascript
复制
#获取服务器负载
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

代码语言:javascript
复制
[[ -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

代码语言:javascript
复制
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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • !/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: ---
  • ===============================================================================
  • 判断参数
  • 判断指定目录合法性
  • 如果没有指定或指定的top N不合法则设置为默认值10
  • 判断服务器负载
  • 创建临时文件
  • 开始统计文件大小
  • 打印没有权限日志
  • 删除临时文件
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档