কীভাবে ব্যাকগ্রাউন্ডে লিনাক্স কমান্ড শুরু করতে হবে এবং টার্মিনালে বিচ্ছিন্ন প্রক্রিয়া


এই গাইডটিতে আমরা একটি লিনাক্স সিস্টেমে প্রসেস হ্যান্ডলিংয়ের একটি সহজ তবে গুরুত্বপূর্ণ ধারণাটি নিয়ে আসব, এটিই যে কোনও প্রক্রিয়াটিকে তার নিয়ন্ত্রণকারী টার্মিনাল থেকে সম্পূর্ণ আলাদা করতে হয়।

যখন কোনও প্রক্রিয়া টার্মিনালের সাথে যুক্ত হয়, তখন দুটি সমস্যা দেখা দিতে পারে:

  1. আপনার নিয়ন্ত্রণকারী টার্মিনালটি এত বেশি আউটপুট ডেটা এবং ত্রুটি/ডায়াগনস্টিক বার্তায় পূর্ণ filled
  2. ইভেন্টটি যদি টার্মিনালটি বন্ধ থাকে, তবে তার শিশু প্রক্রিয়াগুলির সাথে একত্রে প্রক্রিয়াটি সমাপ্ত হবে

এই দুটি সমস্যা মোকাবেলা করতে, আপনাকে একটি নিয়ন্ত্রণকারী টার্মিনাল থেকে সম্পূর্ণ প্রক্রিয়া আলাদা করতে হবে। আমরা আসলে সমস্যাটি সমাধানে যাওয়ার আগে, আসুন আমরা কীভাবে পটভূমিতে প্রক্রিয়াগুলি চালাবেন তা সংক্ষেপে কভার করি।

কীভাবে ব্যাকগ্রাউন্ডে লিনাক্স প্রক্রিয়া বা কমান্ড শুরু করবেন

যদি কোনও প্রক্রিয়া ইতিমধ্যে বাস্তবায়িত হয় যেমন নীচের নীচের টার কমান্ড উদাহরণ, কেবল এটি বন্ধ করার জন্য Ctrl + Z চাপুন তারপরে ক্রিয়াকলাপটি চালিয়ে যাওয়ার জন্য বিজি কমান্ডটি প্রবেশ করুন একটি কাজ হিসাবে পটভূমি।

আপনি আপনার সমস্ত পটভূমি কাজ জব টাইপ করে দেখতে পারেন। তবে এর স্টিডিন, স্টডআউট, স্ট্ডার এখনও টার্মিনালে যোগদান করেছে।

$ tar -czf home.tar.gz .
$ bg
$ jobs

আপনি পাশাপাশি এম্পারস্যান্ড, & সাইন ব্যবহার করে পটভূমি থেকে সরাসরি একটি প্রক্রিয়া চালাতে পারেন।

$ tar -czf home.tar.gz . &
$ jobs

নীচের উদাহরণটি দেখুন, যদিও একটি কমান্ডটি ব্যাকগ্রাউন্ড কাজ হিসাবে শুরু করা হয়েছিল, তবুও একটি ত্রুটি বার্তা টার্মিনালে প্রেরণ করা হয়েছিল যার অর্থ প্রক্রিয়াটি এখনও নিয়ন্ত্রণকারী টার্মিনালের সাথে সংযুক্ত।

$ tar -czf home.tar.gz . &
$ jobs

টার্মিনাল থেকে প্রস্থান করার পরে লিনাক্স প্রসেসগুলি চালিত রাখুন

আমরা অস্বীকার কমান্ডটি ব্যবহার করব, প্রক্রিয়া চালু হওয়ার পরে এবং পটভূমিতে রাখার পরে এটি ব্যবহার করা হবে, এটি কাজ শেলের সক্রিয় তালিকার কাজগুলি থেকে শেল কাজ সরিয়ে ফেলা, সুতরাং আপনি fg ব্যবহার করবেন না , বিজি সেই নির্দিষ্ট কাজের জন্য আর আদেশ দেয়।

এছাড়াও, আপনি যখন নিয়ন্ত্রণকারী টার্মিনালটি বন্ধ করেন, কাজটি কোনও শিশু চাকরীর জন্য ঝুলবে না বা একটি সাইনআপ পাঠায় না।

আসুন ডিভন বাশ অন্তর্নির্মিত ফাংশনটি ব্যবহারের নীচের উদাহরণটি একবার দেখে নেওয়া যাক।

$ sudo rsync Templates/* /var/www/html/files/ &
$ jobs
$ disown  -h  %1
$ jobs

আপনি nohup কমান্ডটিও ব্যবহার করতে পারেন, এটি কোনও শেল থেকে বেরিয়ে যাওয়ার সময় পটভূমিতে চলতে থাকা প্রক্রিয়াটিকে সক্ষম করে।

$ nohup tar -czf iso.tar.gz Templates/* &
$ jobs

কন্ট্রোলিং টার্মিনাল থেকে একটি লিনাক্স প্রক্রিয়া আলাদা করুন

সুতরাং, একটি নিয়ন্ত্রণকারী টার্মিনাল থেকে কোনও প্রক্রিয়া সম্পূর্ণরূপে বিচ্ছিন্ন করতে, নীচের কমান্ড বিন্যাসটি ব্যবহার করুন, এটি ফায়ারফক্সের মতো গ্রাফিকাল ইউজার ইন্টারফেস (জিইউআই) অ্যাপ্লিকেশনগুলির জন্য আরও কার্যকর:

$ firefox </dev/null &>/dev/null &

লিনাক্সে,/dev/null একটি বিশেষ ডিভাইস ফাইল যা এতে লেখা সমস্ত ডেটা লিখে রাখে (ছাড়িয়ে যায়) উপরের কমান্ডে ইনপুটটি পাঠ করা হয় এবং আউটপুট/dev/নালকে প্রেরণ করা হয়।

একটি সমাপ্তি মন্তব্য হিসাবে, প্রদত্ত একটি প্রক্রিয়া একটি নিয়ন্ত্রণকারী টার্মিনালের সাথে সংযুক্ত থাকে, একজন ব্যবহারকারী হিসাবে, আপনি আপনার টার্মিনালে প্রক্রিয়া ডেটার বিভিন্ন আউটপুট লাইন পাশাপাশি ত্রুটি বার্তাগুলি দেখতে পাবেন। আবার, যখন আপনি একটি নিয়ন্ত্রণকারী টার্মিনালটি বন্ধ করেন, তখন আপনার প্রক্রিয়া এবং শিশু প্রক্রিয়াগুলি সমাপ্ত হবে।

গুরুত্বপূর্ণভাবে, এই বিষয়ে যে কোনও প্রশ্ন বা মন্তব্যগুলির জন্য, নীচের মন্তব্য ফর্মটি ব্যবহার করে আমাদের কাছে পৌঁছান।