Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

Is there a "recommended way" to disable a service in Debian? (Disable = The service is installed but won't start automatically when the machine boots.)

I know that you can update-rc.d -f service remove (which basically removes the links in rcX.d), but doing this you lose the sequence number of the service (SXXservice, with XX being the sequence number), making life harder when you want to re-enable the service. I also know that I can just rename the links in rcX.d so that they don't start with S (or move them somewhere else), but I wondered if there is some "Debian-approved best-practice" way to do this.

share|improve this question

5 Answers 5

up vote 12 down vote accepted

Have a look at the update-rc.d man page. The third paragraph of the section named Installing Init Script Links reads …

A common system administration error is to delete the links with the thought that this will "disable" the service, i.e., that this will prevent the service from being started. However, if all links have been deleted then the next time the package is upgraded, the package's postinst script will run update-rc.d again and this will reinstall links at their factory default locations. The correct way to disable services is to configure the service as stopped in all runlevels in which it is started by default. In the System V init system this means renaming the service's symbolic links from S to K.

The last two sentences should answer your question. :-)

share|improve this answer
    
Perfect answer, thanks. –  Heinzi Jan 18 '10 at 12:07
    
for example: sudo update-rc.d postgresql disable –  tictacbum Nov 21 '12 at 22:48

You can try "sysv-rc-conf" utility to make your life little easier. It is more of chkconfig tool of other system.

Just type at the promp:

sudo apt-get install sysv-rc-conf

Cheers!

share|improve this answer
    
Nice tool, thanks. I see that it also correctly disables services (i.e. by renaming the symlink to K...). –  Heinzi Jan 18 '10 at 12:06

Actually, sysv-rc-conf is the approach recommended even by update-rc.d man page:

Please note that this program was designed for use in package maintainer scripts and, accordingly, has only the very limited functionality required by such scripts. System administrators are not encouraged to use update-rc.d to manage runlevels. They should edit the links directly or use runlevel editors such as sysv-rc-conf and bum instead.

share|improve this answer

see update-rc.d

share|improve this answer

As I understood it, the "Debian best practice" is to uninstall the package. You shouldn't have packages installed if you're not using them. This is why Debian packages are all configured to start on installation.

(Those few packages that could be useful to have installed without running usually have a setting in their /etc/default/<packagename> configuration files to disable starting.)

share|improve this answer
2  
you misunderstand. "not start automatically at boot" doesn't imply "not using the package at all". as one simplistic example, i might want my SSH server started by xinetd as needed, instead of starting up as a daemon at boot. –  quack quixote Feb 10 '10 at 4:58

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.