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

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

فیلتر کردن گزارش سیستم بر اساس مکان یا مسیر فایل
اگر مسیری که میخواهید گزارش را بررسی کنید یک فایل است، میتوانید این کار را بر اساس مسیر یا مکان فایل انجام دهید. برای مثال می توانید نام فایل را در دستور journalctl به صورت زیر وارد کنید:
journalctl /usr/bin/bash
فیلتر کردن گزارش سیستم بر اساس اولویت
در بررسی برنامه Journalctl، شما همچنین می توانید گزارش ها را بر اساس اولویت فیلتر کنید. یعنی از دستور journalctl برای نمایش پیام های با اولویت بالا استفاده کنید. فیلتر کردن بر این اساس ساده است و فقط دستور p- را وارد کنید. بنابراین پیام هایی با اولویت کمتر در خروجی ظاهر نمی شوند. دستور journalctl بسته به اولویت، به هر پیام خطا، بحرانی، هشدار یا اضطراری که به صورت زیر تعریف شده است، یک مقدار عددی اختصاص میدهد:
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
حذف باگ های ژورنال systemd
برای بهبود عملکرد سیستم، باید فایل های غیر ضروری را حذف کنید. برای این کار، با کمک ابزار Disk Usage Analyzer متوجه خواهید شد که فایل لاگ سیستم چقدر فضای روی دیسک را اشغال می کند. فایل های گزارش در بخش var/log/journal ذخیره می شوند. اگر نیازی به اشکال زدایی ندارید، می توانید با حذف فایل های گزارش، فضای زیادی از سیستم را آزاد کنید. در ادامه نحوه انجام این کار را توضیح خواهیم داد.
ترمینال را باز کنید و فضای پر شده با دستور زیر را بررسی کنید:
journalctl --disk-usage
برای حذف گزارش، باید فایل های مجله را با استفاده از دستور rotate به حالت آرشیو تبدیل کنید:
sudo journalctl --rotate
سپس، اگر میخواهید لاگهای ژورنال قدیمیتر از یک روز خاص را حذف کنید، مثلاً دو روز پیش، از دستور زیر استفاده کنید:
sudo journalctl --vacuum-time=2days
علاوه بر این، اگر می خواهید فایل log را تا مقدار مشخصی حذف کنید، مثلاً 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 | زمان را بر اساس ساعت جهانی تنظیم می کند |
-ایکس – کاتالوگ | متن توضیحی را به پیام گزارش اضافه می کند |
-چرا -آرام | پیام های استفاده نشده را در خروجی نشان نمی دهد |
-ب [<ID> or <+-offset>] -چکمه[=<ID> or <+-offset>] | گزارش های یک ربات خاص را نشان می دهد |
-ک dmesg | پیام های مربوط به Server Core را نشان می دهد |
-list-boot | جدولی از شماره بوت و شناسه را نشان می دهد |
-آره <रेगेक्स> grep= | grep خروجی را بر اساس regex فیلتر می کند |
-س <दिनांक>، -شما <दिनांक> از زمان =<दिनांक>، –تا=<दिनांक> | ورودی های جدیدتر یا قدیمی تر از تاریخ خاصی را نشان می دهد |
-شما <यूनिट|पैटर्न> –واحد=<यूनिट|पैटर्न> | گزارش ها را بر اساس نهاد یا الگو نمایش می دهد |
-استفاده از دیسک | میزان فضای ذخیره سازی را نشان می دهد |
–vacuum-size=<आकार> | بایگانی فایل مجله بر اساس اندازه |
–خلاء-زمان=<समय> | این فایل ژورنال را بر اساس زمان ذخیره می کند |
نتیجه
دستور journalctl ابزار ارزشمندی است که به شما در عیب یابی لینوکس و بررسی خطاهای سیستم کمک می کند. در این مقاله وبلاگ پارس پاک دستور journalctl و کاربردهای آن را بررسی کرده و نحوه نمایش، کنترل و مدیریت Log مجله SystemD را توضیح می دهیم. آیا تا به حال از دستور journalctl استفاده کرده اید؟ تجربه خود را در قسمت نظرات با ما در میان بگذارید.
سوالات متداول
1. دستور journalctl برای چیست؟
دستور journalctl برای جستجو و نمایش گزارش های مجله در سیستم استفاده می شود. سرویس SystemD گزارش های مجله را در قالب باینری ذخیره می کند و سپس نحو JournalCTL آنها را می خواند.
2. لاگ ژورنال لینوکس در کجا قرار دارد؟
به طور پیش فرض، مجله داده ها را در /run/log/journal/ ذخیره می کند.
3. چگونه فایل های ژورنال سیستم را فراخوانی کنیم؟
برای خواندن گزارش مجله سیستم، بدون هیچ گزینه ای از دستور journalctl استفاده کنید.