Shell 日志文件滚动

Shell 日志文件滚动,shell,Shell,我有一个自定义脚本正在运行,我想将脚本的输出和几个执行阶段重定向到日志文件 我的要求是-当日志文件的大小超过20MB时,我会将内容移动到一个新文件中,我的脚本会重新创建日志文件。在任何时候,我都会有一个最近日志内容的备份。我试图提出以下逻辑: if [ -e "$logfile" ] then logsize=ls -l $logfile |awk '{print $5}' ls -l $logfile |awk '{print $5}' if [ "$logs

我有一个自定义脚本正在运行,我想将脚本的输出和几个执行阶段重定向到日志文件

我的要求是-当日志文件的大小超过20MB时,我会将内容移动到一个新文件中,我的脚本会重新创建日志文件。在任何时候,我都会有一个最近日志内容的备份。我试图提出以下逻辑:

if [  -e "$logfile" ]

then

    logsize=ls -l $logfile |awk '{print $5}'

    ls -l $logfile |awk '{print $5}'

    if [ "$logsize" -gt 2097152 ]

    then

        mv $logfile $(date +"%Y%m%d%H%M").log

        touch $logfile

    fi

else

    touch $logfile

fi

我想听听专家们的想法,如果有其他有效的方法来完成这项任务,请告诉我。

我认为您应该使用
logrotate
命令,或者构建自定义脚本

读一读这个

您的需求的示例配置如下所示:

/var/log/logfile {
   missingok
   size 20M       
   rotate 5

}

感谢Ander2提供的意见