Jul*_*rra 7 unix linux bash ld
我对改变有着奇怪的副作用LD_LIBRARY_PATH.
当我追加包含库的路径时,例如:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/my_path/lib
Run Code Online (Sandbox Code Playgroud)
然后,一切都变得令人难以置信地缓慢.例如,一个简单的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和网络活动完全正常......
请注意,新LD路径中的库不会与任何"标准库"冲突,因此ls在我的示例中它不会打扰.
因此,我对有关LD_LIBRARY_PATH副作用或如何深入调试我的示例的更深入解释感兴趣.
我不确定LD_LIBRARY_PATH您尝试添加的库或库上还有什么,或者您正在运行什么程序,但您最好编写一个包装器脚本来更改 LD_LIBRARY_PATH ,仅针对需要额外库的程序,以便您的系统等功能ls不受影响。
#!/bin/bash
export LD_LIBRARY_PATH=/my_path/lib
program_name
Run Code Online (Sandbox Code Playgroud)
创建文件并chmod +x wrapper_name