This site is best viewed using the updated version of Mozilla Firefox

রেড হ্যাট লিনাক্স : Linux Runlevel

আজকের টিউটোরিয়ালে আমরা শিখবো লিনাক্স Runlevel সম্পর্কে। Runlevel হলো ইউনিক্স সিস্টেমে একপ্রকার অপারেশন মুড যার বিভিন্ন লেভেলে বিভিন্ন আচরণ প্রকাশ পায়। লিনাক্স / ইউনিক্স সিস্টেমে সাত ধরণের রান লেভেল আছে। যেমনঃ

Runlevel 0 – এই লেভেলে আসলে মেশিন বন্ধ হয়ে যায়।

Runlevel 1 – এই লেভেলে মেশিন সিঙ্গেল ইউজার মুডে কাজ করে। সিঙ্গেল ইউজার মুডে Root ইউজারের মাধ্যমে মেশিনে লগইন করা যায়। এই মুডে মেশিনের নেটওয়ার্ক কনফিগারেশন বা গ্রাফিক্যাল ইন্টারফেস কাজ করে না। এই মুড সিস্টেম মেইনটেনেন্স ও রিপেয়ারিং এর কাজে ব্যবহৃত হয়।

Runlevel 2 – এই লেভেলে মেশিন মাল্টি ইউজার মুডে কাজ করে। এই মুডের সিস্টেমে কমান্ড লাইনের সাহায্যে কাজ করা হয়। এই মুডেও মেশিনের নেটওয়ার্ক কনফিগারেশন বা গ্রাফিক্যাল ইন্টারফেস কাজ করে না।

Runlevel 3 – ইহা Runlevel 2 এর মতো। কিন্তু এতে নেটওয়ার্ক কনফিগারেশন কাজ করে, গ্রাফিক্যাল ইন্টারফেস কাজ করে না। সার্ভার বেজড সিস্টেমে এই মুডেই বেশি কাজ করা হয়।

Runlevel 4 – এই লেভেলটি এখনো পর্যন্ত অসংজ্ঞায়িত আছে।

Runlevel 5 – এই লেভেলে মেশিন মাল্টি ইউজার মুড ও গ্রাফিক্যাল মুডে কাজ করে এবং এতে নেটওয়ার্ক কনফিগারেশনও কাজ করে। ডেস্কটপবেসড কাজের জন্য এই লেভেল ব্যবহৃত হয়।

Runlevel 6 – এই লেভেলে মেশিন বিবুট হয়।

কোন লিনাক্স মেশিন বুট হওয়ার পর তা কোন রান লেভেলে কাজ করবে তা /etc/inittab ফাইলের মধ্যে বলা থাকে। ফাইলটি দেখার জন্য আমরা নিচের কমান্ড দিতে পারি।

# vi /etc/inittab

# inittab is only used by upstart for the default runlevel.
#
# ADDING OTHER CONFIGURATION HERE WILL HAVE NO EFFECT ON YOUR SYSTEM.
#
# System initialization is started by /etc/init/rcS.conf
#
# Individual runlevels are started by /etc/init/rc.conf
#
# Ctrl-Alt-Delete is handled by /etc/init/control-alt-delete.conf
#
# Terminal gettys are handled by /etc/init/tty.conf and /etc/init/serial.conf,
# with configuration in /etc/sysconfig/init.
#
# For information on how to write upstart event handlers, or how
# upstart works, see init(5), init(8), and initctl(8).
#
# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:

বোল্ড করা লাইনটিতে লক্ষ্য করুন, এতে মেশিনের ডিফল্ট রান লেভেল “5” বলা আছে। অর্থাৎ মেশিনটি বুট হওয়ার সময় গ্রাফিক্যাল মুডে বুট হবে। যদি আমরা এখান থেকে অন্য কোন Runlevel নির্দিষ্ট করে দিই তাহলে পরবর্তীতে মেশিন যখন বুট হবে তখন ঐ Runlevel এ বুট হবে। উদাহরণস্বরূপঃ আমরা যদি ফাইলটি এডিট করে Runlevel 0 (5 এর জায়গায় 0 লিখে ফাইলটি সেভ করি) করে মেশিনটি রিবুট দেই তাহলে মেশিনটি অন হয়ে আবার সাথে সাথে অফ হয়ে যাবে। এভাবে যতবারই মেশিন অন করা হোক না কেন তা কখনোই অন হবে না। কারণ, অন হওয়ার সময় মেশিন যখন তার রান লেভেল চেক করে দেখবে তখন সে দেখবে তার Runlevel 0 । আর Runlevel 0 মানেই এই লেভেলে মেশিন শাট ডাউন হবে। তাই ফাইলটি খুব বেশি প্রয়োজন ছাড়া এডিট না করাই ভাল।

কোন লিনাক্স মেশিন যেকোন রান লেভেলে চলমান থাকুক না কেন তা চলমান থাকা অবস্থায় রান লেভেল পরিবর্তন করা যায়। এর জন্য আমরা নিচের কমান্ড দেব।

# init 0

অর্থাৎ এই কমান্ড দেওয়ার সাথে সাথে মেশিনটি শাট ডাউন হয়ে যাবে। এভাবে আমরা যেকোন রান লেভেলের কমান্ড দিতে পারি।


আমাদের মেশিনের কোন একটি সার্ভিস (যেমনঃ sshd, httpd বা vsftpd) কোন কোন রান লেভেলে অটোমেটিকভাবে চালু হবে তা আমরা সহজেই দেখে নিতে পারি। যেমনঃ আমরা চাচ্ছি sshd সার্ভিসটি চেক করার জন্য। এজন্য আমরা নিচের কমান্ড দিব।

# /sbin/chkconfig --list | grep sshd

এতে নিচের স্ক্রীনটি প্রদর্শিত হবে।

স্ক্রীনটিতে ভালভাবে লক্ষ্য করলে আমরা দেখতে পাবো যে, আমাদের sshd সার্ভিসটি Runlevel 0 এ বন্ধ আছে, Runlevel 1 এ বন্ধ আছে, Runlevel 2 এ অটোমেটিকভাবে চালু হবে, Runlevel 3 এ অটোমেটিকভাবে চালু হবে, Runlevel 4 এ অটোমেটিকভাবে চালু হবে, Runlevel 5 এ অটোমেটিকভাবে চালু হবে এবং Runlevel 6 এ বন্ধ আছে।

এখন আমরা যদি চাই sshd সার্ভিসটি Runlevel 3 এ অটোমেটিকভাবে চালু হবে না তাহলে নিচের কমান্ড দিব।

# /sbin/chkconfig --level 3 sshd off

এখন থেকে Runlevel 3 এ sshd সার্ভিসটি অটোমেটিকভাবে চালু হবে না। এটা চেক করার জন্য পুনরায় নিচের কমান্ডটি দিব।

# /sbin/chkconfig --list | grep sshd

এখন খেয়াল করে দেখুন, Runlevel 3 এ sshd সার্ভিসটি বন্ধ দেখাচ্ছে।

Runlevel Troubleshooting

যদি কোন কারণে আমরা আমাদের মেশিনের /etc/inittab ফাইলের মধ্যে Runlevel 0 বা Runlevel 6 লিখে ফাইলটি সেভ করে ফেলি তাহলে পরবর্তীতে মেশিনটি আর পুরোপুরি অন হবে না। যদি কখনো এরকম হয়ে যায় তাহলে আমরা সিঙ্গেল ইউজার মুডে ঢুকে ফাইলটি এডিট করবো। এজন্য আমাদের যা করতে হবেঃ

আমরা মেশিনটি রিবুট দিব।

মেশিনের পাওয়ার অন হওয়ার পর সাথে সাথে দুইবার “e” প্রেস করবো। তাহলে নিচের স্ক্রীনটি প্রদর্শিত হবে।

এখান থেকে আমরা Kernel এর লাইনটি সিলেক্ট করে “e” প্রেস করবো। এতে নিচের স্ক্রীনটি প্রদর্শিত হবে।

এখানে আমরা auto rhgb quiet এর পর একটি space (স্পেস) দিয়ে 1 লিখবো এবং এন্টার প্রেস করবো। উদাহরণস্বরূপ নিচের স্ক্রীণটিতে লক্ষ্য করুন।

এতে নিচের স্ক্রীণটি আসবে।

এখান থেকে আমরা Kernel এর লাইনটি সিলেক্ট করে “b” প্রেস করবো এবং একটু অপেক্ষা করবো। নিচের মতো একটি কমান্ড প্রম্প্ট আসবে।

এখন আমরা নিচের কমান্ড দিব।

# setenforce 0

অতঃপর নিচের কমান্ডের মাধ্যমে /etc/inittab ফাইলটি ওপেন করবো।

# vi /etc/inittab

এবং ফাইলটিতে সবার নিচের লাইনে নির্দিষ্ট Runlevel (যেমনঃ 5) লিখে ফাইলটি সেভ করবো এবং মেশিনটি রিবুট দিব

# reboot

এর ফলে মেশিন রিবুট হলে আমরা আবার গ্রাফিক্যাল মুডে ঠিকভাবে কাজ করতে পারবো।


আশাকরি এই টিউটোরিয়ালটি দেখে আপনারা Linux Runlevel সম্পর্কে ভাল ধারণা পাবেন। ভাল থাকবেন। আল্লাহ হাফেজ।