BackendServer

Journalctl-এর আদ্যোপান্ত

Rakib Hasan3 min read
Table of Contents

journalctl হলো লিনাক্স সিস্টেমে লগ (Log) চেক করা এবং ট্রাবলশুট করার জন্য সবচেয়ে শক্তিশালী টুল। Systemd ভিত্তিক লিনাক্স ডিস্ট্রিবিউশনগুলোতে (যেমন: Ubuntu, CentOS, Debian) সমস্ত লগ systemd-journald সার্ভিসের মাধ্যমে একটি সেন্ট্রাল জায়গায় জমা হয়। আর এই লগগুলো পড়ার জন্যই journalctl ব্যবহার করা হয়।

এখানে journalctl-এর সমস্ত গুরুত্বপূর্ণ ফিচার এবং উদাহরণ সহজ বাংলায় দেওয়া হলো:

১. সাধারণ ব্যবহার (সব লগ দেখা)

সিস্টেমের প্রথম থেকে শুরু করে একদম শেষ পর্যন্ত সমস্ত লগ দেখতে এই কমান্ডটি ব্যবহার করা হয়।

journalctl

(লগ থেকে বের হতে কীবোর্ডের q চাপুন)

২. নতুন লগ সবার আগে দেখা (Reverse Order)

সাধারণত সবচেয়ে পুরোনো লগ আগে দেখায়। আপনি যদি চান সবচেয়ে নতুন বা লেটেস্ট লগগুলো একদম উপরে দেখাক, তাহলে -r (reverse) ফ্ল্যাগ ব্যবহার করুন।

৩. লাইভ লগ দেখা (Live Tracking)

কোনো সার্ভিসে এই মুহূর্তে কী হচ্ছে তা সরাসরি দেখতে -f (follow) ফ্ল্যাগ ব্যবহার করা হয়। এটি অনেকটা tail -f এর মতো কাজ করে।

journalctl -f

৪. নির্দিষ্ট সার্ভিসের লগ দেখা (Service Filtering)

সার্ভারে চলা নির্দিষ্ট কোনো অ্যাপ্লিকেশন বা সার্ভিসের (যেমন: Nginx, MySQL, SSH) লগ দেখতে -u (unit) ফ্ল্যাগ ব্যবহার করতে হয়।

# Nginx এর লগ দেখতে

sudo journalctl -u nginx.service

# Nginx এর লাইভ লগ দেখতে

sudo journalctl -u nginx.service -f

৫. সময় অনুযায়ী লগ ফিল্টার করা (Time-based Filtering)

কখন সমস্যা হয়েছে তার ওপর ভিত্তি করে নির্দিষ্ট সময়ের লগ খুঁজে বের করা যায়।

# গত এক ঘণ্টার লগ দেখতে

sudo journalctl --since "1 hour ago"

# আজকের দিনের লগ দেখতে

sudo journalctl --since "today"

# গতকালের লগ দেখতে

sudo journalctl --since "yesterday"

# নির্দিষ্ট তারিখ ও সময়ের মাঝখানের লগ দেখতে

sudo journalctl --since "2023-10-20 08:00:00" --until "2023-10-20 12:00:00"

৬. লগের ধরন বা লেভেল অনুযায়ী ফিল্টার (Priority Filtering)

লগগুলো কতটা গুরুত্বপূর্ণ তার ওপর ভিত্তি করে ৮টি লেভেলে ভাগ করা থাকে (0 থেকে 7)। যেমন: emerg (0), alert (1), crit (2), err (3), warning (4), notice (5), info (6), debug (7)

নির্দিষ্ট লেভেলের লগ দেখতে -p ফ্ল্যাগ ব্যবহার করুন।

# শুধুমাত্র Error লগ দেখতে

sudo journalctl -p err

# Warning এবং Error লগ দেখতে

sudo journalctl -p warning

৭. বুট বা রিস্টার্টের লগ দেখা (Boot Logs)

সার্ভার রিস্টার্ট নেওয়ার সময় কোনো সমস্যা হলে এই কমান্ডগুলো কাজে লাগে।

# বর্তমান বুট (সর্বশেষ রিস্টার্টের পর থেকে) এর লগ দেখতে

sudo journalctl -b

# আগেরবারের বুটের লগ দেখতে (একবার আগের)

sudo journalctl -b -1

৮. কার্নেল লগ চেক করা (Kernel Logs)

হার্ডওয়্যার, মেমরি বা কার্নেল সম্পর্কিত সমস্যা (যেমন dmesg কমান্ডের আউটপুট) দেখতে -k ফ্ল্যাগ ব্যবহার করা হয়।

sudo journalctl -k

৯. আউটপুট ফরম্যাট পরিবর্তন করা (Output Formatting)

লগগুলো কিভাবে স্ক্রিনে দেখাবে তা -o ফ্ল্যাগ দিয়ে পরিবর্তন করা যায়।

# তারিখ এবং অন্যান্য হাবিজাবি তথ্য বাদ দিয়ে শুধু মূল এরর মেসেজ দেখতে

sudo journalctl -u nginx.service -o cat

# লগগুলোকে JSON ফরম্যাটে দেখতে (স্ক্রিপ্ট বা অটোমেশনের জন্য ভালো)

sudo journalctl -u nginx.service -o json-pretty

১০. লগের স্টোরেজ ম্যানেজমেন্ট (Disk Usage & Cleanup)

সময়ের সাথে সাথে লগ ফাইলগুলো সার্ভারের অনেক জায়গা দখল করে নিতে পারে। এগুলো ম্যানেজ করারও কমান্ড আছে।

# লগ ফাইলগুলো কতটুকু স্পেস (Space) নিয়ে আছে তা দেখতে

journalctl --disk-usage

# নির্দিষ্ট সাইজের বেশি লগ ডিলিট করে দিতে (যেমন: ১০০ মেগাবাইট রেখে বাকি সব ডিলিট)

sudo journalctl –vacuum-size=100M

# নির্দিষ্ট সময়ের পুরোনো লগ ডিলিট করতে (যেমন: গত ৭ দিনের লগ রেখে বাকি সব ডিলিট)

sudo journalctl --vacuum-time=7d

এই কমান্ডগুলো ভালোভাবে আয়ত্ত করতে পারলে লিনাক্স সার্ভারের যেকোনো সমস্যা (Troubleshooting) খুব সহজেই ধরে ফেলা সম্ভব! আপনার কি কোনো নির্দিষ্ট ফিচার নিয়ে আরও বিস্তারিত জানার আছে?

Comments