আমি অবশ্যই সম্পাদনা # 3 সমাধানটি পছন্দ করি (নমুনা দেখুন)।
যদি এটি একই শেলের মধ্যে না থাকে তবে পিএস-পি- তে সত্য হিসাবে ফিরে আসার সাথে কিছুক্ষণ লুপ ব্যবহার করুন । প্রসেসরের ব্যবহার হ্রাস করতে লুপটিতে একটি ঘুম দিন ।
while ps -p <pid> >/dev/null 2>&1
do
sleep 10
done
বা যদি আপনার ইউএনআইএক্স সমর্থন করে / প্রোকে (উদাহরণস্বরূপ এইচপি-ইউএক্স এখনও দেয় না)।
while [[ -d /proc/<pid> ]]
do
sleep 10
done
আপনি যদি একটি সময়সীমা চান
timeout=6 # timeout after 1mn
while ((timeout > 0)) && ps -p <pid> >/dev/null 2>&1
do
sleep 10
((timeout -= 1))
done
সম্পাদনা # 1
অন্য একটি উপায় আছে: ক্রোন ব্যবহার করবেন না । আপনার কাজ স্তুপ করতে ব্যাচ কমান্ড ব্যবহার করুন ।
উদাহরণস্বরূপ আপনি প্রতিদিন আপনার সমস্ত কাজ স্ট্যাক করতে পারেন। কিছু সমান্তরালতার জন্য ব্যাচকে টিউন করা যেতে পারে যাতে একটি ব্লক করা কাজটি সমস্ত স্ট্যাক বন্ধ করে দেয় না (এটি অপারেটিং সিস্টেমের উপর নির্ভর করে)।
সম্পাদনা # 2
আপনার হোম ডিরেক্টরিতে একটি ফিফো তৈরি করুন:
$ mkfifo ~/tata
আপনার কাজ শেষে:
echo "it's done" > ~/tata
অন্য কাজ শুরুর সময় (যিনি অপেক্ষা করছেন):
cat ~/tata
এটি পোলিং করছে না এটি পুরানো ভাল ব্লকিং আইও is
সম্পাদনা # 3
সংকেত ব্যবহার:
স্ক্রিপ্টের শুরুতে (গুলি) যারা অপেক্ষা করছে:
echo $$ >>~/WeAreStopped
kill -STOP $$
আপনার দীর্ঘ কাজ শেষে:
if [[ -f ~/WeAreStopped ]] ; then
xargs kill -CONT < ~/WeAreStopped
rm ~/WeAreStopped
fi