যখন আমাকে ফাইলের পরিবর্তনগুলি সনাক্ত করতে এবং যা করা ছাড়া অন্য কিছু করতে হবে 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> 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
কনসোল এ থেকে নিম্নলিখিত আউটপুট উপস্থিত হয়েছিল:
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
।