#!/bin/sh
# -----------------------------------------------------
# 定时 每日2点15分 执行
# -----------------------------------------------------
echo "---------定时删除文件的1/3防止日志文件过大---------"
filePath="/data/日志文件名.log"
# fileRows=`wc -l "${filePath}"`
fileRows=`awk 'END {print NR}' "${filePath}"`
echo "删除前总行数:"$fileRows
delEnd=$(($fileRows/3))
echo "即将删除行数:"$delEnd
# 删除文件内容,使用双引号变量直接引用
sed -i "1,${delEnd}d" "${filePath}"
fileRows=`awk 'END {print NR}' "${filePath}"`
echo "删除后总行数:"$fileRows
进阶:文件大小大于某个值时删除
#!/bin/sh
# --------------------------------------------------------
# 定时 每日2点15分 执行
# --------------------------------------------------------
echo "---------定时删除文件的1/3防止日志文件过大---------"
filePath="/data/日志文件名.log"
filesize=`ls -l $filePath | awk '{ print $5 }'`
# 1024*1000=1M,下面最大size为5M
maxsize=$((1024*1000*5))
echo "删除前Bytes:"$filesize
if [ $filesize -gt $maxsize ]
then
echo "$filesize > $maxsize"
# fileRows=`wc -l "${filePath}"`
fileRows=`awk 'END {print NR}' "${filePath}"`
echo "删除前总行数:"$fileRows
delEnd=$(($fileRows/3))
echo "即将删除行数:"$delEnd
# 删除文件内容,使用双引号变量直接引用
sed -i "1,${delEnd}d" "${filePath}"
fileRows=`awk 'END {print NR}' "${filePath}"`
echo "删除后总行数:"$fileRows
filesize=`ls -l $filePath | awk '{ print $5 }'`
echo "删除后Bytes:"$filesize
else
echo "$filesize < $maxsize"
fi