Ubuntu系统重启后/etc/hosts文件为空,如何恢复?
问题原因分析
- 编辑操作异常中断:比如用nano编辑时没正常保存就强制退出,或者系统重启时文件写入还没完成,直接导致文件被清空。
- 文件权限/属性异常:如果错误修改了
/etc/hosts的权限,或者给它加了immutable(不可修改)属性,后续的写入操作可能失败,最终表现为文件为空。 - 第三方工具自动重置:某些安全软件、网络管理工具或者自定义脚本,会在系统重启后自动重置
/etc/hosts到默认状态。 - 文件系统损坏:
/etc所在的分区如果出现文件系统错误,可能导致文件内容丢失或无法正常读取。
无需新建文件的恢复方法
- 检查自动备份文件:
- nano编辑器默认会生成备份文件,后缀是
~,直接运行cat /etc/hosts~查看是否有之前的内容,有的话用sudo cp /etc/hosts~ /etc/hosts恢复。 - 查看系统备份目录
/var/backups/,用ls /var/backups/hosts*找相关备份,找到后用sudo cp [备份文件名] /etc/hosts恢复。
- nano编辑器默认会生成备份文件,后缀是
- 利用文件系统日志恢复(针对ext系列文件系统):
- 如果是根分区,需要进入单用户模式或用live CD启动,卸载目标分区后,运行
sudo debugfs -R 'logdump' /dev/[你的分区设备],查找和hosts相关的日志记录,提取内容后写入原文件。
- 如果是根分区,需要进入单用户模式或用live CD启动,卸载目标分区后,运行
- 查找临时文件副本:
- 在
/tmp/目录下搜索包含你设置的域名的文件,运行grep -r "subdomain.mydomain.com" /tmp/,如果找到相关临时文件,直接把内容复制到/etc/hosts。
- 在
- 从命令历史找回内容:
- 查看root用户的命令历史,运行
sudo cat ~root/.bash_history,找到之前编辑/etc/hosts的相关操作,回忆或提取之前写入的内容,手动补回原文件。
- 查看root用户的命令历史,运行
内容的提问来源于stack exchange,提问作者S Mev
相关产品推荐
相关产品推荐

