Journalctl-এর আদ্যোপান্ত
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) খুব সহজেই ধরে ফেলা সম্ভব! আপনার কি কোনো নির্দিষ্ট ফিচার নিয়ে আরও বিস্তারিত জানার আছে?