اكتشف ماذا تفعل برامجك بدقة الدليل المبسط لاستخدام strace في نظام لينكس
عندما تتعطل البرامج في لينكس، تكتفي أدوات مثل top بعرض استهلاك الموارد دون توضيح السبب الفعلي. هنا تبرز أهمية أداة strace، والتي تعمل كجهاز "أشعة سينية" يكشف لك كل حركة يقوم بها البرنامج عبر اعتراض نداءات النظام (System Calls).
كيفية الاستخدام خطوة بخطوة
تحتاج أولاً إلى معرفة "رقم معرّف العملية" (PID) للبرنامج المتعطل (لنفترض أنه متصفح Firefox):
# 1. البحث عن رقم الـ PID
$ pidof firefox
# 2. ربط أداة strace بالبرنامج
$ sudo strace -p <PID>
# 3. لمراقبة العمليات الفرعية أضف -f
$ sudo strace -f -p <PID>
$ pidof firefox
# 2. ربط أداة strace بالبرنامج
$ sudo strace -p <PID>
# 3. لمراقبة العمليات الفرعية أضف -f
$ sudo strace -f -p <PID>
كيف تفهم المخرجات؟
بمجرد تشغيل الأمر، ستظهر لك سطور سريعة تمثل طلبات النظام. إليك أشهرها:
openat/read: البرنامج يحاول فتح أو قراءة ملفات النظام.connect: البرنامج يحاول الاتصال بخادم أو شبكة خارجية.epoll_wait/poll: البرنامج في حالة خمول تام وينتظر حدثاً معيناً.futex: البرنامج يقوم بمزامنة عملياته الداخلية.
تصفية النتائج للوصول للعطل فوراً
لأن المخرجات تظهر بسرعة هائلة، استخدم "الفلاتر" لتضييق نطاق البحث:
لاكتشاف مشاكل الملفات (الملف مفقود أو لا توجد صلاحيات):
$ strace -p <PID> -e trace=file 2>&1 | grep "openat\|ENOENT"
لاكتشاف مشاكل الشبكة والإنترنت:
$ strace -p <PID> -e trace=network 2>&1 | grep "connect\|ECONNREFUSED\|ETIMEDOUT"
نصيحة أخيرة:
أداة strace ممتازة لتشخيص البرامج المعلقة، ومشاكل الشبكات، وأخطاء الملفات. ولكن، يُنصح بتشغيلها فقط وقت استكشاف الأخطاء، ولا يُنصح بتركها تعمل بشكل مستمر في خوادم الإنتاج (Production Servers) لأنها تستهلك جزءاً من موارد النظام أثناء التتبع.
إرسال تعليق
تذكر قبل كتابه اى تعليق قول الله تعالى: مَا يَلْفِظُ مِنْ قَوْلٍ إِلَّا لَدَيْهِ رَقِيبٌ عَتِيدٌ [ق:18]؟