工作中經常會碰到服務日誌佔滿服務器磁盤,如果不去清理,服務就可能無法正常工作。適當提高日誌的打印級別,如info級別提高到warn可以臨時緩解下,但也不長久之際,
還得寫個腳本定時清理下。
#!/bin/bash
#clearLog.sh
nginxDir=/usr/local/nginx/logs/*
devInfo=($(df -l | awk '{print $1}')) #日誌所處的磁盤
perInfo=($(df -l | awk '{print int($5)}')) #磁盤使用率
for i in `seq 0 ${#perInfo[@]}`;
do
if [[ ${devInfo[i]} = '/dev/xvda1' ]] && [[ ${perInfo[i]} -ge 80 ]];
then
for file in $nginxDir;
do
exist=`echo $file | awk '{if(match($0,/\.log/)) print "yes"}'`;
if [[ -f $file ]] && [[ ${exist} = yes ]];
then
echo '' > $file;
echo $(date) $file "clear log ok!" >> /var/log/clear.log ;
fi;
done
fi;
done
確定日誌所處磁盤的使用情況,一般使用率達到80%就可以進行清理了。
接着起個定時任務:
crontab -e
輸入:
0/30 * * * * /xxx/clearLog.sh
每隔30分鐘檢測一次磁盤使用情況