SysV

SysV is the traditional way to start services in Linux was to place a script in /etc/init.d, and then use the update-rc.d command (or in RedHat based distros, chkconfig) to enable or disable it.

This command uses some mildly complicated logic to create symlinks in /etc/rc#.d, that control the order of starting services. If you run ls /etc/rc2.d you can see the order that services will be killed with a file name like K##xxxx and started with file names S##xxxx. The ## in S##xxxxmeans a “start order” for service xxxx. Conversely, the ## in K##xxxx means the kill order for service xxxx.

One major issue with SysV was that when booting the system, everything had to be done in serial, one thing after another, making system boot times really slow. Attempts were made to parallelize this, but they were haphazard and hard to take full advantage of. This was the main reason that Upstart was created.

Link to original

Upstart

Upstart uses job definition files in /etc/init to define on what events a service should be started. So, while the system is booting, upstart processes various events, and then can start multiple services in parallel. This allows them to fully utilize the resources of the system, for instance, by starting a disk-bound service up while another CPU-bound service runs, or while the network is waiting for a dynamic IP address to be assigned.

You can see all of the upstart job files by running ls /etc/init/*.conf

Let me just stop here and say that if you don’t know what a service is, or what it does, DO NOT disable it!

Not all services have been converted to upstart. While working on the server team at Canonical for the past few months, I’ve worked on a number of converted job files, and the nicest part is that it allows one to get rid of all the script “magic” and just put in a few commands here and there to define exactly how to start the service, and nothing more. But for now, only a handful of traditional network services, like squid and samba, have been converted.

Link to original

Systemd

Starting with Ubuntu 15.04, Upstart will be deprecated in favor of Systemd.

In recent years, Linux distributions have increasingly transitioned from other init systems to Systemd. The Systemd suite of tools provides a fast and flexible init model for managing an entire machine from boot onwards.

Link to original