1) ما هو updatedb ولماذا نستخدمه؟
أمر updatedb وظيفته: تحديث قاعدة بيانات locate.
locateيبحث بسرعة لأنه يعتمد على قاعدة بيانات جاهزة لمسارات الملفات.- هذه القاعدة لا تتحدث تلقائيًا كل لحظة، لذلك نستخدم:
updatedbBashلكي يقوم بمسح الملفات/المجلدات ويحدّث قاعدة البيانات.
✅ النتيجة: بعد updatedb يصبح locate يرى الملفات الجديدة/التغييرات بشكل أدق.
2) متى أحتاج تشغيل updatedb؟
- عندما تنشئ ملفًا جديدًا وتكتب:
locate myfile.txtولا يظهر. - عندما تنقل ملفات كثيرة أو تحذف ملفات وتريد
locateيعكس الوضع الجديد. - في بيئات تدريب/حاويات (Docker) قد تكون قاعدة locate غير محدثة.
3) الصيغة العامة (Syntax)
عادةً يستخدم بدون خيارات:
sudo updatedbBashغالبًا تحتاج
sudoليقدر يفهرس مسارات النظام (مثل/etcو/var…).
4) مثال عملي خطوة بخطوة (أهم جزء)
1) أنشئ ملف جديد
cd ~/project
touch my_new_file.txtBash2) جرّب locate (قد لا يظهر)
locate my_new_file.txtBash3) حدّث قاعدة البيانات
sudo updatedbBash4) جرّب locate مرة ثانية
locate my_new_file.txtBashالآن غالبًا سيظهر المسار الكامل مثل:
/home/youruser/project/my_new_file.txtBash5) ماذا يحدث أثناء تنفيذ updatedb؟
- يقوم بمسح (scan) أجزاء النظام (حسب إعداداته)
- ثم يكتب النتائج في ملف قاعدة بيانات (مثلًا غالبًا في:
/var/lib/mlocate/mlocate.dbعلى mlocate)
قد ترى رسائل “Scanning …” حسب النظام، أو قد يعمل بصمت.
6) أهم الخيارات/الإعدادات التي يجب أن تعرفها (للفهم)
أ) أين يتم تحديد “ماذا يفهرس” وماذا يستبعد؟
في أنظمة كثيرة (mlocate) الإعدادات تكون في:
/etc/updatedb.confBashلرؤيتها:
cat /etc/updatedb.confBashستجد أشياء مثل:
- PRUNEPATHS: مسارات يتم تجاهلها (مثل
/proc,/sys,/tmp…) - PRUNEFS: أنواع أنظمة ملفات يتم تجاهلها
- PRUNENAMES: أسماء ملفات/مجلدات يتم تجاهلها
هذه تُستخدم لتسريع الفهرسة وتجنب مسارات “وهمية” مثل
/proc.
7) تشغيل updatedb بدون “إغراق الشاشة”
إذا ظهرت رسائل كثيرة وكنت تريد تشغيله بصمت:
sudo updatedb >/dev/null 2>&1Bash8) أفضل ممارسات (مهم للمبتدئ)
- لا تشغّل
updatedbكثيرًا بدون سبب، لأنّه قد يكون ثقيل على أجهزة ضعيفة/سيرفرات. - إذا كنت تريد بحث “فوري” عن ملف جديد بدون تحديث قاعدة البيانات:
استخدمfindبدلlocate.
مثال:
find ~/project -name "my_new_file.txt"Bash9) تدريب سريع (Practice)
نفّذ هذا التدريب:
cd ~/project
mkdir -p updatedb_practice
touch updatedb_practice/a.txt updatedb_practice/b.txt
# 1) ابحث قبل التحديث (قد لا يظهر)
locate updatedb_practice/a.txt
# 2) حدّث القاعدة
sudo updatedb
# 3) ابحث بعد التحديث
locate updatedb_practice/a.txt
locate -n 5 "updatedb_practice"Bash10) أخطاء شائعة وحلول
أ) locate لا يجد شيء بعد updatedb
- تأكد أن
mlocateمثبت:
locate --versionBash- تأكد أنك استخدمت sudo:
sudo updatedbBash- تأكد أن مسارك ليس ضمن المسارات المستثناة في:
cat /etc/updatedb.confBashب) Permission denied أو مشاكل صلاحيات
استخدم sudo updatedb غالبًا يحلها.
هل الشرح الأصلي كافي؟
نعم ممتاز كمحتوى، لكن الإضافات الضرورية للمبتدئ كانت:
- ربط عملي واضح: “أنشئ ملف → locate لا يراه → updatedb → locate يراه”
- مكان الإعدادات
/etc/updatedb.confولماذا يتم استبعاد/procو/sys - متى تستخدم
findبدلlocateلو تريد نتائج فورية