Unix 将shell脚本执行的日志文件保留到过去几天
我在unix bok上追加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
/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的参考文献最好都有能帮助我快速跟上进度的例子。