标签: bash
我有一个应该有最新N个条目的日志。如果文件稍微大一点就没有问题。
我的第一次尝试是定期运行:
tail -n 20 file.log > file.log
不幸的是,这只会清空文件。我可以:
tail -n 20 file.log > .file.log; mv .file.log file.log
然而,这看起来很混乱。还有更好的方法吗?
答案 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)
logrotate,size=xxx其中xxx是20行的近似大小,可能delaycompress使前一个也是人类可读的。
size=xxx
delaycompress