
دستور journalctl یکی از ابزارهای قدرتمند در توزیع های مختلف لینوکس است که اطلاعاتی در مورد وضعیت سیستم، Damone، واحدها یا هسته ارائه می دهد. در واقع اگر خطایی در سیستم وجود داشته باشد، دستور journalctl آن را به عنوان یک ابزار تشخیصی قدرتمند تشخیص می دهد.
در این مقاله وبلاگ پارس پاک استفاده از journaltl برای مشاهده، ویرایش و مشاهده گزارشات سیستم در لینوکس را توضیح می دهیم. اگر قصد استفاده از این دستور را دارید یا در مشاهده گزارش های سیستم مشکل دارید، تا پایان این مقاله با ما همراه باشید.
نگاهی به استفاده از دستور journalctl در لینوکس
نرم افزار Systemd یک سرویس و ابزار مدیریت سیستم لینوکس است. ابزارها و سرویس های مختلفی (Daemon) برای انجام فرآیندهای مختلف در سیستم لینوکس استفاده می شود. مجله Systemd راه حل های مربوط به فرآیندهای هسته سیستم را به عنوان یک گزارش متمرکز به مجله ارائه می دهد.
در واقع ژورنال Systemd پیام های خروجی را از سیستم جمع آوری می کند و آنها را به عنوان ژورنال ایجاد می کند. دستور journalctl داده های جمع آوری شده توسط سرویس مجله را ویرایش و اجرا می کند. به طور کلی می توان گفت که این دستور ابزاری برای مدیران سیستم لینوکس برای ضبط و ویرایش راه حل های نرم افزار سرور Syslog است.
دستور journalctl مانند یک آچار فرانسوی برای عیب یابی و رفع مشکلات سیستم لینوکس است. دامنه برنامه journalctl به گونه ای است که می توانید از سیر تا پیاز برای عیب یابی و بررسی لاگ ها و هسته سرور استفاده کنید.

رجیستری را بررسی کنید
یکی از ویژگی های مهم هر سیستمی امکان بازرسی لاگ آن است. دستور journalctl را می توان به روش های مختلفی استفاده کرد. مهمترین کاربرد journalctl بررسی گزارش سیستم است. برای این کار کافیست دستور journalctl را در ترمینال فراخوانی کنید. می توانید این کار را با فشار دادن همزمان Shift و PageUp یا Shift و PageDown انجام دهید.
خروجیای که این دستور به شما نشان میدهد، فایلهای گزارش از همه سرویسها و واحدهای سیستم است. ناگفته نماند که در این شرایط می توانید اطلاعات زیادی را به دست آورید که واقعاً به آنها نیاز ندارید. برای جلوگیری از این مشکل باید از گزینه command filter استفاده کنید.
برای آموزش کپی کردن فایل ها و پوشه ها در لینوکس با استفاده از دستور cp مقاله زیر را مطالعه کنید.
دستور cp در لینوکس
syslog را بر اساس زمان فیلتر کنید
با استفاده از یک یا چند فیلتر در دستور journalctl می توانید مشکل سیستم را با دقت بیشتری شناسایی کنید. به عنوان مثال، اگر می خواهید اطلاعات مربوط به بخشی از سیستم را برای مدت زمان مشخصی پیدا کنید، فیلتر کردن به شما کمک می کند تا به جای انبوهی از اطلاعات بی فایده، اطلاعات دقیق تری به دست آورید.
فرض کنید می خواهید فایل های گزارش دیروز را پیدا کنید. با دستور زیر می توانید این کار را انجام دهید:
journalctl --since yesterday
این دستور لاگ های سیستمی را که دیروز روی سرور لینوکس اتفاق افتاده را به شما نشان می دهد. همچنین می توانید بر اساس تاریخ یا بازه زمانی خاصی فیلتر کنید. مثلا:
journalctl --since yesterday
همچنین می توانید از دو تاریخ در یک دستور استفاده کنید. به عنوان مثال، اگر می خواهید در تاریخ 2022/02/28 از ساعت 00:00 تا 23:00 از syslog بازدید کنید، دستور journalctl را به صورت زیر وارد کنید:
journalctl --since "2022-02-28 00:00:00" --until "2022-02-28 23:00:00"
شایان ذکر است که میتوانید گزینه -n را نیز اضافه کنید تا آخرین 10 ورودی گزارش systemd-journald را دریافت کنید.
syslog را بر اساس یک واحد یا بخشی از سیستم فیلتر کنید
یکی دیگر از کاربردهای رایج journalctl فیلتر کردن بر اساس واحد یا بخشی از سیستم است که به اطلاعاتی در مورد آن نیاز دارید. برای این کار کافیست از دستور journalctl -u استفاده کنید. برای مثال، اگر می خواهید log را در قسمت cronie.service بررسی کنید، از دستور زیر استفاده کنید:
journalctl -u cronie.service
همچنین می توانید این دستور را با تاریخ ترکیبی و جستجوی دقیق تر امتحان کنید:
journalctl -u cronie.service --since yesterday
سیستم لاگ ها را بر اساس یک فرآیند یا گروه خاص فیلتر کنید
اگر شناسه دقیق فرآیندهای در حال اجرا در سیستم را می دانید، می توانید با استفاده از دستور PID بر اساس شناسه فیلتر کنید. به عنوان مثال، دستور journalctl برای ID 8888 به شرح زیر است:
journalctl _PID=8888
همچنین می توانید از دستور _UID یا _GID برای فیلتر کردن فایل log بر اساس شناسه کاربر یا گروه استفاده کنید.

syslog را بر اساس مکان یا مسیر فایل فیلتر کنید
اگر مسیری که میخواهید لاگ را بررسی کنید یک فایل است، میتوانید این کار را از طریق مسیر یا مکان فایل انجام دهید. برای مثال می توانید نام فایل را به صورت زیر در دستور journalctl وارد کنید:
journalctl /usr/bin/bash
فیلتر کردن گزارش سیستم بر اساس اولویت
در نمای برنامه journaltl نیز می توانید مجله را بر اساس اولویت فیلتر کنید. یعنی از دستور journalctl برای نمایش پیام های با اولویت بالاتر استفاده کنید. فیلتر کردن بر این اساس ساده است و فقط دستور p- را وارد کنید. به این ترتیب پیام هایی با اولویت پایین تر در خروجی ظاهر نمی شوند. دستور journaltl یک مقدار عددی را بر اساس اولویت برای هر پیام خطا، بحرانی، هشدار یا اضطراری به صورت زیر تعریف کرده است:
0: emerg 1: alert 2: crit 3: err 4: warning 5: notice 6: info 7: debug
به عنوان مثال، اگر می خواهید پیام های سطح خطا بعداً نمایش داده شوند، فقط دستور زیر را تایپ کنید:
journalctl -p err -b
فایل لاگ هسته سرور را دریافت کنید
گاهی اوقات باید بررسی کنید که آیا هسته سرور به درستی کار می کند یا خیر. سپس مشکل یا ارور سیستم را از این طریق برطرف کنید. برای دریافت فایل لاگ هسته سرور کافیست از دستور k- استفاده کنید. همچنین، اگر می خواهید اطلاعاتی در مورد آخرین بوت هسته دریافت کنید، می توانید از دستور -b استفاده کنید:
journalctl -b
journalctl -k
با این پیام، پیام های هسته به طور پیش فرض از زمان بوت ظاهر می شوند. برای جستجوی دقیق تر، می توانید این دستور را با سایر دستورات ذکر شده در بالا ترکیب کنید. به عنوان مثال، اگر می خواهید پیام های هسته را برای 6 بوت آخر بررسی کنید، از دستور زیر استفاده کنید:
journalctl -k -b -6
خطاهای ثبت سیستم را حذف کنید
برای بهبود عملکرد سیستم، باید فایل های غیر ضروری را حذف کنید. برای این کار به کمک ابزار Disk Usage Analyzer متوجه خواهید شد که فایل لاگ سیستم چقدر فضای روی دیسک را اشغال می کند. فایل های گزارش در بخش var/log/journal ذخیره می شوند. اگر نیازی به اشکال زدایی ندارید، می توانید با حذف فایل های گزارش، فضای زیادی از سیستم را آزاد کنید. در ادامه نحوه انجام این کار را توضیح خواهیم داد.
ترمینال را باز کنید و فضای پر شده با دستور زیر را بررسی کنید:
journalctl --disk-usage
برای حذف لاگ، باید فایل های لاگ را با استفاده از دستور rotate به حالت آرشیو تبدیل کنید:
sudo journalctl --rotate
سپس، اگر می خواهید گزارش های قدیمی را از یک روز خاص حذف کنید، مثلاً دو روز پیش، از دستور زیر استفاده کنید:
sudo journalctl --vacuum-time=2days
همچنین اگر می خواهید فایل لاگ را به میزان مشخصی مثلاً 100 مگابایت حذف کنید، از دستور زیر استفاده کنید:
sudo journalctl --vacuum-size=100M
نمایش فرمت های خاص در خروجی
با استفاده از دستور journalctl می توانید خروجی را در قالب خاصی مشاهده کنید. سینتکس فرمت خروجی با استفاده از این دستور به صورت زیر است:
journalctl -o <output format>
برخی از فرمت های خروجی که سیستم پشتیبانی می کند عبارتند از:
- گربه-: کادر پیام را نشان می دهد
- صادرات: خروجی در فرمت باینری مناسب برای آرشیو
- کوتاه-: خروجی مشابه فایل های Syslog کلاسیک
- دقیقا کوتاه: نمایش زمان بر حسب میکروثانیه
- json-: ورودی گزارش را به عنوان ورودی های تک خطی JSON نمایش دهید
- json-pretty-: نمایش خطوط به عنوان ساختارهای JSON
به عنوان مثال، اگر می خواهید خروجی را با فرمت کوتاه دریافت کنید، باید از دستور زیر استفاده کنید:
journalctl -o short
جدول استفاده از دستور Journalctl
سفارش | شرح |
– آ – همه چيز | نمایش تمام فایل های قابل چاپ و غیر قابل چاپ |
-ف – دنبال می کنم | نمایش سوابق اخیر و چاپ آنها |
-تکمیل نشده | خروج کوتاه مدت |
– است – انتهای پیجر | به پایین صفحه بروید |
-n <число> – ردیف =<номер> | تعداد محدودی (به طور پیش فرض 10 آرگومان) از آخرین رکوردها را نمایش می دهد |
-o <формат> –خروجی=<формат> | ورودی گزارش را در قالب دلخواه نمایش می دهد |
– utc | زمان را بر اساس ساعت جهانی تنظیم می کند |
-ایکس – کاتالوگ | متن توضیحی را به پیام گزارش اضافه می کند |
-q – ساکت | پیام های استفاده نشده را در خروجی نشان نمی دهد |
-ب [<ID> or <+-offset>] – یک کفش[=<ID> or <+-offset>] | گزارش های یک ربات خاص را نشان می دهد |
-k – dmesg | پیام های مربوط به هسته سرور را نمایش می دهد |
– لیست راه انداز | جدولی از اعداد بار و شناسه ها را نمایش می دهد |
– آقای <регекс> –grep= | خروجی را بر اساس grep regex فیلتر می کند |
-س <дата>، -U <дата> –از زمان =<дата>–تا=<дата> | رکوردهای جدید یا قدیمی را از یک تاریخ خاص نشان می دهد |
-u <единица|модел> –واحد=<единица|модел> | گزارش ها را بر اساس واحدها یا الگوها نمایش می دهد |
– استفاده از دیسک | میزان فضای ذخیره سازی را نشان می دهد |
–size-vacuum=<размер> | از فایل گزارش بر اساس اندازه نسخه پشتیبان تهیه می کند |
–خلاء-زمان=<време> | بر اساس زمان از فایل لاگ بک آپ می گیرد |
نتیجه
دستور journalctl ابزار ارزشمندی است که به شما در عیب یابی مشکلات لینوکس و بررسی خطاهای سیستم کمک می کند. در این مقاله وبلاگ پارس پاک به بررسی دستور journalctl و کاربرد آن پرداختیم و نحوه نمایش، کنترل و مدیریت لاگ های مجله systemd را توضیح دادیم. آیا تا به حال از دستور journalctl استفاده کرده اید؟ تجربه خود را در قسمت نظرات با ما در میان بگذارید.
سوالات متداول
1. دستور journalctl برای چیست؟
دستور journalctl برای جستجو و نمایش فایل های گزارش مجله در سیستم ها استفاده می شود. سرویس systemd گزارش های مجله را در قالب باینری ذخیره می کند و سپس نحو journalctl آنها را می خواند.
2. لاگ لینوکس در کجا قرار دارد؟
به طور پیش فرض، مجله داده ها را در /run/log/journal/ ذخیره می کند.
3. چگونه فایل های گزارش سیستم را فراخوانی کنیم؟
برای خواندن گزارش syslog، از دستور journalctl بدون گزینه استفاده کنید.