حرف J

أداة استعراض سجلات النظام (journalctl)

journalctl

آخر تحديث: 2026-10-06
مستوى الشرح اختر المستوى التقني المناسب لك

الشرح المبسط

تخيل أن جهاز الكمبيوتر الخاص بك يعمل مثل الطائرة التي تحتوي على صندوق أسود يسجل كل حركة وكل عطل يحدث بداخلها لحظة بلحظة. في نظام لينكس، توجد خدمة تقوم بدور هذا الصندوق الأسود وتسمى journald، أما أداة journalctl فهي الشاشة أو القارئ الذي تستخدمه لفتح هذا الصندوق وقراءة ما بداخله. عندما يتوقف برنامج عن العمل فجأة أو تواجه مشكلة في تشغيل النظام، يمكنك استخدام هذه الأداة لتعرف بالضبط ما الذي حدث ومتى حدث، مما يساعدك على إصلاح المشكلة بسرعة بدلا من التخمين.

الشرح التقني المتقدم

تعد أداة journalctl الواجهة القياسية في توزيعات لينكس الحديثة لاستعلام وعرض السجلات التي تجمعها خدمة systemd-journald. على عكس أنظمة التسجيل التقليدية مثل syslog التي تحفظ البيانات في ملفات نصية عادية، يقوم النظام بتخزين السجلات في ملفات ثنائية مفهرسة، مما يمنح journalctl سرعة فائقة في البحث والفلترة حسب الوقت، الخدمة، أو مستوى الخطورة.

آلية عمل السجلات ومسارات التخزين

تعتمد الأداة في عملها على قراءة البيانات من مسارات محددة في النظام وتنسيقها للمستخدم:

التخزين المؤقت والدائم: يتم حفظ السجلات افتراضياً إما بشكل مؤقت في الذاكرة داخل المسار /run/log/journal حيث تُمسح عند إعادة التشغيل، أو بشكل دائم على القرص الصلب داخل المسار /var/log/journal، ويتحكم في هذا السلوك ملف الإعدادات /etc/systemd/journald.conf.

استعراض السجلات وتتبع الأخطاء (أمر journalctl)

لعرض سجلات خدمة معينة مثل خادم الويب ومراقبتها في الوقت الفعلي أثناء حدوثها:

أمر التنفيذ:

sudo journalctl -u nginx.service -f

توضيح الخيارات الأساسية لتحليل السجلات بدقة:

- الخيار -u: يخصص البحث لعرض سجلات وحدة أو خدمة محددة فقط بدلاً من عرض سجلات النظام بالكامل.

- الخيار -f: يعرض أحدث السطور المضافة للسجل بشكل حي ومستمر فور حدوثها، وهو مشابه لعمل الأمر tail -f.

- الخيار -p err -b: يستخدم عند دمجه مع الأمر الرئيسي لعرض رسائل الأخطاء الحرجة فقط التي حدثت منذ عملية الإقلاع الحالية.

- الخيار --since و --until: يتيح تصفية السجلات ضمن نطاق زمني دقيق مثل كتابة journalctl --since "1 hour ago".

إدارة مساحة القرص وتنظيف السجلات

مع مرور الوقت قد تتضخم ملفات السجلات وتستهلك مساحة كبيرة من القرص، ولحذف السجلات القديمة والاحتفاظ بمساحة محددة فقط ننفذ الأمر التالي:

أمر التنفيذ:

sudo journalctl --vacuum-size=500M && sudo journalctl --vacuum-time=7d

توضيح آلية التنظيف والتحكم بالحجم:

- الخيار --vacuum-size: يقوم بحذف السجلات المؤرشفة الأقدم حتى ينخفض إجمالي حجم السجلات إلى الحد المعين مثل 500 ميجابايت.

- الخيار --vacuum-time: يزيل كافة السجلات المؤرشفة التي مضى عليها وقت أقدم من المدة المحددة مثل 7 أيام.

ملاحظة ختامية: الصورة الكبرى (نصيحة احترافية)

لضمان عدم امتلاء القرص الصلب في الخوادم الإنتاجية دون الحاجة للتدخل اليدوي المتكرر، يُنصح بضبط القيمة SystemMaxUse داخل ملف /etc/systemd/journald.conf لتحديد سقف أقصى لحجم السجلات تلقائياً، كما يُفضل إضافة المستخدمين المعنيين بالمراقبة إلى مجموعة systemd-journal أو adm ليتمكنوا من قراءة السجلات دون الحاجة لاستخدام صلاحيات الجذر sudo في كل مرة.