我在使用 Ubuntu 时遇到了一个问题,我发现很难排除故障,原因如下:
# reboot
-bash: /sbin/reboot: Input/output error
# dmesg
-bash: /bin/dmesg: Input/output error
# ps -e
ps: error while loading shared libraries: /lib/libproc-3.2.8.so: cannot read file data: Input/output error
# lsof
-bash: /usr/bin/lsof: Input/output error
# fsck
-bash: /sbin/fsck: Input/output error
# badblocks
-bash: /sbin/badblocks: Input/output error
所以我无法看到发生了什么,也无法远程重启。我该怎么做才能查明原因?
有趣的是:
# init 0
Segmentation fault
我可以 cat /var/syslog 但不能 cat /var/log/messages 或其他几个重要文件。less 和 more 不起作用,tail 或 head 也不起作用,等等。
答案1
系统在读取硬盘时遇到严重问题。很可能是硬盘坏了(几乎可以肯定),但也可能只是电缆松动或断开(不要指望它)。您无法从这里排除任何故障。只需关闭电源即可。
检查硬盘上的连接是否松动。如果一切正常,则从救援磁盘启动并从那里运行 fsck 或 badblocks。
我希望你有备份。
答案2
如果您正在使用虚拟机,则很可能是文件系统挂载出现了一些中断,而 Linux 会将挂载切换为只读,作为一种故障安全措施。
不幸的是,它会让你的系统实际上无法使用。
如果您检查 /proc/mounts 并查找根文件系统,应该有一行如下内容:
/dev/dm-0 / ext4 ro,relatime,errors=remount-ro,data=ordered 0 0
您将看到根文件系统已以只读方式挂载。
基本上,此时唯一要做的(假设这是问题所在)就是重新启动(通过 KVM 或其他控制台电源关闭开关)。