
我在使用 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
如果您使用的是 VM,則檔案系統掛載很可能會出現一些中斷,並且 Linux 會將掛載切換為唯讀,作為故障安全措施。
不幸的是,它使您的系統幾乎無法使用。
如果您檢查 /proc/mounts 並尋找根檔案系統,應該有這樣一行:
/dev/dm-0 / ext4 ro,relatime,errors=remount-ro,data=ordered 0 0
您將看到根檔案系統已以唯讀方式掛載。
基本上,此時(假設這是問題所在)唯一要做的就是重新啟動(透過 KVM 或其他控制台電源關閉開關)。