tail 명령을 사용하면 파일 길이(바이트)의 변경을 나타내는 이벤트를 수신할 수 있습니다.
파일 내용이 변경되었지만 길이가 같은 경우 이벤트를 수신하는 방법을 찾고 있습니다. 특히 파일의 첫 번째 또는 두 번째 줄의 변경 사항을 수신합니다.
(head 명령이 이를 수행할 것으로 예상할 수 있지만 실제로는 수행됩니다.아니요head 명령이 변경 사항을 수신할 수 있는 것처럼 보이며 콘텐츠의 시작 부분만 가져옵니다. )
파일 내용(특히 파일의 시작 부분)에 대한 변경 사항을 수신할 수 있는지 아는 사람이 있습니까?
파일에 데이터를 추가하는 프로세스와 파일의 첫 번째 줄을 읽고 삭제하는 프로세스가 있다는 점에 유의하세요.
파일 헤더 변경 사항을 독립적으로 수신하는 데 관심이 있지만 파일에 첨부된 이벤트를 캡처하거나 필터링할 수 있기를 원하지 않습니다.
답변1
어쩌면 다음과 같은 것일 수도 있습니다.
#!/bin/bash
while true; do
diff -q <(head -n 1 fileA.txt) <(head -n 1 fileB.txt)
sleep 5
done
다음 두 파일( fileA.txt
및 fileB.txt
)이 주어지면:
cat fileA.txt fileB.txt
foo
bar
foo
bar
내가 바뀔 때첫 번째좋아요 fileA.txt
:
cat fileA.txt
fooo
bar
스크립트에서 다음 출력을 얻습니다.
./checkFirst.sh
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
Files /dev/fd/63 and /dev/fd/62 differ
내가 변하면두번째좋습니다. 스크립트에서는 아무 일도 일어나지 않고 계속 반복됩니다.
cat fileA.txt
foo
barbara
Mac OS X 10.11.6 및 다음에서 테스트되었습니다.
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.