কম্পিউটার টিউটোরিয়াল

লিনাক্সে nohup ব্যবহার করে ব্যাকগ্রাউন্ডে প্রসেস চালানোর পদ্ধতি

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

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

"nohup"-এর বেসিক সিনট্যাক্স:

# nohup [command] &

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

# ssh calvin@sevenacross.com

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

# nohup mysqldump -ucalvin -phobbes largedatabase > largedatabase.db &
[1] 3999
# nohup: appending output to `nohup.out’

আউটপুটের দুটি লাইন পাওয়া যায়। প্রথম লাইনের "3999" হচ্ছে আমি যা প্রসেস স্পন করলাম তার প্রসেস ID, যখন "nohup: appending output to `nohup.out'" মানে যে আউটপুট যা সাধারণত টার্মিনালে আসত, সেটি "nohup.out" নামে একটি ফাইলে ফরওয়ার্ড করা হচ্ছে যে ডিরেক্টরি থেকে আপনি কমান্ডটি লঞ্চ করেছিলেন। আপনি চেক করতে পারেন প্রসেসটি এখনো চলছে কিনা সকল রানিং প্রসেস সার্চ করে প্রসেস ID ব্যবহার করে:

# ps -ef | grep 3999
calvin 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]+ Done nohup mysqldump -ucalvin -phobbes largedatabase > largedatabase.db

আপনি ফাইল "nohup.out" চেক করতে পারেন কোনো এরর বা অন্যান্য মেসেজ এর জন্য যা প্রসেস রানিং করার সময় আউটপুট হয়েছিল। যদি ফাইলটি ব্ল্যাঙ্ক থাকে তাও ঠিক আছে। এতে মানে প্রসেস রানিং করার সময় কোনো মেসেজ আউটপুট হয়নি।

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

  1. লিনাক্সে I/O প্রসেসের প্রায়োরিটি পরিচালনা কীভাবে করবেন

  2. লিনাক্সে "at" ইউটিলিটি দিয়ে কমান্ড শিডিউল করার পদ্ধতি

  3. লিনাক্সে প্রসেস কিল করার ইফেক্টিভ মেথড: ধাপে ধাপে গাইড

  4. WSL দিয়ে Windows 10/11-এ লিনাক্স অ্যাপ চালান - দ্রুত ও সহজ গাইড