-bash:dev/null:没有这样的文件或目录-在启动时

-bash:dev/null:没有这样的文件或目录-在启动时

运行操作系统时出现此错误。文件存在,但为空。我尝试了此命令,但没有任何变化。sudo mknod -m 666 /dev/null c 1 3

答案1

如果它说dev/null(不是/dev/null,请注意前导斜杠),那么它不是指/dev/null。它是指./dev/null。这与 不同/dev/null,除非工作目录恰好是/

某些行可能缺少 的前导斜杠/dev/null。您需要找到并修复它。您需要的正则表达式可能是[^/]dev/null

您的 grep 可能支持-r。我将首先检查以下内容/etc/

sudo grep -r '[^/]dev/null' /etc/

如果“当您运行操作系统时”的意思是“当您的用户登录时”,那么主目录:

grep -r '[^/]dev/null' "$HOME"

(考虑--binary-files=without-match您是否grep支持它)。

同样,您可以检查其他目录(例如/usr/lib/systemd/system/,尽管我宁愿希望它是合理的)。

作为最后的手段,您可能想要检查整个/。在这种情况下,不下降到其他文件系统的选项可能会很方便。 没有这样的选项,grep但您可以find使用-xdev

sudo find / -xdev -type f -exec grep -l '[^/]dev/null' {} +

这最后一个命令不使用非 POSIX 扩展,它非常通用。

如果任何命令发现了某些内容,您应该仔细调查那里是否真的缺少了什么。可能会出现误报。例如,像或这样/的字符串(无论它可能指什么)可能是正确的,而可能是错误的。并且udev/nulludev/nullifier=dev/null/var/log/auth.log 将要最有可能包含文字[^/]dev/null字符串,但它只是一个日志。

如果您决定更改任何您不完全理解的文件,请复制一份 ( cp -a) 并/或在纸上记下其路径和您要更改的内容。一次更改一个文件并重新启动。如果问题没有消失,请将文件改回原来的状态。如果您破坏了某些非常严重的问题,这些预防措施可能会挽救您的一天。不过,这是最坏的情况。您可能会将搜索范围缩小到一个可疑文件,这就是它。

相关内容