我意外删除了 /etc/rc.d 和 /etc/rc0.d 文件夹,导致 init.d 和其他相关文件夹也被删除。
1./etc/rc.d、rc、rc.d、rc0.d、rc1.d、rc2.d.......rc6.d以及/etc/rc.d里面的其他文件有什么用?
2.如果我们不小心删除了它们该如何恢复?
3.如果我们在其他服务器中有相同的文件,我们可以复制并让情况恢复正常吗?
4. 建议任何可能的方法来尽量减少影响或完全解决这种情况。
请帮忙!!!
操作系统详情请见此处
Linux 版本 2.6.32-642.11.1.el6.x86_64 ([电子邮件保护]) (gcc 版本 4.4.7 20120313 (Red Hat 4.4.7-17) (GCC) ) SMP 2016 年 10 月 26 日星期三 10:25:23 EDT
答案1
/etc/rcX.d
(其中 X 是运行级别)包含指向将在启动/etc/init.d
时执行的init 脚本的符号(又称软)链接/sbin/init
。此处对 Red Hat Enterprise Linux 6 进行了详细说明:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/installation_guide/s2-boot-init-shutdown-init最好的办法是从最近的备份中恢复它们(正如 Gerard H. Pille 在上面的评论中提到的那样)。如果您没有这样的备份,您可以尝试使用
/sbin/chkconfig
或/usr/sbin/ntsysv
提供 ncurses 用户界面来恢复它们。我没有这方面的经验,但您可以在这里找到手册:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-services-ntsysv如果另一台服务器已经以完全相同的方式设置(例如使用 ansible 或某些设置脚本),这可能是一个可行的解决方案。无论如何,另一台服务器的结构在使用时可能会有所帮助
/usr/sbin/ntsysv
在恢复
/etc/rc.d
文件夹和符号链接之前,尽量不要重新启动服务器。祝你好运!
根据下面 Gerard 的评论,您也可以尝试安装 yum-verify 插件:
yum install yum-plugin-verify
并确保你有
plugins=1
/etc/yum.conf
然后执行
yum verify-all
它会检查所有已安装的软件包并报告缺失的配置文件。重新安装配置错误的软件包应该可以解决问题,但我自己从来没做过这件事。
更新 您应该为在相同的其他服务器上运行的每个服务重新创建符号链接
chkconfig service_name on
其中 service_name 是您希望在启动时启动的 init.d 脚本的名称。使用此命令应确保在适当的运行级别文件夹中创建链接。
您可以使用以下方式检查进度
chkconfig --list
并将输出与另一台服务器上的输出进行比较。
您可以在这里找到 chkconfig 手册:https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/deployment_guide/s2-services-chkconfig