tail -n 10 正在截断我的整个文件

tail -n 10 正在截断我的整个文件

我有这两个脚本,其中一个正在写入文件:

#!/usr/bin/env bash

while true; do
   sleep 1;
   echo "$(uuidgen)"  >> /tmp/cprev.stdout.log
done;

另一种是读取最后 10 行并用这 10 行覆盖文件:

#!/usr/bin/env bash

while true; do
   sleep 5;
   inotifywait -e modify /tmp/cprev.stdout.log | tail /tmp/cprev.stdout.log > /tmp/cprev.stdout.log
done;

由于某种原因,tail 命令正在截断文件 - 我想做的是仅当 tail 命令完成从文件中获取所有 10 行时才写入文件,我该怎么做?

实际发生的情况:

  1. 尾部截断文件
  2. 尾部读取 0 行

但我想做的是:

  1. 尾部读取10行
  2. tail 截断文件
  3. tail 从上面写入 10 行

我怎样才能做到这一点?

答案1

我想这可行:

#!/usr/bin/env bash

while true; do
   sleep 5;
   inotifywait -e modify /tmp/cprev.stdout.log | while read line; do
      lines="$(tail /tmp/cprev.stdout.log)"
      echo "$lines" > /tmp/cprev.stdout.log
   done;
done;

但如果可能的话我正在寻找更时尚的东西

相关内容