Future ForgeFuture ForgeFuture ForgeFuture Forge
خدماتنمونه‌کارهاپکیج‌هاابزارهای رایگانیادداشت‌هادرباره ماتماس
شروع پروژه
  1. خانه
  2. /یادداشت‌ها
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
Future ForgeFuture Forge

استودیوی مهندسی محصول — طراحی، ساخت و استقرار نرم‌افزار.

خدمات

طراحی و ساخت محصولتوسعه فول‌استکممیزی مهندسیمشاوره معماریزیرساخت و استقرارهوش مصنوعی در محصول

کاوش

نمونه‌کارهایادداشت‌هاپرسش‌هاپکیج‌ها

ابزارهای رایگان

ممیزی مهندسیمشاور معماریتخمین پروژهابزار پرامپت

شرکت

درباره ماتماسحریم خصوصیشرایط استفاده

پروژه‌تان را مطرح کنید

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

پروژه‌تان را مطرح کنید

ارتباط

hello@futureforge.ir09128464105
GitHubLinkedIn

© 2026 FutureForge. همه حقوق محفوظ است.

خانهخدماتابزارهای رایگانشروع پروژه
عملیات و استقرار

journalctl: خواندن و فیلتر لاگ‌های systemd

چگونه با journalctl لاگ واحدها، بوت‌ها و بازه‌های زمانی را ببینید؛ دنبال‌کردن زنده و اشتباه‌های رایج journal.

سا
سهیل ابراهیم‌پور

بنیان‌گذار و مهندس محصول

·۲۹ شهریور ۱۴۰۵·4 دقیقه مطالعه
journalctlsystemd journaljournaldlogs-u-b-fpriority
لاگ ترمینال و استیکی journal کنار لامپ

وقتی `systemctl status` فقط می‌گوید failed، داستان کامل معمولاً در journal است. journald لاگ‌های ساخت‌یافته را از هسته، سرویس‌ها و stdout/stderr واحدها جمع می‌کند. journalctl ابزار پرس‌وجوی همان ذخیره‌گاه است — با فیلتر روی واحد، بوت، اولویت و زمان.

بدون journalctl، بین چند فایل در /var/log و چرخش logrotate گم می‌شوید؛ با آن هم اگر فیلتر نکنید در سیلاب خطوط غرق می‌شوید. این مقاله فیلترهای پرکاربرد را با فرمان واقعی نشان می‌دهد.

فیلترهای -u --since -f روی استیکی

پاسخ کوتاه

برای یک سرویس: `journalctl -u name.service -e`. برای دنبال‌کردن زنده: `-f`. برای بوت جاری: `-b` و برای بوت قبلی `-b -1`. بازهٔ زمانی با `--since`/`--until`. اولویت با `-p`. روی سرورهای پرلاگ همیشه بازه یا واحد را تنگ کنید؛ خروجی بدون فیلتر برای انسان نیست.

اول واحد و زمان را قفل کنید؛ بعد متن را بخوانید — نه برعکس.

دیدن لاگ یک سرویس

bash

journalctl -u ssh.service journalctl -u nginx.service -e journalctl -u nginx.service -n 100 --no-pager

-e پرش به انتها، -n تعداد خطوط، --no-pager برای اسکریپت و کپی. روی اوبونتو واحد SSH معمولاً ssh.service است.

bash

journalctl -u ssh.service -u systemd-networkd.service --since '1 hour ago'

دنبال‌کردن زنده

bash

journalctl -u myapp.service -f journalctl -f -p err

معادل عملیاتی tail -f برای journal. هنگام Reproduce خطا یک ترمینال -f باز بگذارید و در دیگری سرویس را restart کنید.

بوت‌ها: جدا کردن داستان هر بالاآمدن

bash

journalctl --list-boots journalctl -b journalctl -b -1 journalctl -b -1 -p err

وقتی «بعد از ریبوت خراب شد»، بوت قبلی (-b -1) را با بوت جاری مقایسه کنید. بسیاری از خطاهای文件系统 و شبکه فقط در پنجرهٔ بوت دیده می‌شوند.

زمان و اولویت

bash

journalctl --since '2026-09-05 10:00:00' --until '2026-09-05 11:30:00' journalctl --since '30 min ago' -p warning journalctl -p err..alert

سطوح اولویت از emerg تا debug شبیه syslog هستند. برای نویز کمتر از err یا warning شروع کنید، بعد در صورت نیاز پایین بیایید.

فیلدهای ساخت‌یافته

journal فقط متن نیست؛ فیلدهایی مثل _PID، _UID، PRIORITY، SYSLOG_IDENTIFIER دارد.

bash

journalctl _UID=33 -n 50 journalctl SYSLOG_IDENTIFIER=sudo -n 20 journalctl -o verbose -n 1

خروجی verbose همهٔ فیلدها را نشان می‌دهد؛ برای فهم اینکه چه کلیدی فیلتر کنید مفید است. خروجی json برای لوله به ابزار دیگر:

bash

journalctl -u myapp -n 5 -o json-pretty

هسته و دیسک

bash

journalctl -k -b journalctl --disk-usage journalctl --vacuum-size=200M journalctl --vacuum-time=14d

-k پیام‌های کرنل (شبیه dmesg یکپارچه با journal). vacuum برای کنترل رشد ذخیره‌گاه پایا — سیاست دقیق‌تر در journald.conf است. روی سیستم‌های volatile ممکن است journal فقط در حافظه باشد و بعد از ریبوت پاک شود.

دسترسی و مجوز

کاربر عادی معمولاً فقط لاگ‌های خودش را می‌بیند. برای لاگ سیستم به عضویت گروه systemd-journal یا sudo نیاز دارید. در تیم‌ها، به‌جای دادن root کامل، عضویت گروه journal را بررسی کنید.

bash

id ls -l /var/log/journal 2>/dev/null | head

الگوی عیب‌یابی ۱۵ دقیقه‌ای

  1. systemctl --failed را ببینید.
  2. journalctl -u UNIT -b -p err..warning --no-pager
  3. اگر خالی بود بازه را بازتر یا اولویت را پایین‌تر کنید.
  4. با -o verbose یک خط نمونه را برای فیلدها بشکافید.
  5. اگر به بوت مربوط است --list-boots و -b -1 را مقایسه کنید.

bash

systemctl --failed journalctl -u UNIT -b -p err --no-pager | tail -n 50

journal در برابر فایل‌های سنتی

هنوز هم rsyslog یا فایل‌های /var/log/nginx/ ممکن است موازی باشند. journal برای واحدهای systemd و همبستگی زمانی عالی است؛ فایل اپ ممکن است قالب دامنهٔ خودش را داشته باشد. هر دو را بشناسید؛ یکی را مذهب نکنید.

اشتباه‌های رایج

  • اجرای journalctl بدون فیلتر روی سرور پرلاگ و گیر کردن در pager.
  • فراموش --no-pager در CI/اسکریپت.
  • جست‌وجوی فقط در /var/log درحالی‌که سرویس فقط به journal می‌نویسد.
  • vacuum تهاجمی بلافاصله پس از حادثه و پاک کردن شواهد.
  • فرض پایا بودن journal روی همهٔ ابرتصویرها.

خلاصه

journalctl چشم شما به شکست‌های systemd است: واحد، بوت، زمان، اولویت. با -f زنده ببینید، با -b داستان ریبوت را جدا کنید، و قبل از پاک‌سازی حجم، تحقیق را تمام کنید. در کنار systemctl، بخش زیادی از عیب‌یابی سرور لینوکس مدرن همین دو فرمان است.

سوالات متداول

چرا journalctl خالی است؟

مجوز کم، واحد اشتباه، journal volatile پس از ریبوت، یا فیلتر زمانی/اولویت بیش از حد تنگ. اول بدون -p و با -n 50 روی همان -u امتحان کنید.

چطور فقط امروز را ببینم؟

`journalctl --since today` یا `--since '00:00'` به‌همراه واحد مورد نظر.

منابع و مراجع

  • journalctl(1): https://www.freedesktop.org/software/systemd/man/latest/journalctl.html
  • systemd-journald.service(8): https://www.freedesktop.org/software/systemd/man/latest/systemd-journald.service.html
  • systemd.journal-fields(7): https://www.freedesktop.org/software/systemd/man/latest/systemd.journal-fields.html

نویسنده

سا

سهیل ابراهیم‌پور بنیان‌گذار FutureForge است. روی طراحی محصول، معماری و استقرار نرم‌افزار سفارشی کار می‌کند.

یادداشت‌های مرتبط

یادداشت‌های مرتبط

دسته‌بندی‌ها

خدمات مرتبط

از یادداشت تا پروژه

اگر موضوع این مقاله به سیستم یا محصول شما نزدیک است، می‌توانیم درباره دامنه واقعی صحبت کنیم.

اگر در انتخاب معماری یا مسیر توسعه مطمئن نیستید، می‌توانید درباره پروژه صحبت کنیم.

مسئله و محدودیت را بنویسید. اگر تطابق داشته باشیم، برای گفتگو هماهنگ می‌کنیم.

سهیل ابراهیم‌پور
یادداشت‌ها
systemd چیست؟ مدیر راه‌اندازی و سرویس در لینوکس مدرن
Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه
تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload
Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار
چرا همیشه به Kubernetes نیاز ندارید؟

عملیات و استقرار

systemd چیست؟ مدیر راه‌اندازی و سرویس در لینوکس مدرن

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

Logging چیست؟ ثبت رویداد برای تشخیص و پاسخ به حادثه

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

تعیین اندازهٔ سرور: RAM، CPU و Storage بر اساس Workload

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

Docker در برابر Kubernetes؛ مقایسهٔ دقیق نه شعار

۲۹ شهریور ۱۴۰۵

عملیات و استقرار

چرا همیشه به Kubernetes نیاز ندارید؟

۲۹ شهریور ۱۴۰۵
همه یادداشت‌ها219
معماری نرم‌افزار13
واژه‌نامه37
عملیات و استقرار87
مهندسی محصول74
راهنمای وب8
طراحی و ساخت محصول
توسعه فول‌استک
ممیزی مهندسی
مشاوره معماری
زیرساخت و استقرار
پروژه‌تان را مطرح کنید
ابزارهای رایگان
پروژه‌تان را مطرح کنید