限制变量日志文件的大小

限制变量日志文件的大小

如何限制 bash 脚本中以“foo.txt”形式保存的日志文件的大小?我想放入变量“LOGFILE=50 mb”,它使用该大小,或者 LOGFILE 的任何大小。

这是在 Debian 7 上,完全是最新的。

答案1

您需要使用日志旋转。做这样的事情

猫 /etc/logrotate.conf

/路径/foo.txt {

    size 50M

    create 700 root root

    rotate 5

}

size 50M – 仅当文件大小等于(或大于)此大小时,logrotate 才会运行。

创建 – 旋转原始文件并使用指定的权限、用户和组创建新文件。

旋转 – 限制日志文件轮换的数量。因此,这将仅保留最近 5 个轮换的日志文件。

答案2

我曾经tail这样做过。这更像是一个快速而肮脏的解决方案logrotate,但它确实完成了工作。

这是我在脚本中添加的内容:

# in the preceding lines, the log file is updated, with new content at the 
# bottom.
# every update causes the file to exceed the size limit (set to 1MB)

# using tail, put the last 1MB of the file in a temporary file
/usr/bin/tail -c 1MB /your/path/here/logfile.log > /your/path/here//temp 2>&1

# overwrite the older and oversized log file with the new one
/bin/mv /your/path/here/temp /your/path/here/logfile.log

答案3

类似的事情?

LF=foo.txt
typeset -i LFSB LFSM LOGFILE=50
let LFSB=$(stat -c "%s" $LF)
# This is bytes - turn into MB, base 2
let LFSM=${LFSB}/1048576
if [ $LFSM -gt $LOGFILE ]
  then
    echo Logfile $LF is greater than $LOGFILE MB
  else
    echo Logfile $LF is less or equal than $LOGFILE MB
fi

相关内容