如何在 Unix 环境(特别是 AIX 环境)中找出哪些可执行文件或进程正在使用我的共享库对象。有什么命令吗?
4 回答
在 linux 中,你会:
for i in /usr/bin /bin /usr/local/bin /sbin /...; do
# edit: bug fix to display which filename has the library
# the egrep component will extract line with your library
# or line with ":::", which contains name of the binary
find /usr/bin -printf '::: %p\n' -exec ldd \{\} \; | egrep 'your lib. name|:::'
done
可以找到 AIX 的 ldd 包,如下所述
要检查正在运行的进程,您可以: lsof | grep '你的图书馆名称'。如何获取 AIX 的 lsof 可以在这里找到
不确定它是否会有所帮助,但也许你可以lsof。
fuser可能是你想要的。
在 Solaris Open 或其他情况下:
例如; 一些输出被抑制...
mybox@myplace02:~$ pldd ``pgrep pidgin
5451: pidgin
/usr/lib/libc/libc_hwcap1.so.1
/usr/lib/libgdk-x11-2.0.so.0.1400.3
/usr/lib/libgdk_pixbuf-2.0.so.0.1400.3
/usr/lib/libglib-2.0.so.0.1800.0
/usr/lib/libgobject-2.0.so.0.1800.0
/usr/lib/libmlib.so .2
/usr/lib/libmlib/libmlib_sse2.so.2
/usr/lib/libgthread-2.0.so.0.1800.0
/lib/libpthread.so.1
/usr/lib/locale/en_US.UTF-8/en_US .UTF-8.so.3
/usr/lib/locale/common/methods_unicode.so.3
/lib/libthread.so.1
/usr/lib/libpurple.so.0.5.1
/lib/libnsl.so.1
/usr/lib/libgtk-x11-2.0.so.0.1400.3