Linux“ls”没有列出任何文件

我有一个embedded式设备wdlinux(白矮2.0)。 我可以使用ssh或ftp访问这个linux。

昨天我手动执行了“updatedb 1> / dev / null 2> / dev / null”。 (这将作为每天早晨cronjob执行)。 今天的linux系统performance奇怪:(1)命令“ls”不再列出任何文件。 (如果我使用ftplogin,我可以看到所有的文件)(2)“netstat”命令也没有显示。

我刚刚执行了“updatedb”没有任何争论再次。 之后,“ls”工作了一次,然后再次不工作。

我现在完全困惑。 任何提示都表示赞赏。

updatedb与ls无关。 它用于定位。 使用命令检查ls位于哪里

which ls 

要么

 type ls 

哪个ls应该告诉你它在'/ bin / ls'和ls命令的别名(如果它存在的话)。 如果在该Linux上存在,请尝试dir命令。 只是为了看看是否有人破坏ls来创build某种后门或ls可执行文件已损坏。 dir可能仍然是完美的工作。 如果dir不存在或给出奇怪的输出,我会build议在文件系统上运行fsck

他们隐藏文件? 如果这样尝试:

 ls -la 

您的机器遭到黑客攻击的可能性有多大? 这有点公然,但是我看到一些攻击使得像netstat这样的东西能够隐藏自己。

你有没有磁盘空间? (df -h)

你没有提到你正在使用的文件系统。

如果当前目录消失,“ls”将不显示任何内容。 例如:

 $ mkdir tmp $ cd tmp $ cp /etc/passwd /etc/group . $ ls passwd group $ rm -rf $(pwd) $ ls (empty) $ mkdir $(pwd); cp /etc/passwd /etc/group $(pwd) $ ls (empty) $ ls $(pwd) passwd group $ ls -lid . $(pwd) (show different inodes) $ cd $(pwd) $ ls passwd group 

为了使netstat成功,我相信你需要安装/ proc。

你运行updatedb的方式有一些奇怪的副作用吗? 如果这是可重复的,也许你想运行updatedb而不丢弃输出,特别是stderr,看看你是否看到有趣的东西?

运行find ,看看是否显示任何内容。 如果确实如此,那么你的ls就有问题了。

比较下面的命令的结果如果ls工作,如果没有:

 which ls 

如果输出改变了,那么你的系统是非常错误的。 如果输出是相同的,那么文件许可权是错误的。

现在暂停这个答案…我想弄清楚这意味着什么。
Arjan做出正确的评论,如果pathparsing失败,你应该find'command not found'错误。


旧。
很多时候,embedded式linux并没有提供适当的环境设置,并且可以在没有任何PATH引用的情况下运行。 首先要做的事情是,

 echo $PATH 

如果这没有显示任何东西(这是我怀疑的),你需要正确的设置path之前的任何命令shell( echo是shell的一部分)将工作。