কম্পিউটার

লিনাক্সে nohup ব্যবহার করে ব্যাকগ্রাউন্ডে প্রসেস কিভাবে চালাবেন

এই নির্দেশিকা আপনাকে দেখাবে কিভাবে ব্যাকগ্রাউন্ডে প্রসেস চালানোর জন্য 'nohup' কমান্ডটি ব্যবহার করতে হয়, যাতে আপনি লগ আউট বা সংযোগ বিচ্ছিন্ন হয়ে গেলেও সেগুলি চলতে থাকে।

আমি রিমোট সার্ভারে অনেক কাজ করি। আমি আমার সার্ভারের সাথে সংযোগ করতে SSH ব্যবহার করি। প্রায়শই আমি এমন একটি প্রক্রিয়া চালাই যা আমার SSH সংযোগ বন্ধ করার পরেও আমাকে চলতে দিতে হবে। এটি একটি শেল স্ক্রিপ্ট হতে পারে যা আমার লগ ফাইল বা খুব বড় মাইএসকিউএল ডাটাবেস পুনরুদ্ধারের মাধ্যমে পার্স করে। তখনই আমি "nohup" নামক একটি লিনাক্স কমান্ড লাইন ইউটিলিটির দিকে ফিরে যাই। "নোহপ" হল "নো হ্যাংআপ" এর জন্য সংক্ষিপ্ত, যার অনুবাদ "হ্যাং আপ সিগন্যাল উপেক্ষা করুন"। আপনি লগ আউট করার সময় "হ্যাং আপ" সংকেতটি ঘটে। "nohup" যা করে তা হল এটি আপনাকে আপনার সার্ভারে লগ ইন করতে, একটি প্রক্রিয়া চালু করতে এবং লগ আউট করতে দেয়। আপনি লগ আউট করার পরেও প্রক্রিয়াটি চলতে থাকে। আপনি যখন আবার লগ ইন করবেন তখন আপনি সেই প্রক্রিয়াটি আবার অ্যাক্সেস করতে পারবেন, যদি এটি এখনও চলছে৷

"nohup" এর মৌলিক সিনট্যাক্স হল:

# নোহপ [কমান্ড] এবং

আপনার শেল স্ক্রিপ্টের নাম বা একটি কমান্ড দিয়ে "[কমান্ড]" প্রতিস্থাপন করুন। শেষে "&" কমান্ড বা স্ক্রিপ্টটিকে একটি পটভূমি প্রক্রিয়া হিসাবে চালায়। আপনার দূরবর্তী সার্ভারে একটি বড় mysql ডাটাবেসের ব্যাকআপ নিতে আপনি কীভাবে "nohup" ব্যবহার করবেন তার একটি উদাহরণ এখানে রয়েছে। প্রথমে, আমি SSH:

ব্যবহার করে আমার দূরবর্তী সার্ভারে লগ ইন করি

# ssh calvin@sevenacross.com

তারপর আমি "nohup" মোডে "mysqldump -ucalvin -phobbes largedatabase> largedatabase.db" কমান্ডের আগে একটি "nohup" এবং কমান্ডের পরে "&" যোগ করে নির্বাহ করি:

# nohup mysqldump -ucalvin -phobbes largedatabase> largedatabase.db &
[1] 3999
# nohup:`nohup.out' এ আউটপুট যোগ করা হচ্ছে

আপনি পেতে যে আউটপুট দুটি লাইন আছে. প্রথম লাইনে “3999” হল সেই প্রক্রিয়ার প্রসেস আইডি যা আমি এইমাত্র তৈরি করেছি, যখন “nohup:`nohup.out'-এ আউটপুট যোগ করার অর্থ হল যে আউটপুটটি সাধারণত টার্মিনালে আসবে সেটি ফরোয়ার্ড করা হচ্ছে। যে ডিরেক্টরি থেকে আপনি কমান্ড চালু করেছেন সেই ডিরেক্টরিতে "nohup.out" নামক একটি ফাইল। আপনি প্রক্রিয়া আইডি ব্যবহার করে সমস্ত চলমান প্রক্রিয়া অনুসন্ধান করে প্রক্রিয়াটি এখনও চলছে কিনা তা পরীক্ষা করতে পারেন:

# ps -ef | grep 3999
ক্যালভিন 3999 29848 0 18:42 ? 00:00:00 /usr/bin/mysqldump
calvin 6575 31852 0 18:44 pts/2 00:00:00 grep 3999

প্রক্রিয়াটি চলমান হয়ে গেলে আপনি কমান্ড লাইনে এইরকম একটি আউটপুট দেখতে পাবেন:

[1]+ সম্পন্ন nohup mysqldump -ucalvin -phobbes largedatabase> largedatabase.db

প্রক্রিয়া চলাকালীন আউটপুট ছিল এমন কোনো ত্রুটি বা অন্যান্য বার্তা পরীক্ষা করার জন্য আপনি "nohup.out" ফাইলটি পরীক্ষা করতে পারেন৷ ফাইলটি ফাঁকা থাকলে ঠিক আছে। এর মানে প্রক্রিয়া চলাকালীন কোনো বার্তা আউটপুট হয়নি।

এখন যেহেতু আপনি জানেন কিভাবে ব্যাকগ্রাউন্ডে প্রসেস চালাতে হয়, কেন আরও কিছু লিনাক্স টিপস এবং কৌশল শিখবেন না?


  1. লিনাক্সে I/O প্রক্রিয়াগুলির অগ্রাধিকার কীভাবে পরিচালনা করবেন

  2. "at" ইউটিলিটি সহ লিনাক্সে কমান্ডগুলি কীভাবে নির্ধারণ করবেন

  3. লিনাক্সে একটি প্রক্রিয়া কীভাবে মেরে ফেলা যায়

  4. কিভাবে WSL ব্যবহার করে Windows 10 এবং 11 এ লিনাক্স অ্যাপ চালাবেন