2

这似乎是一个微不足道的问题,但我没有找到解决方案。
我在 Debian/Linux 上的 php 安装中有许多日志文件,它们往往会增长很多,我想每晚修剪到最后 500 行左右。我该怎么做,可能在 shell 中并将命令应用于 *log?

4

3 回答 3

3

为此,我建议使用logrotate您喜欢的配置,而不是编写自己的脚本。

于 2013-11-08T17:41:02.963 回答
1

可能有一种更优雅的方式以编程方式执行此操作,但可以为此使用tailfor 循环:

for file in *.log; do
    tail -500 "$file" > "$file.tmp"
    mv -- "$file.tmp" "$file"
done
于 2013-11-08T17:43:00.317 回答
0

如果您想保存旧文件的历史记录,您应该查看logrotate

否则,这可以通过命令行轻松完成:

LOGS="/var/log"
MAX_LINES=500

find "$LOGS" -type f -name '*.log' -print0 | while read -d '' file; do
  tmp=$(mktemp)
  tail -n $MAX_LINES $file > $tmp
  mv $tmp $file      
done
于 2013-11-08T17:41:40.300 回答