如何列出我的Red Hat Linux系统上链接到libssl的所有可执行文件?我可以接近:
find / -type f -perm /a+x -exec ldd {} \; | grep libssl
ldd显示了可执行文件链接的库,但是包含库名的行也没有显示文件名,所以虽然我得到了很多与grep的匹配,但我无法弄清楚如何退出发生匹配的可执行文件的名称。任何帮助将不胜感激。
答案 0 :(得分:4)
find / -type f -perm /a+x -print0 |
while read -d $'\0' FILE; do
ldd "$FILE" | grep -q libssl && echo "$FILE"
done
答案 1 :(得分:0)
我不确定,但也许sudo lsof |grep libssl.so
答案 2 :(得分:0)
find /usr/bin/ -type f -perm /a+x | while read i; do match=`ldd $i | grep libssl`; [[ $match ]] && echo $i; done
而不是使用-exec,管道到while循环并在回显文件名之前检查匹配。或者,您可以使用()或实际的if / then / fi块将“ldd $ i”添加到匹配检查中。
答案 3 :(得分:0)
find / -type f -perm /a+x -xdev | while read filename ; do
if ldd "$filename" | grep -q "libssl" ; then
echo "$filename"
fi
done
-xdev
使find停留在同一个文件系统上(即它不会潜入/ proc或/ sys)。注意:如果在Mac OS X上构建它,你的精子在这里不起作用,所以我不知道它是否正确。而不是ldd
我使用了otool -L
,但结果应该相同。