When installing stuff on your *nix box, you may want to have them automatically run upon startup, somewhat like a service. For that, you have the rc.d system that works with init based on your runlevel, and the Upstart system.
A basic way to understand the init/rc.d system is that the /etc/init.d/ scripts do the managing of the “services” that you want, and the rc.d scripts run the relevant init.d scripts based on the runlevel you’re booting into.
$ runlevel N 2
The output of the runlevel command will let you know which runlevel you are in (2 in this case). For that, we assume that the rc2.d scripts are run.
$ ls -l /etc/rc2.d/ total 4 lrwxrwxrwx 1 root root 13 2010-09-27 09:21 K50ntp -> ../init.d/ntp -rw-r--r-- 1 root root 677 2011-04-19 15:11 README lrwxrwxrwx 1 root root 26 2010-05-10 16:07 S20clamav-freshclam -> ../init.d/clamav-freshclam
Here’s an excerpt of the listing of the files in /etc/rc2.d/. You will see that there are links named starting with K, and others starting with S. The K ones are simply disabled (they don’t run when you enter that runlevel), and the S ones are enabled.
So…we assume that the relevant /etc/init.d/ script has been written/installed already, and here’s how you remove all links for a given service (pppd-dns in these examples).
$ sudo update-rc.d -f pppd-dns remove Removing any system startup links for /etc/init.d/pppd-dns ... /etc/rc1.d/S70pppd-dns /etc/rc2.d/S70pppd-dns /etc/rc3.d/S70pppd-dns /etc/rc4.d/S70pppd-dns /etc/rc5.d/S70pppd-dns
Showing that the pppd-dns service attempts to install itself into runlevels 1, 2, 3, 4 and 5 where possible.
$ head /etc/init.d/pppd-dns #!/bin/sh -e ### BEGIN INIT INFO # Provides: pppd-dns # Required-Start: $local_fs gdm # Required-Stop: # Default-Start: 1 2 3 4 5 # Default-Stop: # Short-Description: Restore resolv.conf if the system crashed. ### END INIT INFO
And…here’s how you install the service based on the configured settings in the /etc/init.d/pppd-dns file:
$ sudo update-rc.d pppd-dns defaults update-rc.d: warning: pppd-dns start runlevel arguments (2 3 4 5) do not match LSB Default-Start values (1 2 3 4 5) update-rc.d: warning: pppd-dns stop runlevel arguments (0 1 6) do not match LSB Default-Stop values (none) Adding system startup for /etc/init.d/pppd-dns ... /etc/rc0.d/K20pppd-dns -> ../init.d/pppd-dns /etc/rc1.d/K20pppd-dns -> ../init.d/pppd-dns /etc/rc2.d/S20pppd-dns -> ../init.d/pppd-dns /etc/rc3.d/S20pppd-dns -> ../init.d/pppd-dns /etc/rc4.d/S20pppd-dns -> ../init.d/pppd-dns /etc/rc5.d/S20pppd-dns -> ../init.d/pppd-dns /etc/rc6.d/K20pppd-dns -> ../init.d/pppd-dns