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).