如何在 ubuntu 10.10 中禁用 upstart 服务?

如何在 ubuntu 10.10 中禁用 upstart 服务?

在 10.10 中,upstart 被用来代替 sysvinit。

可以通过删除 /etc/init/blah.conf 中的相应文件来删除您不想要的烦人的 upstart 服务

但是,这似乎是一种过于严厉的方法。如何正确配置 upstart,以便能够通过命令行有选择地打开或关闭这些服务?

作为一个实际的例子,这里列出的使用 rcconf 关闭 gdm 的答案不再起作用: 如何防止 GDM 在 Ubuntu 启动时运行?

答案1

如果您查看 /etc/init.d,您会注意到通过 upstart 配置的任何服务都只是指向 /lib/init/upstart 的符号链接,因此从 /etc/init.d 中删除它们只会删除链接 - 而不是脚本。

如果您想要一个界面,您可以安装chkconfig包(apt-get install chkconfig),它提供了一个有用的命令行工具:

# chkconfig --list
acpi-support              0:off  1:off  2:on   3:on   4:on   5:on   6:off
acpid                     0:off  1:off  2:off  3:off  4:off  5:off  6:off
alsa-mixer-save           0:off  1:off  2:off  3:off  4:off  5:off  6:off
anacron                   0:off  1:off  2:off  3:off  4:off  5:off  6:off
apache2                   0:off  1:off  2:on   3:on   4:on   5:on   6:off
apparmor                  0:off  1:off  2:off  3:off  4:off  5:off  6:off  S:on 
apport                    0:off  1:off  2:off  3:off  4:off  5:off  6:off
atd                       0:off  1:off  2:off  3:off  4:off  5:off  6:off
.... and so on ....

您可以使用以下命令启用/禁用特定运行级别的服务(或只是打开或关闭它们):

# chkconfig -s <service> <state/runlevels>

例如:

# chkconfig -s gdm off

彻底关闭它,

# chkconfig -s gdm on

使用默认设置打开它或

# chkconfig -s gdm 34

仅在运行级别 3 和 4 下启用它。

您通常会在基于 RHEL 的系统(CentOS、Fedora 等)上找到此命令。

更新

这特定于 Ubuntu 和 gdm / kdm / 等等。

当 gdm 启动时,它会调用 upstart 配置文件 /etc/init/gdm.conf

然后,该文件引用 /etc/X11/default-display-manager 来查看它是否是系统的默认显示管理器 - 如果是,则它启动。

/etc/X11/default-display-manager 仅包含:

/usr/sbin/gdm

您可以用另一个显示管理器替换它,或者完全删除该文件,它将不会启动 gdm。

/etc/init/gdm.conf 文件中的一行:

[ ! -f /etc/X11/default-display-manager -o "$(cat /etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/gdm" ] || { stop; exit 0; }

它说“如果文件 /etc/X11/default-display-manager 不存在,或者不包含则/usr/sbin/gdm退出”

答案2

我总是发现系统配置信息该工具非常有用,它有一个非常漂亮且易于使用的界面。

像这样安装:

sudo apt-get update
sudo apt-get install sysv-rc-conf

像这样使用:

sudo sysv-rc-conf

答案3

简单看一下man 5 init,你就会找到更合适的解决方案。简短的例子:假设我们有一个名为“foobar”的服务,因此会有一个名为的文件,/etc/init/foobar.conf其中包含其 upstart 配置。现在你不想删除该文件,也不想修改它——但你也不想运行这个服务?所以放置一个覆盖文件:/etc/init/foobar.override,包含(可选的带有说明的标题和)而不是start on/stop on行,您放置一行只有一个单词:manual。这样,您就告诉 upstart 基本上使用foobar.conf,但覆盖启动定义以便仅在手动强制执行时启动该服务(在我们的示例中是通过service foobar start)。

答案4

Upstart 是一个事件驱动init 管理器和运行级别并不是决定服务何时启动的主要机制。相反,服务会在所有依赖项都得到满足时启动,这允许在启动过程中实现更大的并行性,从而加快启动过程。

使用 Ubuntu 11.04,我可以通过编辑 /etc/init/gdm.conf 文件并删除所有“start on”条目来禁用 GDM。这是我的预编辑:

start on (filesystem
          and started dbus
          and (drm-device-added card0 PRIMARY_DEVICE_FOR_DISPLAY=1
               or stopped udev-fallback-graphics))
stop on runlevel [016]

以下是我的编辑后内容:

start on
stop on runlevel [016]

相关内容