Unix 将shell脚本执行的日志文件保留到过去几天

Unix 将shell脚本执行的日志文件保留到过去几天,unix,shell,standard-error,Unix,Shell,Standard Error,我在unix bok上追加shell脚本执行的标准输出和错误,如下所示 /home/mydir/shellScript.sh >> /home/mydir/shellScript.log 2>&1 现在我想知道一种方法,让日志可以追溯到30天之前,否则日志文件的大小将继续增加。 如果有人能提供同样的建议,我们将不胜感激 这类工作通常是用工具完成的,例如 例如,在Apache的日志中,我看到它曾经: 每天一次,将当前文件移动到另一个文件(每天有一个日志文件),gzip

我在unix bok上追加shell脚本执行的标准输出和错误,如下所示

/home/mydir/shellScript.sh >> /home/mydir/shellScript.log 2>&1
现在我想知道一种方法,让日志可以追溯到30天之前,否则日志文件的大小将继续增加。
如果有人能提供同样的建议,我们将不胜感激

这类工作通常是用工具完成的,例如

例如,在Apache的日志中,我看到它曾经:

  • 每天一次,将当前文件移动到另一个文件(每天有一个日志文件),gzip压缩前一天的结果文件
  • 删除超过1周的存档文件

因此,我想您可能可以使用它来获得所需的内容。

这是一个长期运行的脚本(例如守护进程)?或者它会做些什么然后很快退出?您可以根据今天的日期动态生成日志文件的名称,以便在日期更改时生成新文件:

#/bin/sh
now=`date +%F`
/home/mydir/shellScript.sh >> /home/mydir/shellScript-$now.log 2>&1
previous=`date --date='30 days ago' +%F`
rm -f /home/mydir/shellScript-$previous.log 2>&1

(添加了陈旧日志删除)。

您的问题没有太多上下文

我同意提供的两种解决方案

我还想给你指出我的两个相当冗长的问题;-)讨论命名和管理日志文件


我希望这些帮助。

Pascal MARTIN是正确的-将配置文件放入
/etc/logrotate.d
,或者在文件的末尾添加一个条目是很简单的,因为
logrotate
在大多数UNIX系统中都有。这是一个非常容易理解的配置文件,在手册页上大约需要5分钟才能理解。我推荐它作为最简单、最易维护的解决方案。

为什么不在每个日志条目旁边写上一个日期,并在写入日志时读取最后一个日期,如果已经过去30天了,则将文件截断,然后追加?有趣!但是,我需要在crontab文件中添加此项。没有理由您不能在另一个shell脚本中添加此项,您可以将其添加到crontab。一个脚本可以很容易地调用另一个脚本。日志文件不会一直以这种方式累积吗?我必须清除它们吗?它们会,你必须删除旧的,这也可以在同一个shell脚本中完成。
date
命令可以使用相关命令,如
date--date='30天前'
,您可以从中生成较旧的日志文件名并对其进行管理。请编辑您的初始响应,并以一周为例,在一个脚本中显示所有内容。那肯定会有帮助的!任何关于logrotate的参考文献最好都有能帮助我快速跟上进度的例子。