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

时间:2011-07-20 22:06:10

标签: unix shell standard-error

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

/home/mydir/shellScript.sh >> /home/mydir/shellScript.log 2>&1

现在我想知道一种方法来保持日志回溯30天,否则日志文件大小将继续增加。 如果有人可以提供相同的建议,将不胜感激。

4 个答案:

答案 0 :(得分:4)

这种情况通常使用logrotate等工具完成。

例如,使用Apache的日志,我已经看到过:

  • 每天一次,将当前文件移动到另一个文件(每天有一个日志文件),gzipping前一天生成的文件
  • 删除超过1周的存档文件

所以,我想你可以用它来得到你所要求的东西。

答案 1 :(得分:2)

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

#/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

(添加过时的日志删除)。

答案 2 :(得分:1)

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

答案 3 :(得分:0)

包含的问题背景不是很多。

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

我还会指出你关于命名和管理日志文件的2篇相当啰嗦的文章。

Bash piping output and input of a program

command line wisdom for 2 panel file manager user

我希望这些帮助。