How do you disable an upstart service in ubuntu 10.10?

27

14

In 10.10 upstart is being used instead of sysvinit.

It's possible to remove annoying upstart services which you do not want by removing the appropriate file in /etc/init/blah.conf

However, this seems a heavy handed approach. How do you correctly configure upstart to be able to selectively turn these services on and off via the command line?

As a practical example, the answers listed here to turn gdm off using rcconf no longer work: How do I prevent GDM from running at boot on Ubuntu?

Doug

Posted 2011-04-03T13:06:31.603

Reputation: 448

Nb. Apparently some versions of ubuntu have a 'services' item in the menu of the graphical desktop that allows this to be configured. That is not present on mine. I'm specifically looking for a command line solution. – Doug – 2011-04-03T13:08:45.423

The most updated answer is on askubuntu. Read the comments too!

– Marcello Nuccio – 2011-08-20T17:07:37.043

2

This is now documented in the paragraph Disabling a Job from Automatically Starting.

– Marcello Nuccio – 2011-08-20T17:14:25.417

@Marcello Hm... was there a point to saying that? The 'most updated answer' is still the same answer. remove the file or delete the first few lines of it manually. – Doug – 2011-08-22T03:56:04.697

the newest solution is echo manual >> /etc/init/<service>.override, and this is mentioned only in the comments (and in the official documentation). I did not found it easily, that's why I mentioned it here. – Marcello Nuccio – 2011-08-24T06:05:20.393

Answers

19

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"

Majenko

Posted 2011-04-03T13:06:31.603

Reputation: 29 007

That didn't work. Just like rcconf, chkconfig does not list gdm as a service to be started at any run level. Yet, restarting, it loads. chkconfig -s gdm off did not prevent it from starting. – Doug – 2011-04-05T04:26:27.470

2

There is a link here also suggesting that chkconfig is not the appropriate tool to use: http://ubuntuforums.org/showthread.php?t=1559266

– Doug – 2011-04-05T04:35:17.180

I have never liked Ubuntu's startup - and Linux's in general. It has always seems so messy and kludgy. Give me FreeBSD's rcng any day. Anyway - specific to Ubuntu's display manager you have what my edit shows... – Majenko – 2011-04-05T08:58:52.763

+1 for correct after [edit] with details for upstart. – Doug – 2011-04-27T05:34:31.793

5

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

n0mad

Posted 2011-04-03T13:06:31.603

Reputation: 51

1I dont think that works for upstart services though.. – Rajat Gupta – 2014-03-09T19:52:11.173

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

Izzy

Posted 2011-04-03T13:06:31.603

Reputation: 3 187

2

My recommendation would be to simply comment out all "start on" and "stop on" lines. That worked well for me when I ran "initctl show-config" to see if the automatic startup of my program I wanted was disabled.

user35060

Posted 2011-04-03T13:06:31.603

Reputation: 111

1

Upstart is an event-driven init manager, and runlevels are not the primary mechanism for deciding when a service starts. Instead, services are started when all their dependencies are satisfied, which allows greater parallelism during boot, speeding up the boot process.

Using Ubuntu 11.04, I was able to disable GDM by editing the /etc/init/gdm.conf file, and removing all of the "start on" entries. Here is my pre-edit:

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]

Here is my post-edit:

start on
stop on runlevel [016]

Jason Martens

Posted 2011-04-03T13:06:31.603

Reputation: 111

1Correct; however, this is basically no better than just moving/removing the etc/init/gdm.conf file; I'm (still) amazed that manually editing the config file seems to be the only way to do this. – Doug – 2011-05-26T01:16:01.127

1

Here's a solution:

http://ubuntuforums.org/showpost.php?p=9416839&postcount=3

@Matt Jenkins

I have never liked Ubuntu's startup - and Linux's in general. It has always seems so messy >and kludgy. Give me FreeBSD's rcng any day. Anyway - specific to Ubuntu's display manager >you have what my edit shows...

Arch Linux has a nice init system. However, systemd blows any other init system out of the planet.

Pawlo

Posted 2011-04-03T13:06:31.603

Reputation: 11