Bash编辑文件并保留最后500行

Liz*_*ard 6 bash logging tail

我正在寻找创建一个cron作业,打开一个目录循环遍历我创建的所有日志并删除所有行,但保留最后500个例如.

我在考虑一些事情

tail -n 500 filename > filename

这会有用吗?

我也不知道如何在bash中遍历目录.

小智 14

如果某些服务当前打开了要截断的日志文件,那么使用mv与之前的答案一样会中断这些服务.这可以通过使用猫来轻松克服:

tail -n 1000 myfile.log > myfile.tmp
cat myfile.tmp > myfile.log
Run Code Online (Sandbox Code Playgroud)


tan*_*ius 5

考虑使用logrotate.
它不会做你想要的(删除所有行,但删除最后500行),但它可以处理大于特定大小的日志文件(通常通过压缩旧文件并在某些时候删除它们).应广泛使用.