journalctl এক লাইনে: journalctl -u <service> -f লাইভ সার্ভিস লগ ফলো করে, journalctl -u <service> -n 100 শেষ 100 লাইন দেখায়, আর journalctl --since "1 hour ago" সাম্প্রতিক সবকিছু দেখায়। “সার্ভিসটা কেন নামল” — এমন মুহূর্তের 90% এই তিনটাই ঢেকে ফেলে। এই শিটের বাকি অংশ সেই কপি-পেস্ট প্যাটার্নগুলো, যা রাত 2টায় man page আবার পড়া থেকে বাঁচায় — unit, সময়, priority আর boot ধরে ফিল্টার, সাথে সেই ক্লিনআপ কমান্ড, যা journal-কে ডিস্ক খেয়ে ফেলা থেকে আটকায়। নিচের প্রতিটি কমান্ড যেকোনো systemd ডিস্ট্রোতে (Ubuntu, Debian, Fedora, Arch) হুবহু চলে।
journalctl কী, আর সরাসরি /var/log/syslog পড়লেই তো হয়?
পুরনো ধাঁচের Linux লগিং /var/log-এর নিচে প্লেইন টেক্সট ফাইল লিখত — syslog, auth.log, messages। systemd তার বদলে এনেছে journal: systemd-journald-পরিচালিত বাইনারি, ইনডেক্সড লগ। খালি grep এটা পড়তে পারে না; journalctl-ই একমাত্র দরজা, আর বিনিময়ে regex-জাদু ছাড়াই সার্ভিস, সময়, boot ও সিভিয়ারিটি ধরে ফিল্টার মেলে।
মডেলটা সহজ: journal সবকিছু জমা রাখে, journalctl হলো কোয়েরি টুল। সার্ভিসের নিজের লগ ফাইল লাগে না — systemd-এর নিচে চলতে গিয়ে stdout/stderr-এ যা লেখে তা-ই অটোমেটিক journal-এ পড়ে। এজন্যই nginx-এর error log কোথায় কনফিগার করেছে না জেনেও journalctl -u nginx কাজ করে।
একটা সতর্কতা: কিছু মিনিমাল ইনস্টলে journal volatile থাকে (/run-এ জমে, রিবুটে মুছে যায়), কারণ /var/log/journal নেই। একবারই ঠিক করে নিন:
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal লগের শেষ 100 লাইন কীভাবে দেখব?
-n আউটপুটকে নতুন N লাইনে সীমাবদ্ধ রাখে (ডিফল্ট 10):
journalctl -n 100 # সবকিছুর শেষ 100 লাইন
journalctl -u nginx -n 100 # এক unit-এর শেষ 100 লাইন
journalctl -n 100 --no-pager # প্রিন্ট করে বেরিয়ে যায় — পাইপের জন্য পারফেক্ট --no-pager দেখতে যত, তার চেয়ে বেশি কাজের: এটা ছাড়া journalctl less খোলে, আর আপনার স্ক্রিপ্ট, পাইপ বা ssh one-liner কি-প্রেসের অপেক্ষায় আটকে যায়। যে কমান্ডের আউটপুট আরও পাইপ হবে, সেখানে এটা রাখুন।
tail -f-এর মতো লাইভ লগ কীভাবে ফলো করব?
-f হলো journalctl-এর tail -f — নতুন এন্ট্রি হলেই স্ট্রিম করে:
journalctl -f # সবকিছু, লাইভ
journalctl -u sshd -f # শুধু SSH ডেমন, লাইভ
journalctl -u ollama -f -n 50 # লাইভ, তবে শুরুতেই শেষ 50 লাইন এক টার্মিনালে সার্ভিস রিস্টার্ট করার সময় দ্বিতীয় টার্মিনালে এই কমান্ডটাই চালান: এক পেনে systemctl restart nginx, আরেক পেনে journalctl -u nginx -f — ক্র্যাশের কারণ সাধারণত কয়েক সেকেন্ডেই নিজেই ঘোষণা করে ফেলে। কন্টেইনার বা সার্ভিস গোলমাল করলে আমার হোমল্যাব-এ ঠিক এই লুপটাই চলে।
নির্দিষ্ট সার্ভিসের লগ কীভাবে দেখব?
-u systemd unit ধরে ফিল্টার করে:
journalctl -u nginx # এক unit, পুরো ইতিহাস
journalctl -u nginx -u redis # একসাথে কয়েকটি unit
journalctl _SYSTEMD_UNIT=nginx.service # হুবহু-ম্যাচের বিকল্প Unit-রা helper unit সৃষ্টি করতে পারে, যেখানে দরকারি আউটপুটটা আটকে থাকে — নষ্ট ওয়েব অ্যাপের আসল error অন্য unit-এর নিচে লেগে থাকতে পারে। -u <service> কিছু না দেখালেও সার্ভিস আসলে চলছে মনে হলে, আগে আসল unit নামটা বের করুন:
systemctl list-units --type=service | grep -i <guess> একই -u প্যাটার্ন টাইমারেও চলে (নামগুলো দেখায় systemctl list-timers) এবং ইউজার সার্ভিসেও — systemd --user-এর নিচে যা চলে সবকিছুর জন্য --user যোগ করুন:
journalctl --user -u pipewire -n 50 সময় ধরে লগ কীভাবে ফিল্টার করব?
--since আর --until টাইমস্ট্যাম্প নেয়, তবে নম্র রিলেটিভ রূপও মেনে নেয়:
journalctl --since "1 hour ago"
journalctl --since "2026-09-01 09:00" --until "2026-09-01 12:00"
journalctl --since today
journalctl --since yesterday --until now -u cron সময়ের উইন্ডোর সাথে unit জোড়া দিলেই এক লাইনে ইনসিডেন্ট ট্রায়াজ: “API 09:00-এর পর থেকে হম্বিতম্ব হওয়া পর্যন্ত কী লিখেছে?” এক বক্সের জন্য এর চেয়ে দ্রুত কোনো লগ অ্যাগ্রিগেটর নেই।
শুধু error (বা warning) কীভাবে দেখব?
-p priority ধরে ফিল্টার করে, syslog সিভিয়ারিটি নাম ব্যবহার করে:
journalctl -p err -b # শুধু error, এই বুট থেকে
journalctl -p warning..alert -u nginx # সিভিয়ারিটির একটা রেঞ্জ Priority-র নেমে যাওয়া ক্রম: emerg, alert, crit, err, warning, notice, info, debug। বক্স “অদ্ভুত আচরণ” করলে journalctl -p err -b --since today-ই দ্রুততম স্যানিটি চেক — রুটিন info লাইনের গোলমাল ছাড়াই উত্তর দেয় “আসলে কিছু ফেল করছে কি?“।
আগের বুটের লগ কীভাবে দেখব?
স্টার্টআপে ক্র্যাশ করা সার্ভিস আপনার বর্তমান বুটের আগের লগ লাইন লেখে, আর journalctl চুপচাপ শুধু বর্তমানটাই দেখায়। -b বুট বাছে:
journalctl -b # শুধু বর্তমান বুট
journalctl -b -1 # আগের বুট
journalctl -b -1 -u sshd # গতবার SSH মরল কেন
journalctl --list-boots # জমা বুটগুলোর সূচি “ভেঙেছিল, রিবুট দিলাম, এখন আর error দেখি না” — এই কেসে এককভাবে সবচেয়ে কাজের ফ্ল্যাগ এটাই। error এখনো আছে, ঠিক এক বুট পেছনে।
কুইক রেফারেন্স: মুখস্থ রাখার মতো ফ্ল্যাগ
| লক্ষ্য | কমান্ড |
|---|---|
| এক সার্ভিস লাইভ ফলো করা | journalctl -u <svc> -f |
| শেষ 100 লাইন | journalctl -n 100 |
| এক ঘণ্টা আগে থেকে | journalctl --since "1 hour ago" |
| এই বুটের error | journalctl -p err -b |
| আগের বুট | journalctl -b -1 |
| journal-এর ডিস্ক ব্যবহার | journalctl --disk-usage |
| মেশিন-রিডেবল আউটপুট | journalctl -o json-pretty |
| শুধু কার্নেল মেসেজ | journalctl -k |
journal-কে ডিস্ক ভরিয়ে ফেলা থেকে কীভাবে আটকাব?
আগে দাম দেখুন, তারপর সীমা দিন:
journalctl --disk-usage
sudo journalctl --vacuum-size=500M # নতুন 500 MB রাখে
sudo journalctl --vacuum-time=30d # নতুন 30 দিন রাখে সীমাটা স্থায়ী করতে /etc/systemd/journald.conf-এ [Journal] সেকশনের নিচে SystemMaxUse=500M দিন, তারপর sudo systemctl restart systemd-journald। সাইজ ক্যাপ আর ওপরের বুট ফিল্টারের সমন্বয়ে journal টুলই থাকে, ধীর ডিস্ক-লিক হয়ে ওঠে না।
journalctl vs dmesg vs /var/log — আগে কোনটি দেখব?
journalctl— অ্যাপ্লিকেশন ও সার্ভিসের আচরণ। systemd যা ম্যানেজ করে সব এখানেই, ইনডেক্সড ও ফিল্টারযোগ্য। ডিফল্ট প্রথম ঠিকানা।journalctl -k/dmesg— কার্নেল ও হার্ডওয়্যার: OOM kill, USB রিসেট, ডিস্ক error। কোনো প্রসেস রহস্যজনকভাবে মরলে অ্যাপকে দোষ দেওয়ার আগে এখানে OOM killer খুঁজুন।/var/log/<app>/— শুধু যেসব অ্যাপ নিজেরাই ফাইলে লগ করে (nginx access log, PostgreSQL)। তখনও স্টার্টআপের error সাধারণত journal-এই পড়ে।
একই ওয়ার্কফ্লো লোকাল AI সার্ভিসেও চলে — ollama serve unit আটকে গেলে journalctl -u ollama -n 100 মডেল লোডের ফেল সঙ্গে সঙ্গে ধরিয়ে দেয়, বিস্তারিত Ollama vs LM Studio তুলনা-য়।
পুরো শিটটা এটুকুই: unit-এর জন্য -u, ফলো করতে -f, লাইনের জন্য -n, সময়ের জন্য --since, সিভিয়ারিটির জন্য -p, বুটের জন্য -b। ছয়টা ফ্ল্যাগ প্রায় প্রতিটি লগ-প্রশ্নের উত্তর দেয়, যা একটা Linux বক্স আপনাকে কখনো জিজ্ঞেস করবে।
— mrsaynothing
— mrsaynothing
AI, Linux ও self-hosting নিয়ে ফিল্ড নোটস।
পোস্টটি নিয়ে dev.to-তে আলোচনা করুন dev.to ↗
পরের হাউ-টু ইমেইলে পান
প্রতি পোস্টে একটি ইমেইল। সমাধান করুন, এগিয়ে যান।
এটা কী?Ollama vs LM Studio: কোনটি আপনার জন্য ঠিক?
লেখাগুলো ভালো লাগছে? এমন জিনিস বানানোই আমার পেশা। আমাকে নিন