2

如何列出我的 Red Hat Linux 系统上链接到 libssl 的所有可执行文件?我可以接近:

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

ldd 向我显示可执行文件链接到哪些库,但包含库名称的行不显示文件名,所以虽然我得到了很多与 grep 匹配的内容,但我不知道如何退出发生匹配的可执行文件。任何帮助将不胜感激。

4

4 回答 4

4
find / -type f -perm /a+x -print0 |
    while read -d $'\0' FILE; do
        ldd "$FILE" | grep -q libssl && echo "$FILE"
    done
于 2010-08-24T17:42:21.983 回答
1

我不确定,但也许sudo lsof |grep libssl.so

于 2010-08-24T17:40:54.297 回答
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”添加到匹配检查。

于 2010-08-24T17:43:12.923 回答
0
find / -type f -perm /a+x -xdev | while read filename ; do
  if ldd "$filename" | grep -q "libssl" ; then
    echo "$filename"
  fi
done

make -xdevfind 保持在同一个文件系统上(即它不会深入到 /proc 或 /sys)。注意:如果在 Mac OS X 上构建这个,你的 -perm 在这里不起作用,所以我不知道它是否正确。而不是ldd我用过otool -L,但结果应该是一样的。

于 2010-08-24T17:46:05.633 回答