How do you disable an upstart service in ubuntu 10.10?
Solution 1:
If you look in /etc/init.d you will notice that any services that are configured through upstart are just symbolic links to /lib/init/upstart so removing them from /etc/init.d just removes the link - not the script.
If you want an interface to this you can install the chkconfig
package (apt-get install chkconfig
) which gives a useful command line tool:
# 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 ....
You can enable / disable services for specific run-levels (or just turn them on and off) with:
# chkconfig -s <service> <state/runlevels>
for example:
# chkconfig -s gdm off
to turn it off completely,
# chkconfig -s gdm on
to turn it on with the defaultsm or
# chkconfig -s gdm 34
to only turn it on for run levels 3 and 4.
You'll usually find this command on RHEL based systems (CentOS, Fedora, etc).
UPDATE
This is specific to Ubuntu and gdm / kdm / whatever.
When gdm starts up it calls an upstart config file /etc/init/gdm.conf
This file then references /etc/X11/default-display-manager to see if it is the default display manager for the system - if it is then it starts.
The /etc/X11/default-display-manager just contains:
/usr/sbin/gdm
You can replace this with another display manager, or remove the file entirely and it won't start gdm.
A line from the /etc/init/gdm.conf file:
[ ! -f /etc/X11/default-display-manager -o "$(cat /etc/X11/default-display-manager 2>/dev/null)" = "/usr/sbin/gdm" ] || { stop; exit 0; }
It's saying "If the file /etc/X11/default-display-manager doesn't exist, or if it doesn't contain /usr/sbin/gdm
then exit"
Solution 2:
I've always found the sysv-rc-conf tool very helpful, it has a very nice & easy to use interface.
install it like this:
sudo apt-get update
sudo apt-get install sysv-rc-conf
use it like this:
sudo sysv-rc-conf
Solution 3:
Simply take a look at man 5 init
and you will find a more appropriate solution. Short example: Say we have a service called "foobar", so there would be a file called /etc/init/foobar.conf
with its upstart configuration. Now you don't want to remove that file, nor to modify it -- but neither you want this service to run? So place an override file next to it: /etc/init/foobar.override
, containing (optionally the header with the description and) instead the start on
/ stop on
lines you place a line with one word: manual
. This way you tell upstart to basically use the foobar.conf
, but override the startup definition to only start that service when manually enforced (via service foobar start
in our example).