जब मुझे फ़ाइल परिवर्तनों का पता लगाने की आवश्यकता होती है और जो कुछ 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कंसोल बी में दिखाई देने वाले निम्न आउटपुट :
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।