我有一个永久记录文件的命令,在我的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