내가 파일 변경 사항을 감지하고있는 것보다 다른 것을해야 할 때 tail -f filename
수행을, 내가 사용했습니다 inotifywait
변화를 감지하고 그것을 바탕으로 행동하는 스크립트에서. 사용 예는 다음과 같습니다. man inotifywait
다른 이벤트 이름 및 스위치를 참조하십시오 . inotify-tools
를 통해 패키지 를 설치해야 할 수도 있습니다 sudo apt-get install inotify-tools
.
다음은 예제 스크립트입니다 exec-on-change
.
#!/bin/sh
# Detect when file named by param $1 changes.
# When it changes, do command specified by other params.
F=$1
shift
P="$*"
# Result of inotifywait is put in S so it doesn't echo
while S=$(inotifywait -eMODIFY $F 2>/dev/null)
do
# Remove printf if timestamps not wanted
printf "At %s: \n" "$(date)"
$P
done
두 콘솔에서 다음과 같이 명령을 입력했습니다 (여기서 A>는 콘솔 A의 항목을 의미하고 B>는 콘솔 B의 항목을 의미합니다).
A> rm t; touch t
B> ./exec-on-change t wc t
A> date >>t
A> date -R >>t
A> date -Ru >>t
A> cat t; rm t
cat t
콘솔 A에 다음과 같은 출력이 나타 납니다 .
Thu Aug 16 11:57:01 MDT 2012
Thu, 16 Aug 2012 11:57:04 -0600
Thu, 16 Aug 2012 17:57:07 +0000
exec-on-change
콘솔 B에 다음과 같은 출력이 나타 납니다 .
At Thu Aug 16 11:57:01 MDT 2012:
1 6 29 t
At Thu Aug 16 11:57:04 MDT 2012:
2 12 61 t
At Thu Aug 16 11:57:07 MDT 2012:
3 18 93 t
exec-on-change
나는 경우 스크립트는 종료 rm
거라고 t
.