我有一个突袭驱动器安装在这里:
/data/
和这样的一些目录:
/data/somedir/somesubdir/
当我跑步
ls
W /或没有任何标志,terminal不返回任何东西。 它不会返回一个空目录列表。 它只是走到下一行,坐在那里空白,没有提示。 我不能CTRL-C出来。 我必须closures这个terminal实例并重新开始。
起初我以为这是与ls命令有关,但它指向/ bin / ls,我可以ls其他目录就好了。
另外,运行这个
find /data/somedir/somesubdir
立即find所有的文件就像预期的一样。
更新:
dmesg似乎没有吐出我看到的任何错误。 我的RAID是在/ dev / sda5,所以如果我这样做
dmesg | grep sda
我明白了
sd 0:0:0:0: [sda] 1953083392 512-byte hardware sectors (999979 MB) sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00 sd 0:0:0:0: [sda] Write cache: enabled, read cache: disabled, doesn't support DPO or FUA sd 0:0:0:0: [sda] 1953083392 512-byte hardware sectors (999979 MB) sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Mode Sense: 23 00 00 00 sd 0:0:0:0: [sda] Write cache: enabled, read cache: disabled, doesn't support DPO or FUA sda: sda1 sda2 sda3 sda4 <<7>libata version 2.21 loaded. sda5 > sd 0:0:0:0: [sda] Attached SCSI disk EXT3 FS on sda3, internal journal EXT3 FS on sda5, internal journal EXT3 FS on sda2, internal journal EXT3 FS on sda1, internal journal
没有什么不寻常的。
另外,我的3ware RAID控制器显示所有磁盘状态为OK,并不显示任何与他们有任何问题的报告。
似乎没有任何服务器的妥协。
也:
ps auxww | grep somesubdir
仅返回该目录的grep进程。
更新#2:
我确实尝试了离开命令一个多小时,没有结果。 我不知道下一步该怎么做,于是我继续重新启动服务器。 问题不再存在,但需要10秒左右的时间才能获得该子目录中的目录列表。 我不知道以前是什么问题。
除了上面的build议,我还看到了这个问题,当你列出的目录中有大量的文件,这会导致文件系统用完inode。 如果这是可能的话,试着离开ls命令,看看它是否在一段时间后完成。
您的磁盘可能有问题。 你可以试试这个:
Terminal 1$ ls /data/somedir/somesubdir/ (hang) Terminal 2$ ps auxww | grep somesubdir
如果你的ls的状态是D ,那就意味着它正在等待磁盘做一些事情。 在dmesg查看状态消息,并查看SMART是否已经使用它来查看这些磁盘有多健康。
为什么find工作好吗? 因为它不会在每个文件上执行stat() 。 这表明目录是可以的,但一个或多个文件位于磁盘损坏的部分(或类似的东西)。
如果目录是空的,没有任何标志的ls不会返回任何内容。 您至less需要ls -a,如果您想在目录为空的情况下查看任何内容。
如果目录不为空,则可能是文件系统损坏 – 运行fsck检查。 如果文件系统没问题,目录也不是空的,接下来就是问ls – 也许你的ls副本已经被一个非常原始的rootkit所取代了?
试着弄清楚它在哪里挂着跑步
strace ls $DIR
也许有一个名称的文件,其中包含阻止您的terminal的字节序列。 您有时可以取消阻止发送Ctrl-Q键盘快捷方式的被阻止的terminal( Ctrl-S阻止它)。
试着做/bin/ls -N | less -S /bin/ls -N | less -S ,看是否有任何可疑或控制字符的文件名。 less于将这个字符显示为尖括号中的hex代码,例如<BF> 。
存在代码小于32(从<01>到<1F> )字符的文件可能是系统损害的标志。 或者是在某个程序中创build文件的内存pipe理错误。