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. 꼬리 잘린 파일
  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;

하지만 가능하다면 좀 더 세련된 것을 찾고 있어요

관련 정보