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
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