inotifywait -m
এটি "মনিটর" মোড : এটি কখনই প্রস্থান করে না। শেলটি এটি চালায় এবং লুপটির বডি চালাবেন কিনা তা জানতে বহির্গমন কোডটির জন্য অপেক্ষা করে, তবে তা কখনই আসে না।
যদি আপনি অপসারণ করেন তবে -m
এটি কাজ করবে:
while inotifywait -r -e close_write "/root/secondfolder/"
do
echo "close_write"
done
উত্পাদন করে
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
/root/secondfolder/ CLOSE_WRITE,CLOSE bar
close_write
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
...
ডিফল্টরূপে, ইনোটিফাইয়েট "প্রথম ইভেন্টটি ঘটে যাওয়ার পরে প্রস্থান করবে", যা আপনি লুপ অবস্থায় চান।
পরিবর্তে, আপনি এর স্ট্যান্ডার্ড আউটপুট পড়তে পছন্দ করতে পারেন inotifywait
:
#!/bin/bash
while read line
do
echo "close_write: $line"
done < <(inotifywait -mr -e close_write "/tmp/test/")
এই (বাশ) স্ক্রিপ্টটি inotifywait
কমান্ডের প্রতিটি আউটপুট লাইনটি প্রক্রিয়া প্রতিস্থাপন$line
ব্যবহার করে লুপের অভ্যন্তরে চলকটিতে পড়বে । এটি প্রতিবার লুপের চারপাশে পুনরাবৃত্ত ঘড়িগুলি সেট আপ করা এড়িয়ে যায়, এটি ব্যয়বহুল হতে পারে। আপনি ব্যাশ ব্যবহার করতে পারবেন না, তাহলে আপনি নল লুপ মধ্যে কমান্ড পরিবর্তে যা করতে পারেন: । এই মোডে প্রতিটি ইভেন্টের জন্য আউটপুট একটি লাইন উত্পাদন করে, তাই লুপ প্রতিটি জন্য একবার চালায়।inotifywait ... | while read line ...
inotifywait