我对改变有奇怪的副作用LD_LIBRARY_PATH
。
当我附加包含库的路径时,例如:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/my_path/lib
然后,一切都变得难以置信的缓慢。例如,一个简单的ls
可以长达 10 秒。
ldd
更改前后的输出完全相同LD_LIBRARY_PATH
,我尝试使用以下命令调试慢速执行ls
:strace
我在两种情况下都得到完全相同的执行。执行期间甚至不会卡住ls
(因为strace
在 10 秒延迟期间没有输出任何内容,然后突然完美执行ls
)。所以我认为它可能来自我的 shell,但这是相同的,strace
在我的 bash 上运行并ls
在两种情况下执行都会给我相同的strace
输出:shell 执行ls
并等待其执行结束(strace
滞后前的最后一个输出strace
是waitpid(...)
)。所以我猜在发布之间发生了一些错误ls
及其执行,就像它是内核级问题一样。它的作用就像sleep
是在ls
(0 cpu 使用)上进行的。
在延迟期间,我的 CPU 和网络活动完全正常...
ls
请注意,新 LD 路径中的库不与任何“标准库”冲突,因此在我的示例中不会干扰。
LD_LIBRARY_PATH
因此,我对有关副作用或如何深入调试我的示例的更深入解释很感兴趣。