如何限制 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