当 df -h 返回 98% 已满时如何执行命令
我有一个磁盘,它位于
/dev/sdb1 917G 816G 55G 94% /disk1
如果它的回报98%满了,我想做以下几点
find . -size +80M -delete
我该怎么做,我将使用 cron 运行 shell 脚本
* * * * * sh /root/checkspace.sh
执行df -h
,将命令输出通过管道传输到匹配grep
"/dev/sdb1",并按 awk
处理该行,检查第 5 列的数字部分(awk
术语$5
)是否大于或等于 98。不要忘记检查它是否超过 98 的可能性。
您需要计划脚本,检查磁盘利用率,如果利用率约为 98%,则删除文件。
要调度脚本,您可以参考维基百科 Cron 条目。
有一个使用 find 命令删除 Unix 和 Linux 站点上文件的示例:"如何根据find
输出删除目录?"
对于测试,需要测试构造和命令替换。请注意,您将使用 "backticks" 表示 sh,但对于 bash,$(...) 形式已取代反引号用于命令替换。
要获取磁盘利用率,您可以使用:
df | grep -F "/dev/sdb1" | awk '{print $5}'
--这是一个功能性的 grep 来获取您的特定磁盘,awk 用于拉出第 5 列,tr 带有删除标志以摆脱百分号。
您的测试可能如下所示:
if [ `df | grep -F "/dev/vda1" | awk '{print $5}' | tr -d %` -ge 98 ];
then echo "Insert your specific cleanup command here.";
fi
当然,有很多方法可以解决这个问题,但希望对您有所帮助!