Ubuntu,控制init启动

Ubuntu,控制init启动

Ubuntu 使用 upstart 而不是 sysvinit。但是仍然有运行级别及其中的链接。

我已经安装了 tor,它已将自身添加到操作系统的启动中。现在我想删除它,常用的选项是从运行级别删除启动和停止服务的链接,或者使 /etc/init.d/ 脚本不可执行。这很好,但如果我想将 tor 再次放入启动列表中,这将有问题。我怎么知道将正确的序列放在正确的运行级别目录中。

有没有完整的指南?这有什么规则?有什么工具可以管理 init?

请告知

答案1

SysVinit 的工作原理如下。每个包的初始化脚本位于/etc/init.d。这些脚本的链接位于/etc/rcS.d/etc/rc[0-6].d. 这些链接以年代(开始)或(杀死)和一个两位数。

  • 当系统启动并且 SysVinit 进程启动时,它会查找/etc/rcS.d并执行以年代,按数字排序。(我相信它将“start”参数传递给了脚本,但我不确定。)

  • 处理完所有 /etc/rcS.d 脚本后,系统开始进入某个运行级别。在 Ubuntu 中,启动到普通桌面时,默认运行级别是2. 因此 SysVinit 会查看/etc/rc2.d

    1. 停止所有以以下链接开头的服务,按数量排序;以及
    2. 启动所有带有以 开头的链接的服务年代,按数量排序。

    如果你已启动到 Ubuntu 的恢复模式,则你将启动到运行级别1所有服务启动完成后,系统运行级别就正式设置好了。

  • 最后,系统运行/etc/rc.local脚本。

如果你稍后切换运行级别,SysVinit 会运行相同的基本过程:它不会检查/etc/rcS.d,而是直接处理链接/etc/rcN.d(其中 N 是正在输入的运行级别)。


你也可以编写一个 Upstart 脚本。我已经之前写过关于 Upstart 的文章,请查看那里了解更多详细信息。Upstart 脚本保存在/etc/init;编写它们,查看现有脚本以了解其工作原理,并阅读init(5) 手册页

答案2

我只知道update-rc.d作为一种工具。手册页很好地解释了如何使用它,而且学起来也不太难。


感谢 Quack 告诉我有关chkconfig。查看他的帖子这里

答案3

这里是update-rc.d 手册页。基本上,删除 rc.d 链接不会起作用,因为它们将在升级时恢复。正确的方法是:

sudo update-rc.d tor disable

这会将 /etc/rc?.d 中的 S(启动)链接重命名为 K(停止)链接。这也可以工作:

sudo rename 's:/S:/K:g' /etc/rc?.d/S*tor

相关内容