我已经删除了 /etc/rc.d/ 目录,如何恢复它们?

我已经删除了 /etc/rc.d/ 目录,如何恢复它们?

我意外删除了 /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

  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

  2. 最好的办法是从最近的备份中恢复它们(正如 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

  3. 如果另一台服务器已经以完全相同的方式设置(例如使用 ansible 或某些设置脚本),这可能是一个可行的解决方案。无论如何,另一台服务器的结构在使用时可能会有所帮助/usr/sbin/ntsysv

  4. 在恢复/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

相关内容