![`ls` 导致特定目录出现段错误](https://linux22.com/image/640732/%60ls%60%20%E5%AF%BC%E8%87%B4%E7%89%B9%E5%AE%9A%E7%9B%AE%E5%BD%95%E5%87%BA%E7%8E%B0%E6%AE%B5%E9%94%99%E8%AF%AF.png)
我使用$HOME/.local
前缀来安装一些没有 root 权限的应用程序。其中有一个目录$HOME/.local
我无法执行ls
命令:
[tuananh@server lib]$ ls
Segmentation fault
[tuananh@server lib]$ cd ..
[tuananh@server .local]$ ls lib
audit libform.a
libncurses.a libopenblas.so.0
...
[tuananh@server .local]$
uname -a
对于我的服务器来说,可能是什么原因造成的?
Linux server 2.6.32-358.2.1.el6.x86_64 #1 SMP Tue Mar 12 14:18:09 CDT 2013 x86_64 x86_64 x86_64 GNU/Linux
编辑:的输出LD_TRACE_LOADED_OBJECTS=1 ls
。我发现从此目录加载了一些库。那么现在我应该怎么做才能找到导致问题的那个?
linux-vdso.so.1 => (0x00007fff831b8000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003d94800000)
librt.so.1 (0x00007fdcde5a3000)
libcap.so.2 => /lib64/libcap.so.2 (0x0000003d95c00000)
libacl.so.1 => /lib64/libacl.so.1 (0x0000003d97c00000)
libc.so.6 (0x00007fdcde1f5000)
libdl.so.2 (0x00007fdcddff1000)
/lib64/ld-linux-x86-64.so.2 (0x0000003d92c00000)
libpthread.so.0 (0x00007fdcdddd3000)
libattr.so.1 => /lib64/libattr.so.1 (0x0000003d96800000)
答案1
最有可能的是,您安装了一些库,当您在其中执行命令时,这些库会被加载,而不是系统库,并且它与您系统中的命令二进制不兼容。它可能与 glibc 有关。
您可以通过运行LD_TRACE_LOADED_OBJECTS=1 ls
并检查输出来确认这一点,看看它是否包含当前目录中的任何文件。