我如何截断日志文件从下往上的最大行数?

  • 本文关键字:何截断 日志 文件 bash
  • 更新时间 :
  • 英文 :


我有一个永久记录文件的命令,在我的Ubuntu 20.04服务器机器上的日志文件的结尾追加行。

我想定期从使用bash的文件顶部修剪行,使文件n行长,或者如果行数已经小于或等于n,则保持不变。

我可能有一个日志文件,看起来像这样:

$ cat logfile
1
2
3

我想运行这样的命令:

$ trimit -n 2 logfile
$ cat logfile
2
3

我保留了最后两行,并删除了其他的。

tail -n 2 logfile > trimmed_file

编辑

经过一番搜索,我发现了linux上的flock实用程序。这个线程显示即使logrotate也不会自动使用它:https://serverfault.com/questions/762558/log-backup-clashes-with-log-rotation

这是一个关于这个实用程序的很好的教程:https://www.baeldung.com/linux/file-locking

基本上你可以这样做(让来源是trim.sh):

$ cat trim.sh
#!/bin/bash
tail -n 2 logfile > logfile.tmp
mv logfile.tmp logfile
$ chmod +x trim.sh
$ echo -en "1n2n3n4n5n6n" > logfile
$ cat logfile
1
2
3
4
5
6
$ flock --verbose logfile ./trim.sh
flock: getting lock took 0.000005 seconds
flock: executing ./trim.sh
$ cat logfile
5
6

相关内容

  • 没有找到相关文章

最新更新