আমি inotifywait
একটি ডিরেক্টরি নিরীক্ষণ করতে ব্যাশ স্ক্রিপ্ট লিখছি এবং যখন পরিবর্তনগুলি সনাক্ত হয় তখন ক্রিয়া বন্ধ করে দিন। কিছুটা এইরকম:
inotifywait -m ... | while read f; do something; done
যেহেতু inotifywait
নিজেই শেষ হয় না, তাই এই স্ক্রিপ্টটি থামবে না।
সুতরাং আমার পরিকল্পনাটি ছিল ইনোটিফয়েট প্রক্রিয়াটির পিআইডি পাওয়ার জন্য, এটি একটি ফাইলে সংরক্ষণ করুন এবং একটি আলাদা প্রক্রিয়া এটি পরে মেরে ফেলা হবে, যেমন বলুন:
inotifywait -m ... | { echo ??PID?? > pid-file; while ... }
তবে পিআইডি কীভাবে পেতে হয় তা আমি জানি না। এটি অর্জন করার কোন সহজ উপায় আছে? আরেকটি উপায় হ'ল $$
ফাইলটিতে শেল-স্ক্রিপ্টের পিআইডি সংরক্ষণ করা এবং পুরো শেল-স্ক্রিপ্টটি মেরে ফেলা তবে আমি লুপের পরে কিছুটা পরিষ্কার করতে চেয়েছিলাম।
আমি ব্যবহার করার চেষ্টা করেছি coproc
এবং আমার মনে হয় এটি কার্যকর হবে তবে এটি প্রয়োজনীয়তার চেয়ে আরও জটিলতার মতো বলে মনে হচ্ছে।
pgrep inotifywait
। এটি আপনাকে পিআইডি দেবে, মেরে ফেলবে pkill inotifwait
,।
grep -v grep
, পরিবর্তে ps -ef | grep [p]rocessname...
একই কাজ করবে।
-f
যদি এক্সিকিউটেবলের বেশিরভাগ নামের সাথে মেলে প্রয়োজন হয় তবে আপনি সুইচটি ব্যবহার করতে পারেন ।