LD_LIBRARY_PATH 对 Linux 中简单命令的影响

LD_LIBRARY_PATH 对 Linux 中简单命令的影响

我正在使用 Red Hat Enterprise Linux Server 版本 5.7(Tikanga)。

当我更改 LD_LIBRARY_PATH 时,系统执行每个命令都会变得非常慢(除了 shell 内置命令,例如cd

例如,ls在空目录中大约需要 1 秒。当我将 LD_LIBRARY_PATH 改回默认值时,一切看起来都正常。

我添加的 LD_LIBRARY_PATH 不是特别长(10-11 个目录。)

我尝试设置 LD_DEBUG=all,但没有发现任何可疑的东西。

我检查了添加到 PATH 中的所有 FS 均性能正常。

请告诉我还应该检查什么以及速度变慢的可能原因是什么。

答案1

LD_LIBRARY_PATH 可用于覆盖某些内容。因此,当任何可执行文件(例如 ls)需要 libc 等常见内容时,它必须先扫描环境变量中的所有文件夹,然后才能查找“正常”位置。使用 ldconfig,我相信系统能够缓存库列表以便快速查找。使用环境变量,它必须每次都重新扫描(变量可能会更改)。

看来要扫描的文件总数可能相当大。尝试对所有目录进行 ls 计时。

答案2

我发现问题在于,LD_LIBRARY_PATH 中的一个 NFS 有时表现不佳。因此,搜索单个目录需要花费 0.01 秒,每个库和路径加起来需要花费 0.01 秒。

相关内容