FutureForgeFutureForge

خدمات FutureForge

  • طراحی و ساخت محصولاز شناخت نیاز تا انتشار محصول، یک مسیر روشن پیش رو دارید.
  • توسعه فول‌استکوب‌اپلیکیشن، API و داده را هماهنگ و یکپارچه توسعه دهید.
  • ممیزی مهندسیپیش از هزینه‌ی بیشتر، از وضعیت واقعی محصول‌تان باخبر شوید.
  • مشاوره معماریپیش از یک تصمیم فنی پرهزینه، گزینه‌ها را درست بسنجید.
  • زیرساخت و استقرارمحصول را با خیال راحت منتشر کنید و پایدار نگه دارید.
  • هوش مصنوعی در محصولهوش مصنوعی را فقط جایی به کار می‌گیریم که مسئله‌ای را حل کند.
نمونه‌کارهایادداشت‌هاقیمت‌گذاریدرباره ما
شروع گفتگو
  1. خانه
  2. /یادداشت‌ها
  3. /یادداشت‌ها
FutureForge

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

خدمات

طراحی سایت با وردپرستوسعه اختصاصیمهندسی محصولزیرساخت و استقرارمشاوره معماریهوش مصنوعی در محصول

راهنمای انتخاب

یادداشت‌هاقیمت‌گذاریتخمین هزینه پروژهمقایسه روش‌هانمونه‌کارهادرباره ماتماس

ارتباط

hello@futureforge.ir

ایده‌ای برای ساخت دارید؟

نیازتان را مطرح کنید تا درباره مسیر توسعه و قدم بعدی صحبت کنیم.

شروع گفتگو

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

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

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

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

چگونه با journalctl لاگ واحدها، بوت‌ها و بازه‌های زمانی را ببینید؛ دنبال‌کردن زنده و اشتباه‌های رایج 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 است. روی طراحی محصول، معماری و استقرار نرم‌افزار سفارشی کار می‌کند.

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

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

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

خدمات مرتبط

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

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

برای انتخاب مسیر فنی پروژه‌تان کمک می‌خواهید؟

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

سهیل ابراهیم‌پور
یادداشت‌ها
امنیت n8n: اعتبارنامه، وب‌هوک و SSRF
نصب n8n روی سرور با Docker Compose
n8n چیست و چگونه کار می‌کند؟
امنیت فروشگاه اینترنتی: سایت، درگاه و فرایند عملیاتی
بازیابی سرور لینوکس بعد از خرابی دیسک یا استقرار اشتباه

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

امنیت n8n: اعتبارنامه، وب‌هوک و SSRF

۹ آبان ۱۴۰۵

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

نصب n8n روی سرور با Docker Compose

۸ آبان ۱۴۰۵

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

n8n چیست و چگونه کار می‌کند؟

۸ آبان ۱۴۰۵

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

امنیت فروشگاه اینترنتی: سایت، درگاه و فرایند عملیاتی

۶ آبان ۱۴۰۵

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

بازیابی سرور لینوکس بعد از خرابی دیسک یا استقرار اشتباه

۲ آبان ۱۴۰۵
همه یادداشت‌ها315
معماری نرم‌افزار31
واژه‌نامه37
عملیات و استقرار94
مهندسی محصول122
راهنمای وب31
طراحی و ساخت محصول
توسعه فول‌استک
ممیزی مهندسی
مشاوره معماری
زیرساخت و استقرار
شروع گفتگو
ابزارهای رایگان
شروع گفتگو