在 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]