Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 哪些所有进程都在使用共享库_Unix - Fatal编程技术网

Unix 哪些所有进程都在使用共享库

Unix 哪些所有进程都在使用共享库,unix,Unix,我在UNIX上有一个共享库(.so文件)。 我需要知道所有正在运行的进程都在使用它。 unix是否提供任何此类实用程序/命令?您可以检查/proc//maps的内容,以查看哪些文件映射到每个进程中。您必须检查每个流程,但这比听起来容易: $ grep -l /lib/libnss_files-2.11.1.so /proc/*/maps /proc/15620/maps /proc/22439/maps /proc/22682/maps /proc/32057/maps 这仅适用于Linux/

我在UNIX上有一个共享库(.so文件)。 我需要知道所有正在运行的进程都在使用它。
unix是否提供任何此类实用程序/命令?

您可以检查
/proc//maps
的内容,以查看哪些文件映射到每个进程中。您必须检查每个流程,但这比听起来容易:

$ grep -l /lib/libnss_files-2.11.1.so /proc/*/maps
/proc/15620/maps
/proc/22439/maps
/proc/22682/maps
/proc/32057/maps

这仅适用于Linux
/proc
文件系统,AFAIK.

一个快速解决方案是使用该命令

这不仅适用于
.so
文件,还适用于任何其他文件、目录、装入点等


注意:
lsof
显示使用文件的所有进程,因此如果进程打开了
*。so
文件但未实际使用它,则极有可能出现误报。如果这对您来说是个问题,那么这将是一条出路。

在所有感兴趣的目录中执行

ldd * >ldd_output
vi ldd_output

然后查找库名称,例如“aLib.so”。这显示了链接到的所有模块,例如“aLib.so”

这是一个很好的提示。谢谢,肖恩。
ldd * >ldd_output
vi ldd_output