【问题标题】:In Unix, how do I find out which executables or processes are using my shared libraries?在 Unix 中,我如何找出哪些可执行文件或进程正在使用我的共享库?
【发布时间】:2009-05-28 08:43:53
【问题描述】:

如何在 Unix 环境(尤其是 AIX 环境)中找出哪些可执行文件或进程正在使用我的共享库对象。有什么命令吗?

【问题讨论】:

    标签: unix shell shared


    【解决方案1】:

    在 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
    

    可以在here 中找到用于 AIX 的 ldd 包

    要检查正在运行的进程,您可以: lsof | grep '你的图书馆名称'。 AIX的lsof获取方法可以参考here

    【讨论】:

      【解决方案2】:

      不确定它是否会有所帮助,但也许你可以lsof

      【讨论】:

        【解决方案3】:

        fuser 可能是你想要的。

        【讨论】:

          【解决方案4】:

          在 Solaris Open 或其他情况下:

          例如;一些输出被抑制...

          mybox@myplace02:~$ pldd ``pgrep pidgin
          5451:洋泾浜
          /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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-05-04
            • 2011-06-25
            • 1970-01-01
            • 1970-01-01
            • 2022-01-26
            • 2020-06-06
            • 2011-07-03
            • 1970-01-01
            相关资源
            最近更新 更多