Определите, какие исполняемые файлы ссылаются на определенную общую библиотеку на Linux
-
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
Но результат должен быть одинаковым.