بسم الله الرحمن الرحيم
ما هو مجلد `/run` في نظام لينكس؟
يُعتبر نظام الملفات في لينكس حجر الأساس الذي تُبنى عليه بنية النظام والخدمات والبرامج. ومن بين المجلدات المهمة التي قد يلاحظها المستخدم أثناء استكشاف النظام، نجد مجلد `/run`. هذا المجلد قد يبدو غامضاً للبعض، لكنه يلعب دوراً محورياً في عمل النظام والخدمات أثناء التشغيل.
تعريف مجلد `/run`
مجلد `/run` هو دليل (directory) خاص يُستخدم لتخزين البيانات المؤقتة (runtime data) الخاصة بالنظام والخدمات والعمليات التي تعمل في الوقت الفعلي.
هذه البيانات لا تكون دائمة، بل يتم إنشاؤها عند تشغيل النظام وتُحذف تلقائياً عند إعادة التشغيل.
يتم تخزينه في نظام ملفات tmpfs، أي أن بياناته محفوظة في الذاكرة العشوائية RAM، وليس على القرص الصلب.
وبذلك فهو يُشبه إلى حد ما مجلد `/tmp`، لكن مع اختلاف واضح:
`/tmp` → مخصص لتخزين الملفات المؤقتة التي ينشئها المستخدم أو التطبيقات.
`/run` → مخصص لتخزين بيانات النظام والخدمات أثناء التشغيل.
خلفية تاريخية
قبل ظهور مجلد `/run`، كانت معظم التوزيعات تستخدم:
`/var/run` لتخزين ملفات PID (Process IDs) والبيانات المؤقتة.
`/var/lock` لتخزين ملفات القفل (lock files).
لكن بما أن `/var` عادة ما يُركب (mount) بعد إقلاع النظام، فقد كان هناك مشكلة في إتاحة هذه البيانات في مرحلة مبكرة من تشغيل النظام.
لذلك، تم تقديم `/run` كجزء من Filesystem Hierarchy Standard (FHS) ليكون متاحاً منذ اللحظة الأولى للإقلاع.
حالياً، نجد أن:
`/var/run` → مجرد رابط رمزي (symlink) يشير إلى `/run`.
`/var/lock` → يشير إلى `/run/lock`.
محتويات مجلد `/run`
يحتوي هذا المجلد على بيانات متنوعة تتعلق بالنظام والخدمات. ومن الأمثلة الشائعة:
`/run/systemd/` → بيانات تخص مدير النظام systemd.
`/run/lock/` → ملفات قفل لمنع تشغيل أكثر من عملية على نفس المورد.
`/run/user/<UID>/` → مجلد خاص بكل مستخدم (مثلاً `/run/user/1000/` للمستخدم الأول)، يُستخدم لتخزين بيانات الجلسة مثل ملفات الـ sockets أو الـ runtime الخاصة بالبرامج.
`/run/network/` → بيانات مؤقتة متعلقة بالشبكة.
`/run/utmp` → يحتوي على معلومات عن المستخدمين المسجلين حالياً في النظام.
الاستخدامات العملية لمجلد `/run`
1. تخزين معرفات العمليات (PID files):
عندما يبدأ أي برنامج أو خدمة (مثل Apache أو MySQL)، ينشئ ملف PID في `/run` لتخزين رقم العملية.
هذا يساعد النظام أو المدير (systemd) على معرفة ما إذا كانت الخدمة قيد التشغيل أم لا.
2. ملفات القفل (Lock files):
تُستخدم لمنع تعارض العمليات، مثل منع تشغيل أكثر من خدمة تتعامل مع نفس المورد (مثلاً طابعة أو منفذ معين).
3. المقابس (Sockets):
كثير من الخدمات تعتمد على Unix domain sockets لتبادل البيانات (مثل `X11` أو `DBus`)، وهذه الملفات عادة تُخزن في `/run`.
4. إدارة جلسات المستخدمين:
عند تسجيل الدخول، يتم إنشاء مجلد خاص بالمستخدم داخل `/run/user/` لتخزين ملفات runtime الخاصة به.
يُحذف هذا المجلد تلقائياً عند خروج المستخدم أو إعادة تشغيل الجهاز.
🧠 الفرق بين `/run` و `/tmp`
| الخاصية | `/run` | `/tmp` |
| ---------------- | ------------------------------ | ----------------------------------------------------- |
| الغرض | بيانات runtime للنظام والخدمات | ملفات مؤقتة للمستخدم والبرامج |
| مكان التخزين | RAM (tmpfs) | قد تكون RAM أو القرص (يعتمد على التوزيعة) |
| مدة بقاء الملفات | حتى إعادة التشغيل | حتى يُحذف يدوياً أو عند إعادة التشغيل (حسب الإعدادات) |
| مَن يستخدمه | النظام والخدمات | المستخدمون والبرامج |
مجلد `/run` هو أحد أهم المجلدات في بنية لينكس الحديثة.
يمثل مخزن مؤقت سريع للنظام والخدمات، حيث يحتفظ بالبيانات المهمة أثناء التشغيل.
يختلف عن مجلدات مثل `/tmp` و `/var/run` بكونه متاحاً منذ لحظة إقلاع النظام ويعمل بالكامل في الذاكرة.
فهم هذا المجلد يساعد مسؤولي النظام والمطورين على التعامل مع الخدمات بشكل أفضل، خصوصاً عند استكشاف الأخطاء وإصلاحها.
ليست هناك تعليقات:
إرسال تعليق
(( مَا يَلْفِظُ مِنْ قَوْلٍ إِلَّا لَدَيْهِ رَقِيبٌ عَتِيدٌ))