问题描述
在10.10版本中,使用upstart代替sysvinit。
通过删除/etc/init/blah.conf中的相应文件,可以删除不需要的烦人的新贵服务。
但是,这似乎是一种繁重的做法。您如何正确配置新贵,以便能够通过命令行有选择地打开和关闭这些服务?
作为一个实际示例,此处列出的使用rcconf关闭gdm的答案不再起作用:How do I prevent GDM from running at boot on Ubuntu?
最佳答案
如果在/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 ....
您可以使用以下方法启用/禁用特定run-levels的服务(或仅打开和关闭它们):
# chkconfig -s <service> <state/runlevels>
例如:
# chkconfig -s gdm off
完全关闭它
# chkconfig -s gdm on
用defaultsm打开它或
# chkconfig -s gdm 34
仅在运行级别3和4上将其打开。
您通常会在基于RHEL的系统(CentOS,Fedora等)上找到此命令。
更新
这特定于Ubuntu和gdm /kdm /等。
gdm启动时,它会调用新贵的配置文件/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
,则退出”
次佳答案
我一直发现sysv-rc-conf工具非常有帮助,它具有非常好的&易于使用的界面。
像这样安装:
sudo apt-get update
sudo apt-get install sysv-rc-conf
像这样使用它:
sudo sysv-rc-conf
第三种答案
只需看一下man 5 init
,您就会找到一个更合适的解决方案。简短示例:假设我们有一个名为”foobar”的服务,那么将有一个名为/etc/init/foobar.conf
的文件,其配置为upstart。现在,您不想删除该文件,也不想对其进行修改,但是您既不想运行该服务,又不想?因此,在其旁边放置一个覆盖文件:/etc/init/foobar.override
,其中包含(可选的带有说明的标头和)标头,而不是start on
/stop on
行,而是放置一个带有单词的行:manual
。这样,您可以告诉upstart基本上使用foobar.conf
,但是要覆盖启动定义,以仅在手动执行(在本示例中为service foobar start
)时启动该服务。