运行操作系统时出现此错误。文件存在,但为空。我尝试了此命令,但没有任何变化。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/null
udev/nullifier
=dev/null
/var/log/auth.log
将要最有可能包含文字[^/]dev/null
字符串,但它只是一个日志。
如果您决定更改任何您不完全理解的文件,请复制一份 ( cp -a
) 并/或在纸上记下其路径和您要更改的内容。一次更改一个文件并重新启动。如果问题没有消失,请将文件改回原来的状态。如果您破坏了某些非常严重的问题,这些预防措施可能会挽救您的一天。不过,这是最坏的情况。您可能会将搜索范围缩小到一个可疑文件,这就是它。