Linux“ls”没有列出文件

Linux“ls”没有列出文件

我有一个装有 wdlinux (White Dwarf 2.0) 的嵌入式设备。我可以使用 ssh 或 ftp 访问这个 linux。

昨天我手动执行了“updatedb 1>/dev/null 2>/dev/null”。 (它将每天早上作为 cronjob 执行)。 今天,linux 系统行为异常:(1)命令“ls”不再列出任何文件。 (如果我使用 ftp 登录,我可以看到所有文件)(2)命令“netstat”也没有显示任何内容。

我刚刚再次执行了不带任何参数的“updatedb”。之后“ls”工作了一次,然后就不再工作了。

我现在完全糊涂了。任何提示都非常感谢。

答案1

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

which ls

或者

type ls

哪个 ls 应该会告诉您它在 '/bin/ls' 中,如果存在,则告诉您 ls 命令的别名。dir如果该 Linux 上存在该命令,请尝试该命令。只是为了看看是否有人搞砸了 ls 来创建某种后门或 ls 可执行文件已损坏。dir可能仍然运行良好。如果dir不存在或给出奇怪的输出,我建议fsck在文件系统上运行。

答案2

它们是隐藏文件吗?如果是,请尝试:

ls -la

答案3

您没有提到您正在使用什么文件系统。

如果当前目录消失,“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 的方式是否会产生一些奇怪的副作用?如果这种情况可重现,也许您想在不丢弃输出(尤其是 stderr)的情况下运行 updatedb,看看是否能看到一些有趣的东西?

答案4

运行find并查看是否显示任何内容。如果显示,则说明您的 有问题ls

相关内容