In Linux, you generally have run levels that range from 0-6.
0: Halt (shutdown) the system
1: Single user mode (major upgrades, maintenance, etc.)
2: Basic multi user mode
3: Full multi user mode
4: Unused (custom)
5: Multi user mode with GUI
6: Reboot
0,1 and 6 are always the same, but different distros do different things with the other run levels (for example, Debian-based systems use run level 2 for GUI and full multi-user mode)
You can see what services start at what run level by looking in the directory /etc/rc#.d where # is the run level number.
The run level number can be found in /etc/inittab (id:2:initdefault: for example)
If you were to look in /etc/rc2.d, you would see files that look like:
S99program
These are usually symbolic links to files in /etc/init.d (so a change to /etc/init.d/program would change the programs script for every run level).
Start-up scripts in Linux follow the form “start-stop” (at minimum). Many have “start-stop-restart-reload-check” or possible more.
A basic start-stop script would look like this:
#!/bin/bash
case $1 in
start)
program
;;
stop)
program
;;
esac
Don’t forget
chmod +x script
This is useful to know, especially if you are dealing with a machine that may need specific commands to be run when booting or shutting down in order to function properly (for example, in the radio station we need the client machines to run dhclient at S99 in order to obtain an IP address).
These scripts are not all run at once (by default). S##program where ## is the priority of the script.
S99 will run last, while S10 will run before most other things.