Определите, какие исполняемые файлы ссылаются на определенную общую библиотеку на Linux

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

  •  01-10-2019
  •  | 
  •  

Вопрос

Как я могу перечислить все исполнители в моей Red Hat Linux System, которая ссылается на libssl? Я могу приблизиться с:

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

LDD показывает мне, какие библиотеки исполняемые ссылки, но линия, которая содержит имя библиотеки, также не показывает имя файла, поэтому, хотя я получаю много совпадений с GREP, я не могу выяснить, как отказаться от имени исполняемый, из которого произошел матч. Любая помощь будет очень ценится.

Это было полезно?

Решение

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