একটি পটভূমি প্রক্রিয়া আরম্ভ করুন এবং এটি কখন শেষ হয় তা পরীক্ষা করুন


40

আমি কীভাবে ব্যাকগ্রাউন্ডে একটি প্রক্রিয়া চালু করতে পারি এবং এটি কখন বাশ স্ক্রিপ্টের মধ্যে শেষ হয় তা পরীক্ষা করতে পারি? আমার ধারণাটি এর মতো স্ক্রিপ্ট:

launch backgroundprocess &
while [ Process is running ];do
   echo "PROCESS IS RUNNING\r"
done;

echo "PROCESS TERMINATED"

উত্তর:


66

কীটি হ'ল "অপেক্ষা" কমান্ড:

#!/bin/bash

/my/process &
/another/process &
wait
echo "All processes done!"

7
এর উপকারিতা: এটি সিপিইউ সময়টি সর্বদা চলমান অসীম লুপের সাথে জ্বালায় না ....;)
পাস্কল শ্মিয়েল

2
এর অসুবিধা হ'ল আপনি অপেক্ষা করার সময় আপনি আর কিছু করতে পারবেন না, যেমন ব্যবহারকারীর অগ্রগতি নির্দেশ করে। কেবল কিউংলমের সমাধানই আপনাকে এটি করতে দেয়।
মার্ক বুথ

3
@ মার্ক বুথ আপনি তৃতীয় অ্যাসিনক্রোনাস কাজ দিয়ে অগ্রগতি নির্দেশ করতে পারেন। উদাহরণস্বরূপ:cmd1 & p=$!; cmd2 & q=$!; while sleep 1; do echo still running ; done& wait $p $q; kill $!;
উইলিয়াম পার্সেল


29

এটি করার একটি উপায় এখানে:

launch backgroundprocess &
PROC_ID=$!

while kill -0 "$PROC_ID" >/dev/null 2>&1; do
    echo "PROCESS IS RUNNING"
done
echo "PROCESS TERMINATED"
exit 0

2
ধন্যবাদ, এটি অবশ্যই একমাত্র উত্তর যা মূল প্রশ্নের আমার ব্যাখ্যাটির উত্তর দেয় (এবং কেন এই প্রশ্নটি দেখার জন্য আমি শেষ করেছি)
মার্ক বুথ

@ কুওগলম, একাধিক প্রক্রিয়া কি? সম্ভবত এটির waitজন্য আরও উপযুক্ত?
নিশান্ত

কমান্ড কমান্ড করার জন্য কিউংলম -0 বিকল্পগুলি কী করে
কে_বিশ্বনাথ

1
প্রক্রিয়াটি এখনও চলছে কি না তা @ কে_বিশ্বনাথ জানিয়েছে।
cuonglm

0

আপনি nohup দিয়ে আপনার প্রক্রিয়া চালাতে পারেন এবং nohup.out ফাইলটি পড়তে শেল স্ক্রিপ্ট লিখতে পারেন যা নোহুপ লগ করতে ব্যবহার করে।

  nohup command &

4
(1) কেশ বিভক্ত হওয়ার ঝুঁকিতে, nohupকিছু লিখবে না nohup.out; এটি কেবল ফাইলটি তৈরি করে এবং কমান্ডের আউটপুটকে এটি পুনর্নির্দেশ করে। (২) যদি কমান্ডটি কোনও আউটপুট তৈরি করে না, কিছুই লিখিত হবে না nohup.outএবং এই ধারণাটি কোথাও দ্রুত যায় না। (3) এমনকি যদি commandআউটপুট লেখেন, আপনি কীভাবে বলতে পারেন যে এটি কখন আউটপুট পর্যবেক্ষণ করে শেষ হবে?
জি-ম্যান

@ জি-ম্যান হয়ত এখনও ব্যবহার করছে lsofকিনা nohupতা দেখার আউটপুট পরীক্ষা করে দেখে nohup.outতবে আমি সম্মতি জানাই যে এটি খুব লোমশ পদ্ধতি method
আলেকজ মাগুরা

(4) সময় commandচলতে শুরু করে, nohupচলে গেছে। (1) হ্যাঁ, আমি একটি সংখ্যা পুনরাবৃত্তি করছি, কারণ আমি দু'বছর আগে যা বলেছিলাম তার পুনরাবৃত্তি করছি: এতে nohupকিছুই লিখবে না nohup.out। (৫) হ্যাঁ, আপনি লুপে একটি শেল স্ক্রিপ্ট লিখতে lsofপারেন এবং nohup.outএটি এখনও খোলার জন্য দেখুন । তবে এটি ভিন্ন উত্তর হবে। ()) এমনকি যদি আপনি এটি করেন তবে এটি অবিশ্বস্ত হবে। অন্য কোনও প্রক্রিয়া nohup.outফাইলটি খুললে কী হবে? আপনি যদি সত্যিই এই নির্দিষ্ট প্রক্রিয়াটি nohup.outখোলেন কিনা তা পরীক্ষা করতে চান । ()) তবে, আপনি যদি এটি করতে যাচ্ছেন তবে কেন কেবল প্রক্রিয়া চলছে কিনা তা যাচাই করবেন না?
জি-ম্যান বলছেন 'পুনরায় ইনস্টল করুন মনিকা'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.