在 RHEL 5.6 上,我有一个陷入无限循环的 init.d 脚本。如何在不加载的情况下启动?

dac*_*cot 1 linux boot init.d

我在我的一个 init.d 脚本中犯了一个愚蠢的错误,它在启动过程中陷入无限循环并阻止完成。因此,我无法进入外壳并修复它。如何引导而不执行所有引导脚本?如果需要,我有root。

Ign*_*ams 6

1在引导加载程序中传递内核行应该以单用户模式启动它,除非它严重损坏,否则不应启动 initscript。如果启动到单一模式不起作用,那么您需要获取安装光盘并使用它启动到救援模式。


lar*_*sks 6

正如 Ignacio 所建议的,最简单的解决方案是启动到单用户模式。为此,请在启动进入内核之前按倒计时闪屏上的任意键。从这里突出显示正确的内核并按 e。再次按 e 编辑 cmdline,最后按 S、s、single 或 1。按回车,然后按 b 启动。这不会运行您的 init 脚本,除非您已将其显式配置为单用户模式的一部分,这不太可能。

但是,如果此时仍有问题,不需要安装盘。您可以将以下内容添加到内核命令行:

init=/bin/bash
Run Code Online (Sandbox Code Playgroud)

这将导致内核以/bin/bashpid 1 而不是 init 启动。在这一点上没有任何系统初始化脚本都已经运行,所以你应该能够处理后事。请注意,您可能有一个只读的根文件系统,您应该能够像这样处理它:

mount -o remount,rw /
Run Code Online (Sandbox Code Playgroud)

...或者您可以ro从内核命令行中删除该选项。