2

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

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

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

4

4 回答 4

4

这种事情通常是用诸如logrotate.

例如,对于 Apache 的日志,我已经看到它曾经:

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

所以,我想你也许可以用它来得到你想要的。

于 2011-07-20T22:09:56.877 回答
3

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

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

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

于 2011-07-20T22:13:53.643 回答
1

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

于 2011-07-21T19:47:18.250 回答
0

您的问题没有很多上下文。

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

我还要向您指出我关于命名和管理日志文件的 2 篇相当冗长的 ;-) 论述。

程序的bash管道输出和输入

2 面板文件管理器用户的命令行智慧

我希望这些帮助。

于 2011-07-20T23:22:20.830 回答