如何列出我的 Red Hat Linux 系统上链接到 libssl 的所有可执行文件?我可以接近:
find / -type f -perm /a+x -exec ldd {} \; | grep libssl
ldd 向我显示可执行文件链接到哪些库,但包含库名称的行不显示文件名,所以虽然我得到了很多与 grep 匹配的内容,但我不知道如何退出发生匹配的可执行文件。任何帮助将不胜感激。
如何列出我的 Red Hat Linux 系统上链接到 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,而是通过管道连接到 while 循环并检查匹配项。或者,您可以使用 () 或真正的 if/then/fi 块将“ldd $i”添加到匹配检查。
find / -type f -perm /a+x -xdev | while read filename ; do
if ldd "$filename" | grep -q "libssl" ; then
echo "$filename"
fi
done
make -xdev
find 保持在同一个文件系统上(即它不会深入到 /proc 或 /sys)。注意:如果在 Mac OS X 上构建这个,你的 -perm 在这里不起作用,所以我不知道它是否正确。而不是ldd
我用过otool -L
,但结果应该是一样的。