I have a service foo
which currently starts at runlevel 3 and above. How can I stop it from doing so, without using update-rc.d foo stop 3 .
, which (if I understand it correctly) would turn off the service at each runlevel change.
(ie., if I was at runlevel 1 and enabled foo
, then when I changed to runlevel 3 it would be disabled, no?)
Running Debian GNU/Linux Lenny.
The "stop" term does not prevent the daemon from starting but rather shuts it down while entering the specified runlevel.
If you just want to remove a service/daemon from a single runlevel,
update-rc.d
as pointed out bei freiheit or simply remove the symlink from/etc/rcX.d/
, where X is your runlevel. If you don't want the service to start automatically,update-rc.d -f foo remove
will do the trick.Configure Linux Startup Applications with sysv-rc-conf:
As others have pointed out, here is also update-rc.d for the cmd line.
For example, run
to disable apache2 from all run levels.
Short:
There is no reliable way to do this quickly.
Long:
Current Debian (Debian unstable as of 2012-06-01) has currently no reliable short way to consistently disable a service/daemon. – Because an upgrade of a daemon package unconditionally runs “/etc/init.d/package restart”, having it disabled for this runlevel or not.
To make sure a daemon doesn’t start, you could:
There is/was(?) some init-policy-something step for init scripts in Debian, which was supposed to fill this missing functionality. – I tried to use it, found it complicated, found a bug, and never touched it again.
Update:
Switch to “systemd”, an alternative to “initd”. A debian package exists, and you can disable a service with something like this:
Run this command
apt-get install rcconf
Once installed, run rcconf in SSH and you will receive a dialog box displaying all services set to run on boot. Select the ones by pressing Space to disable/enable the particular and you're done, simpley click on Ok and that service wont bother to start again on next boot. Being using this for years. Very handy tool for Debian/Ubuntu users like me.
I'm confused what you're trying to accomplish.
What run levels do you want foo running in?
If you always want it running, use
update-rc.d foo defaults
; that will stop it in 0, 1 and 6, while leaving it running in 2, 3, 4 and 5. (1 shouldn't run anything but a shell, 0 and 6 are halt and reboot)If you want to specify exactly what run levels to run in:
I think this would do the job: insserv -r foo
Start using insserv from Debian7
Output all services and it runlevel information
Remove the listed scripts from all runlevels
If you want to specify run levels.
Remember to change service to the name of the program.
On a red hat based system you could use
to remove the server from runlevels
on debian based system all services are supposed to be started by the files found in the /etc/rc?.d/ directories these files then have a symbolic link to the corresponding files in the /etc/init.d/ directory. If you wish for a service not to start by default then you can rename/remove it from the /etc/rc?.d directory and your change will be preserved on package upgrade as long as one of the start links still appear in one of the other (3,4 and 5) directories. Or you can use the update-rc.d command to change the link(s) and if you want to start the service after then you can use /etc/init.d/service_name start if you leave the start off the end it will give you the options that can be used like stop, restart, reload ...
I think you can use sysv-rc-conf to disable it though.
Ubuntu's Bootup Manager is kind of sysv-rc-conf light, a more friendly, GUI version, and many folks reading this thread will appreciate that.
http://www.marzocca.net/linux/bum.html