Depending on your Linux distro and release, ultimately sysvinit scripts (those scripts in
/etc/init.d/) are generally run from the symlinks which exist in
Under Ubuntu, you're either using old-style
sysvinit, or more recently,
upstart. Under the upstart management directory (
/etc/events.d/) you'll find a legacy mode that falls back to the
/etc/init.d/rc invocation. Otherwise,
/etc/init.d/rc is invoked for each runlevel via
If you examine the logic of
/etc/init.d/rc, you'll find it defines actions depending on runlevel (
S are unconditionally stopped) or script prefix (
S[0-9][0-9]* scripts start,
K[0-9][0-9]* (kill) scripts stop). The numbering of scripts within a runlevel directory (e.g.:
/etc/rc1.d/) determines the order in which scripts are stopped or started. Kill scripts are run first, then start scripts.
For more on this, research sysvinit and upstart.