لاگ‌ها

journalctl به زبان ساده: خوندن و فیلتر کردن لاگ‌های systemd.

نویسنده: تیم noc724۳ دقیقه مطالعهبه‌روزرسانی: ۲۶ مهر ۱۴۰۵

روی بیشتر سرورهای لینوکسی امروزی، سرویس‌ها توی ژورنال systemd لاگ می‌نویسن. journalctl ابزار خوندن اونه و چند گزینه‌ی ساده هزاران خط رو به همون چند خطی که لازم دارید تبدیل می‌کنه.

نکته‌های کلیدی

  • journalctl -u nginx یه سرویس رو نشون می‌ده؛ -f خط‌های جدید رو زنده دنبال می‌کنه.
  • --since و --until بازه‌ی زمانی رو محدود می‌کنن؛ -p err فقط خطاها و بدتر رو نشون می‌ده.
  • -b خروجی رو به بوت فعلی و -b -1 به بوت قبلی محدود می‌کنه.
  • ممکنه ژورنال فقط در حافظه ذخیره بشه؛ ذخیره‌ی دائمی رو فعال کنید تا لاگ‌ها بعد از ری‌استارت بمونن.
  • با --vacuum-size یا SystemMaxUse نذارید ژورنال دیسک رو پر کنه.
قطعی پیش میاد. زود باخبر شید!

noc724 سایت، سرور و APIهای شما رو شبانه‌روز چک می‌کنه و همون لحظه‌ای که چیزی خراب شد با پیامک، تلگرام یا بله خبرتون می‌کنه.

ثبت‌نام رایگان

اصول اولیه

journalctl                 # everything, oldest first, in a pager
journalctl -r              # newest first
journalctl -n 100          # last 100 lines
journalctl -f              # follow new entries live (like tail -f)

خوندن کل ژورنال معمولاً دسترسی root یا عضویت در گروه systemd-journal لازم داره.

فیلتر بر اساس سرویس

journalctl -u nginx
journalctl -u nginx -u php-fpm      # several units together
journalctl -u myapp -f              # follow one service

اگه اسم یه unit با چیزی که فکر می‌کنید فرق داره، با systemctl list-units --type=service فهرستشون رو ببینید.

فیلتر بر اساس زمان

journalctl --since "2026-10-18 02:00" --until "2026-10-18 03:30"
journalctl --since "1 hour ago"
journalctl --since today
journalctl --since yesterday --until today

با یه unit ترکیبش کنید تا به سؤال «برنامه دور و بر قطعی چی لاگ کرده؟» جواب بده:

journalctl -u myapp --since "02:50" --until "03:10"

فیلتر بر اساس اولویت

اولویت‌های ژورنال از سطح‌های syslog پیروی می‌کنن:

عدداسممعنی
0emergسیستم غیرقابل استفاده است
1alertاقدام فوری لازمه
2critبحرانی
3errخطا
4warningهشدار
5noticeعادی ولی مهم
6infoاطلاعاتی
7debugعیب‌یابی
journalctl -p err -b         # errors and worse since boot
journalctl -p warning..err   # a range

فیلتر بر اساس بوت

journalctl --list-boots
journalctl -b          # current boot
journalctl -b -1       # previous boot - useful after an unexpected restart
journalctl -k -b -1    # kernel messages from the previous boot (out-of-memory, disk errors)

فیلترهای کاربردی دیگه

journalctl _PID=4211
journalctl _COMM=sshd
journalctl -g "timeout|refused"       # grep the message text (newer systemd)
journalctl -u myapp -o json-pretty    # every field, structured
journalctl -u myapp -o cat            # message text only

نگه داشتن لاگ‌ها بعد از ری‌استارت

روی بعضی توزیع‌ها ژورنال توی /run نگه داشته می‌شه و با ری‌استارت پاک می‌شه؛ دقیقاً وقتی که بیشتر از همیشه لازمش دارید. دائمیش کنید:

sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
sudo systemctl restart systemd-journald

یا در /etc/systemd/journald.conf مقدار Storage=persistent رو بذارید.

کنترل مصرف دیسک

journalctl --disk-usage
sudo journalctl --vacuum-size=1G     # shrink to 1 GB
sudo journalctl --vacuum-time=14d    # drop entries older than 14 days

برای یه سقف دائمی، در journald.conf مقدار SystemMaxUse=1G رو تنظیم کنید.

از لاگ تا هشدار

ژورنال می‌گه روی یه سرور چه اتفاقی افتاده. برای رخدادها اون رو با این‌ها همراه کنید:

  • یه مانیتور آپتایم بیرونی که می‌گه کی کاربرها درگیر شدن،
  • جمع‌آوری مرکزی لاگ‌ها تا بشه همه‌ی سرورها رو یکجا جستجو کرد،
  • چک‌های Heartbeat برای timerها و کارهای زمان‌بندی‌شده.

پرسش‌های پرتکرار

  • یا ژورنال دائمی نیست (لاگ‌ها با ری‌استارت پاک شدن) یا بر اساس سقف حجم یا زمان چرخیده. journalctl --list-boots و journalctl --disk-usage رو چک کنید.

  • journalctl -u name -n 200 --no-pager آخرین خط‌ها رو در طول ری‌استارت‌ها نشون می‌ده. systemctl status name هم کد خروج و آخرین خط‌ها رو نشون می‌ده.

  • روی خیلی از سیستم‌ها هر دو وجود دارن: ممکنه rsyslog هنوز فایل‌های متنی مثل /var/log/syslog رو از ژورنال بنویسه. هر دو کار می‌کنن؛ ژورنال فیلترهای کامل‌تری داره.

اشتراک‌گذاری مقاله:ایکستلگراملینکدینفیسبوکردیت
noc724

نویسنده

تیم noc724

تیم فنی مانیتورینگ آپتایم

ما noc724 رو می‌سازیم و اداره می‌کنیم؛ سرویس مانیتورینگ آپتایمی که سایت، سرور و API رو از چند شهر ایران چک می‌کنه. این راهنماها از مشکل‌هایی میان که خودمون و کاربرهامون موقع آنلاین نگه داشتن سرویس‌ها باهاشون روبه‌رو می‌شیم.

تماس با تیم

تخصص:لاگ‌ها

سؤالی دارید؟تماس با پشتیبانی
پیشنهادی دارید؟بفرستید

تازه‌ترین مقاله‌ها