Linux服务器的根目录可能会由于日志过多而爆满,影响运行的服务。
为此,希望定期检查根目录的磁盘占用率,当占用率过高则删除相应的日志文件。
可以编写如下shell脚本:
usage=`df -h | awk '$6=="/"{sub("%","",$5);print $5}'`
if [ $usage -gt 90 ]; then
find /data/tomcat/logs/ -type f -size +2G -exec rm -f {} \;
fi
解释一下:
1. 变量usage
意义为根目录的占用率。
df -h 是列出文件系统的整体磁盘使用量。
awk '$6=="/"{sub("%","",$5);print $5}' 是从查询的磁盘使用量中做子查询,找到根目录的使用率。awk方法就是把内容逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。),$6=="/" 切分的第6个区域是否为"/"根目录,如果是,则取该行第5个区域($5)的值,并用""替换掉"%",然后赋值为usage。
2. if判断(关于shell的if [] 表达式的简要解释)
[ $usage -gt 90 ] 当根目录的占用率大于90%,则执行删除命令。
3. 查找并删除
find /data/tomcat/logs/ -type f -size +2G -exec rm -f {} \;
在/data/tomcat/logs/路径下查找大小超过2G(-size +2G)的文件( -type f ),并执行删除(rm -f {},{}代表查找出来的文件,;代表结束符, 用\做转义;结束)。