如何将文件保存在N行以下?

时间:2009-06-17 17:05:17

标签: bash

我有一个应该有最新N个条目的日志。如果文件稍微大一点就没有问题。

我的第一次尝试是定期运行:

tail -n 20 file.log > file.log

不幸的是,这只会清空文件。我可以:

tail -n 20 file.log > .file.log; mv .file.log file.log

然而,这看起来很混乱。还有更好的方法吗?

3 个答案:

答案 0 :(得分:6)

听起来你正在寻找logrotate

答案 1 :(得分:2)

我同意,logrotate可能就是你所需要的。如果您仍然需要命令行解决方案,这将完成工作。 Ex是一个行编辑器。除了在shell脚本中使用之外,没有人再使用行编辑器。语法用于Sh / Ksh / Bash shell。我认为它在C shell中是一样的。

ex log.001 << HERE
$
-20
1,-1d
w
q
HERE

答案 2 :(得分:1)

logrotatesize=xxx其中xxx是20行的近似大小,可能delaycompress使前一个也是人类可读的。