كيفية البحث عن الارتباطات الرمزية المعطلة وحذفها على نظام Linux

نشرت: 2022-01-29
نافذة طرفية على كمبيوتر محمول يعمل بنظام Linux.
فاطماواتي أحمد زينوري / شاترستوك

الروابط الرمزية على Linux هي ميزة رائعة ، لكنها يمكن أن تتعطل وتترك تشير إلى لا شيء. فيما يلي كيفية تحديد موقع الروابط الرمزية المعطلة ومراجعتها وإزالتها من نظامك إذا احتجت إلى ذلك.

الروابط الرمزية 101

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

على سبيل المثال ، لنفترض أن لديك ارتباط رمزي في الدليل الرئيسي الخاص بك يسمى “dave-link” والذي يشير إلى ملف يسمى “text-file.txt” الموجود في مكان آخر في شجرة نظام الملفات. يتم تطبيق الأوامر التي تستخدمها على الارتباط الرمزي تلقائيًا على الملف الذي يشير إليه. إذا حاولت استخدام cat أو less على رابط الرمز ، فسترى بالفعل محتويات ملف “text-file.txt”.

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

يمكننا بسهولة رؤية بعض الروابط الرمزية باستخدام ls في الدليل الجذر. يتم عرض بعض الإدخالات بلون مختلف - على جهاز اختبار Ubuntu 20.10 الخاص بنا ، يتم عرضها باللون الأزرق الفاتح.

نكتب ما يلي:

 ليرة سورية / 

الإعلانات

يمكننا إلقاء نظرة أعمق باستخدام الخيار -l (القائمة الطويلة). نكتب الأمر التالي للنظر في جميع إدخالات "lib" وإدخال "bin" الفردي:

 ls -l / lib * / bin 

في بداية كل سطر يوجد الحرف "l" ، مما يشير إلى أن العنصر عبارة عن ارتباط رمزي. يظهر النص بعد "->" إلى ما يشير إليه الارتباط الرمزي. في مثالنا ، الأهداف كلها أدلة.

يتم سرد الأذونات على أنها قراءة وكتابة وتنفيذ للمالك والمجموعة وآخرين. هذه إدخالات وهمية افتراضية. لا تعكس الأذونات الفعلية على الكائنات التي تشير إليها الروابط الرمزية. إنها الأذونات على الملف أو الدليل الهدف التي لها الأسبقية ويتم تكريمها بواسطة نظام الملفات.

ارتباطات رمزية معطلة

يتم كسر الارتباط الرمزي (أو تركه يتدلى) عند حذف الملف الذي يشير إليه أو نقله إلى مكان آخر. إذا لم يعمل روتين إلغاء التثبيت الخاص بالتطبيق بشكل صحيح ، أو تمت مقاطعته قبل اكتماله ، فقد تترك روابط رمزية معطلة.

إذا قام شخص ما بحذف ملف يدويًا دون معرفة أن الروابط الرمزية تشير إليه ، فلن تعمل هذه الارتباطات الرمزية بعد الآن. ستكون مثل لافتات طريق تشير إلى بلدة تم هدمها بالجرافات.

يمكننا بسهولة رؤية هذا السلوك باستخدام رابط رمزي يسمى "hello" في الدليل الحالي. نكتب ما يلي مستخدمين ls لرؤيته:

 ls -l
الإعلانات

يشير إلى برنامج يسمى "htg" في دليل يسمى "bin". إذا قمنا "بتشغيل" الارتباط الرمزي ، فسيتم تنفيذ البرنامج لنا:

 ./مرحبا

يمكننا الآن التحقق مما إذا كان هذا هو ما يحدث عن طريق تشغيل البرنامج مباشرة:

 ../bin/htg

كما هو متوقع ، حصلنا على نفس الاستجابة. لنحذف ملف البرنامج:

 rm ../bin/htg

الآن ، عندما ننظر إلى الارتباط الرمزي ، نرى أنه مدرج باللون الأحمر لأن Linux يعرف أنه معطل. يخبرنا أيضًا بما تم استخدامه للإشارة ، حتى نتمكن من استبدال الملف أو إعادة ترجمة البرنامج أو القيام بكل ما هو ضروري لإصلاح الارتباط الرمزي.

لاحظ أنه إذا حاولنا تشغيل الارتباط الرمزي ، فسيظهر الخطأ يشير إلى اسم الارتباط الرمزي ، بدلاً من اسم البرنامج الذي يشير إليه الارتباط الرمزي.

نكتب ما يلي:

 ./مرحبا 

البحث عن الارتباطات الرمزية المقطوعة

تحتوي معظم الإصدارات الحديثة من find على xtype (نوع ممتد) ، والذي يبسط عملية العثور على ارتباطات رمزية معطلة. سنستخدم العلامة l مع xtype ، لنخبرها بالبحث عن الروابط. باستخدام find و xtype على النحو التالي ، بدون أي من أعلام type الأخرى ، يفرض xtype على إرجاع الروابط المقطوعة:

 تجد . -xtype ل 

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

تم إدراج الارتباط الرمزي "مرحبًا" الذي كسرناه عمدًا ، كما توقعنا. يرتبط أحد الروابط الرمزية الأخرى بمتصفح Firefox ، ويرتبط الباقي باللقطات.

إذا قمنا بتوجيه الإخراج عبر wc باستخدام الخيار -l (الأسطر) ، فيمكننا حساب الأسطر ، وهو نفس حساب الروابط الرمزية المقطوعة.

نكتب ما يلي:

 تجد . -xtype l | مرحاض -l 

لقد علمنا أن لدينا 24 ارتباطًا رمزيًا معطلاً يشير إلى لا شيء.

البحث والمراجعة ثم إزالة

قبل أن تتسرع في حذف جميع الارتباطات الرمزية المعطلة وتحذفها ، انظر في نتائج أمر find . تحقق مما إذا كان هناك سبب وجيه لأي من الروابط الرمزية المعطلة.

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

من الممكن أيضًا استخدام رابط رمزي معطل ظاهريًا كشيء آخر ، مثل مؤشر قفل ملف أو مؤشر go / no go آخر. يقوم Firefox بهذا ؛ هذا هو الرابط الرمزي الأول في قائمتنا. ومع ذلك ، لا يتم استخدام Firefox على جهاز الاختبار الخاص بنا ، لذا فمن الآمن حذفه.

الإعلانات

من الممكن أيضًا أن يكون الهدف موجودًا بشكل دوري فقط ، وهذا هو السلوك المتوقع (والمطلوب) لهذا البرنامج المعين. ربما يتم نسخ الملف الهدف من جهاز آخر أو من السحابة ، ويقوم بوظيفته ، ثم يتم حذفه مرة أخرى ، ليتم استبداله ببرنامج مختلف في الدورة التالية.

قد يكون الارتباط الرمزي المقطوع أيضًا أحد أعراض فشل تثبيت البرنامج. في هذه الحالة ، بدلاً من حذف الارتباط الرمزي ، يجب إما إصلاحه يدويًا أو إعادة التثبيت.

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

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

إزالة الارتباطات الرمزية المقطوعة

يقوم الخيار -exec (تنفيذ) بتشغيل الأوامر في نتائج find . سنستخدم rm لحذف كل ارتباط رمزي معطل. يتم استبدال السلسلة {} باسم كل ارتباط رمزي معطل حيث يتم اكتشاف كل واحد من خلال find .

علينا استخدام فاصلة منقوطة ( ; ) لإنهاء قائمة الأوامر التي نريد تشغيل -exec . سنستخدم الشرطة المائلة للخلف ( \ ) "للهروب" من الفاصلة المنقوطة ، لذلك يتم التعامل معها كجزء من أمر find ، وليس شيئًا يجب أن يعمل به Bash .

نكتب ما يلي:

 تجد . -xtype l -exec rm {} \؛ 

الإعلانات

لقد عدنا إلى موجه الأوامر بدون إشارة إلى حدوث أي شيء. للتحقق من إزالة الروابط المعطلة ، نكرر الأمر للبحث عنها ، على النحو التالي:

 تجد . -xtype ل 

لا توجد أي نتائج مطابقة ، مما يعني أنه قد تمت إزالة الروابط الرمزية المعطلة.

تذكر أن تقوم بالمراجعة أولاً

مرة أخرى ، خذ دائمًا الوقت الكافي لمراجعة قائمة الروابط الرمزية قبل تشغيل الأمر لحذفها. يمكنك تجنب حذف أي شيء لست متأكدًا بشأنه عن طريق تشغيل الأمر لحذفها في الدلائل المناسبة.

على سبيل المثال ، أعلاه ، كان بإمكاننا تشغيل الأمر في دليل ".snap" ، ثم إزالة الارتباط الرمزي المنفرد "hello" يدويًا. كان هذا من شأنه أن يترك الارتباط الرمزي لقفل Firefox دون تغيير.