টার্মিনালে একটি কমান্ড রান করলে সেটি মিনিটღন্টা ধরে চলে এবং আপনি আর টার্মিনাল ব্যবহার করতে পারেন না—এতে বিরক্তিকর কিছু নেই। ট্যাব ব্যবহার করা যায়, কিন্তু এটি একটা ক্লাঙ্কি সমাধান, এবং সবসময় অপ্টিমাল নয় কারণ আপনি কাজ করার সময় আপডেট দেখতে চাইতে পারেন। এখানে লিনাক্সে ব্যাশ কমান্ড ব্যাকগ্রাউন্ডে রান করার কয়েকটি পদ্ধতি দেখানো হলো।
কমান্ডের শেষে & যোগ করুন
একটি কমান্ডকে ব্যাকগ্রাউন্ডে পুশ করতে চাইলে, শেষে & ব্যবহার করুন। এভাবে আপনি কমান্ডটি ব্যাকগ্রাউন্ডে ইস্যু করতে পারেন এবং টার্মিনাল ব্যবহার করতে থাকুন যতক্ষণ এটি চলে। কিন্তু এতে একটি ক্যাচ আছে। & ব্যবহার করলে কমান্ড আপনার থেকে ডিসকনেক্ট হয় না; এটি শুধু ব্যাকগ্রাউন্ডে পুশ করে। অর্থাৎ, আপনি টার্মিনাল ব্যবহার করার চেষ্টা করলে, কমান্ডটি STDOUT বা STDERR-এ যা প্রিন্ট করতে চায় সেটি প্রিন্ট হবে, যা ডിസট্র্যাক্টিং হতে পারে।
COMMAND &
টার্মিনাল সেশন বন্ধ হলে কমান্ডটি বন্ধ হয়ে যাবে। আপনি jobs কমান্ড ইস্যু করে, রান হচ্ছে কমান্ডের নম্বর খুঁজে, এবং kill কমান্ড দিয়ে সেটি কিল করতে পারেন। সিনট্যাক্স নিচের মতো:
kill %1
& ব্যবহার করা ভালো যদি আপনি কিছুক্ষণের জন্য কিছু পুশ করতে চান কিন্তু সেটি চিরকাল চলবে বলে আশা করেন না।
& দিয়ে কমান্ড রান করুন, তারপর ডিসওন করুন
শুধু & দিয়ে কমান্ড রান করলে সেটি ব্যাকগ্রাউন্ডে চলে যায় এবং টার্মিনাল উইন্ডো খোলা থাকার 동안 চলে। কিন্তু যদি আপনি টার্মিনাল সেশন বন্ধ হলেও কমান্ডটি চলতে দিতে চান, তবে disown কমান্ড ব্যবহার করুন।
এই মেথড ব্যবহার করতে, প্রথমে & যোগ করুন।
COMMAND &
উপরোক্তভাবে বলা হয়েছে, & ব্যবহার করলে কমান্ড ব্যাকগ্রাউন্ডে চলে যায় কিন্তু আপনার ইউজার থেকে ডিট্যাচ হয় না। আপনি টার্মিনালে jobs টাইপ করে এটি ভেরিফাই করতে পারেন। এটা আগের মত ব্যাকগ্রাউন্ডে রান হচ্ছে কমান্ডটি দেখাবে।
শেলে শুধু disown টাইপ করুন, এবং এটি ডিসওন করবে। (আপনি আবার jobs কমান্ড দিয়ে ভেরিফাই করতে পারেন।)
এখন আপনি আপনার টার্মিনাল বন্ধ করে দিন। এটা এখনও STDOUT বা STDERR-এ পাইপ করবে, কিন্তু একবার এক্সিট করে টার্মিনাল রি-ওপেন করলে আপনি কিছুই দেখবেন না। আপনি top বা ps কমান্ড দিয়ে কমান্ডটি আবার খুঁজে পেতে পারেন এবং kill কমান্ড দিয়ে কিল করতে পারেন।
& দিয়ে কমান্ড রান করুন /dev/null-এ রিডাইরেক্ট করে
কমান্ডের পরে & যোগ করলে কমান্ডটি ব্যাকগ্রাউন্ডে পুশ হবে, কিন্তু ফলস্বরূপ ব্যাকগ্রাউন্ড কমান্ড আপনি টার্মিনাল ব্যবহার করার সময় বার্তা প্রিন্ট করতে থাকবে। আপনি এটি রোধ করতে চাইলে, কমান্ডটিকে /dev/null-এ রিডাইরেক্ট করার কথা বিবেচনা করুন।
COMMAND &>/dev/null &
এটি টার্মিনাল বন্ধ হলে কমান্ড বন্ধ হওয়া রোধ করে না। কিন্তু উপরে বলা মত, রানিং কমান্ডকে ইউজার থেকে ডিসওন করার জন্য disown ব্যবহার করা সম্ভব। আপনি উপরের যেকোনো মেথডে কিল করতে পারেন যদি আর চান না সেটি চলে।
নোহাপ, & এবং /dev/null সহ
পূর্বের কমান্ডগুলোর বিপরীতে, nohup ব্যবহার করলে আপনি একটি কমান্ড ব্যাকগ্রাউন্ডে রান করতে পারেন এবং সেটি চলতে রাখতে পারেন। কীভাবে? nohup HUP সিগন্যাল (সিগন্যাল হ্যাঙ আপ) বাইপাস করে, যা টার্মিনাল অফ থাকা সত্ত্বেও কমান্ড ব্যাকগ্রাউন্ডে রান করার সুযোগ দেয়। এই কমান্ডকে "/dev/null"-এ রিডাইরেকশনের সাথে কম্বাইন করুন (তाकি nohup nohup.out ফাইল না বানায়), এবং সব কিছু এক কমান্ডে ব্যাকগ্রাউন্ডে চলে যায়।
nohup COMMAND &>/dev/null &
আজকাল লিনাক্সের অধিকাংশ টার্মিনাল প্রোগ্রামে বিল্ট-ইন ফিচার থাকে যা কম 노력েই ব্যাকগ্রাউন্ডে রান করার সুযোগ দেয়। সাথেই, মডার্ন ইনিট সিস্টেম (যেমন systemd) ব্যবহারকারীদের প্রোগ্রামকে বুট বা যেকোনো সময় সার্ভিস হিসেবে শুরু করার সুযোগ দেয়।
তবুও, লিনাক্সের কিছু প্রোগ্রাম ডেমন হিসেবে রান করার বা মডার্ন ইনিট সিস্টেমের সাথে ইন্টিগ্রেট করার ক্ষমতা রাখে না। এটি একটি বাস্তব অসুবিধা কিন্তু বোঝার যোগ্য, কারণ সব ডেভেলপারএই নতুন ফিচার যোগ করার স্কিল বা সময় রাখে না।
শুক્રียง, nohup বা disown কমান্ডগুলো এখনও আছে এবং এই প্রোগ্রামগুলোকে ব্যাকগ্রাউন্ডে সরাতে সাহায্য করে। এগুলো পারফেক্ট বা ফ্যান্সি নয়, কিন্তু প্রয়োজনে কাজ করে দেয়।
এই লিনাক্স আর্টিকেলটি আপনার ভালো লাগলে, আমাদের অন্যান্য লিনাক্স কন্টেন্ট চেক করুন, যেমন: গুগল অ্যাকাউন্টকে জিনোম শেলের সাথে কানেক্ট করার পদ্ধতি, উইন্ডোজ ব্যবহারকারীদের জন্য সেরা লিনাক্স ডিস্ট্রো, এবং জানা দরকার ls কমান্ডগুলো।