我认为这应该是对ThinkingMedia在这个问题(Check free disk space for current partition in bash)上的回答的评论或编辑,但是我不允许发表评论(没有足够的代表)并且我的编辑被拒绝(原因:"this should be a comment or an answer") . 所以请,SO宇宙的力量,不要't damn me for repeating and fixing someone else' s "answer" . 但是互联网上有人错了!™他们不会让我解决它 .
代码
df --output=avail -h "$PWD" | sed '1d;s/[^0-9]//g'
对于可能希望使用它来监视服务器上的挂载点的人的完整示例 . 此示例将检查/ var / spool是否低于5G并通过电子邮件发送给该人员:
#!/bin/bash
# -----------------------------------------------------------------------------------------
# SUMMARY: Check if MOUNT is under certain quota, mail us if this is the case
# DETAILS: If under 5G we have it alert us via email. blah blah
# -----------------------------------------------------------------------------------------
# CRON: 0 0,4,8,12,16 * * * /var/www/httpd-config/server_scripts/clear_root_spool_log.bash
MOUNTP=/var/spool # mount drive to check
LIMITSIZE=5485760 # 5G = 10*1024*1024k # limit size in GB (FLOOR QUOTA)
FREE=$(df -k --output=avail "$MOUNTP" | tail -n1) # df -k not df -h
LOG=/tmp/log-$(basename ${0}).log
MAILCMD=mail
EMAILIDS="dude@wheres.mycar"
MAILMESSAGE=/tmp/tmp-$(basename ${0})
# -----------------------------------------------------------------------------------------
function email_on_failure(){
sMess="$1"
echo "" >$MAILMESSAGE
echo "Hostname: $(hostname)" >>$MAILMESSAGE
echo "Date & Time: $(date)" >>$MAILMESSAGE
# Email letter formation here:
echo -e "\n[ $(date +%Y%m%d_%H%M%S%Z) ] Current Status:\n\n" >>$MAILMESSAGE
cat $sMess >>$MAILMESSAGE
echo "" >>$MAILMESSAGE
echo "*** This email generated by $(basename $0) shell script ***" >>$MAILMESSAGE
echo "*** Please don't reply this email, this is just notification email ***" >>$MAILMESSAGE
# sending email (need to have an email client set up or sendmail)
$MAILCMD -s "Urgent MAIL Alert For $(hostname) AWS Server" "$EMAILIDS" < $MAILMESSAGE
[[ -f $MAILMESSAGE ]] && rm -f $MAILMESSAGE
}
# -----------------------------------------------------------------------------------------
if [[ $FREE -lt $LIMITSIZE ]]; then
echo "Writing to $LOG"
echo "MAIL ERROR: Less than $((($FREE/1000))) MB free (QUOTA) on $MOUNTP!" | tee ${LOG}
echo -e "\nPotential Files To Delete:" | tee -a ${LOG}
find $MOUNTP -xdev -type f -size +500M -exec du -sh {} ';' | sort -rh | head -n20 | tee -a ${LOG}
email_on_failure ${LOG}
else
echo "Currently $(((($FREE-$LIMITSIZE)/1000))) MB of QUOTA available of on $MOUNTP. "
fi
8 回答
要了解linux中GB或TB中特定目录的用法,命令是,
df -h /dir/inner_dir/
df -sh /dir/inner_dir/
并且知道linux中位的特定目录的用法命令是,
df-k /dir/inner_dir/
是:
对于当前目录 .
如果要检查特定目录 .
如果系统有,您可能还想查看
stat(1)
命令 . 您可以指定输出格式,以便脚本更容易解析 . 这是一个小例子:df
command:报告文件系统磁盘空间使用情况du
命令:估计文件空间使用情况键入
df -h
或df -k
以列出可用磁盘空间:要么
du
显示一个或多个文件或目录正在使用多少空间 .-s
选项汇总目录正在使用的空间,-h
选项提供 Human-readable 输出 .我认为这应该是对ThinkingMedia在这个问题(Check free disk space for current partition in bash)上的回答的评论或编辑,但是我不允许发表评论(没有足够的代表)并且我的编辑被拒绝(原因:"this should be a comment or an answer") . 所以请,SO宇宙的力量,不要't damn me for repeating and fixing someone else' s "answer" . 但是互联网上有人错了!™他们不会让我解决它 .
代码
有一个重大的缺陷:是的,它将输出
50G
免费为50 - 但它也将输出5.0M
免费为50或3.4G
免费为34或15K
免费为15 .要创建一个脚本以检查一定数量的可用磁盘空间,您必须知道要检查的单元 . 删除它(如上面的示例中的
sed
),数字不再有意义 .如果你真的想要它工作,你将不得不做这样的事情:
同样对于
df -k $INSTALL_TARGET_DIRECTORY
的安装程序可能比df -k "$PWD"
更有意义 . 最后请注意,每个版本的df / linux都没有--output
标志 .对于可能希望使用它来监视服务器上的挂载点的人的完整示例 . 此示例将检查/ var / spool是否低于5G并通过电子邮件发送给该人员:
你这样得到大小的字节数 .
使用字母以人类可读的格式获取当前可用磁盘空间 . 以下将输出当前分区的可用空间,删除 Headers 和条带字母 .
输出
50G
免费为50
.在bash脚本中使这部分空闲磁盘空间条件 .
输入命令shell:
要么
要么
它将显示每个安装点的可用磁盘空间列表 .
您也可以显示/查看单列 .
类型:
注意:这里的3是列号 . 您可以选择所需的列 .