一、shell脚本
#!/bin/bash
clearfile () {
#获取磁盘使用率
disksize=$(df /| awk '/\//{print$5}')
#获取文件夹内,文件大小(M为单位)和文件路径
filesizeandfile=$(du -sm /appdata/tomcat-creditcard/logs/* |awk '{print $1,$2}'|sort -rn|head -n 1)
#调用clear函数清空文件
clear $filesizeandfile
}
clear(){
read filesize filepath<<< `echo "$filesizeandfile" | awk '{print $1,$2}'`
echo '文件大小:' $filesize
echo '文件路径:' $filepath
echo '磁盘空间' $disksize
#获取文件名
filename=${filepath##*/}
echo "文件名:" $filename
#判断磁盘使用率是否大于某个值,判断文件大小是否大于某个值,判断文件名是否包含log字符
if [ "95" -le "${disksize%%%}" ] && [ "1000" -le "$filesize" ] ; then
echo '磁盘使用率超过95%,且文件大于1000M'
if [[ $filename =~ "log" ]] || [[ $filename == "catalina.out" ]]; then
echo '清空文件' $filepath
echo ""> $filepath
else
echo '文件名不包含log,或者文件名不是catalina.out'
fi
else
echo '磁盘空间充足或者文件较小'
fi
}
clearfile &
二、赋予执行权限
chmod 777 clearfile.sh
三、脚本难点解决
1.如何获取磁盘使用率
df /| awk ‘///{print$5}’
2.如何获取文件夹中的文件大小和文件路径
du -sm /appdata/tomcat-creditcard/logs/* |awk ‘{print $1,$2}’ (-sm文件大小以M为单位)
3.排序
sort -rn
4.获取第一条数据
head -n 1
5.if语句使用记得加空格,否则会报错
少了空格
正确写法