تحديد الملفات التنفيذية رابط معين المكتبة المشتركة على لينكس

StackOverflow https://stackoverflow.com/questions/3559239

  •  01-10-2019
  •  | 
  •  

سؤال

كيف يمكنني سرد كافة الملفات التنفيذية على ريد هات لينكس نظام رابط libssl?يمكنني الحصول على وثيقة مع:

find / -type f -perm /a+x -exec ldd {} \; | grep libssl   

ldd يظهر لي أي المكتبات القابل للتنفيذ الروابط مع ، ولكن الخط الذي يحتوي على المكتبة اسم لا تظهر أيضا اسم الملف ، حتى على الرغم من أن أحصل على الكثير من المباريات مع البقرى, أنا لا يمكن معرفة كيفية التراجع اسم الملف القابل للتنفيذ من المباراة التي حدثت.أي مساعدة سيكون موضع تقدير كبير.

هل كانت مفيدة؟

المحلول

find / -type f -perm /a+x -print0 |
    while read -d $'\0' FILE; do
        ldd "$FILE" | grep -q libssl && echo "$FILE"
    done

نصائح أخرى

لست متأكدا ولكن ربما sudo lsof |grep libssl.so

find /usr/bin/ -type f -perm /a+x | while read i; do match=`ldd $i | grep libssl`; [[ $match ]] && echo $i; done

بدلا من استخدام -exec, الأنابيب إلى حلقة في حين والتحقق من المباراة قبل أن تردد اسم الملف.اختياريا, يمكنك إضافة "ldd $i" إلى التحقق على المباراة باستخدام إما () أو الحقيقي إذا/إذن/fi كتلة.

find / -type f -perm /a+x -xdev | while read filename ; do
  if ldd "$filename" | grep -q "libssl" ; then
    echo "$filename"
  fi
done

على -xdev يجعل العثور على البقاء على نفس الملفات (أيلن يغوص /proc /أو sys).ملاحظة:إذا شيدت هذا على نظام التشغيل Mac OS X ، - بيرم لك لا تعمل هنا لذلك أنا لا أعرف ما إذا كان هو الصحيح.و بدلا من ldd لقد استعملت otool -L ولكن يجب أن تكون النتيجة هي نفسها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top