Differences between System V and systemd
Internal
Overview
Both System V and systemd are init systems, used to manage processes and services on Linux systems.
An init system is responsible for starting and stopping services in the right order, controlling runlevels, and providing a way to start and stop processes.
System V uses a set of init shell scripts to start and stop services. They are stored under /etc/init.d
directory, and they are executed by the init
process.
systemd
uses unit files, which are configuration files, not executable scripts. They describe how to start and stop services, their dependencies, and so on. They are stored in /usr/lib/systemd/system
and they are managed by the systemd
process.
System V starts services sequentially. systemd
starts services in parallel, being aware of the service dependency DAG.
System V uses runlevels to determine which services to start and stop. A runlevel is a predefined state of the system, where only a specific set of services are running. System V has seven runlevels, numbered 0-6, where 0 represents the system shut down state, and 6 represents the system reboot state. systemd
does not use runlevels in the same way as System V. Instead, systemd
uses targets, which are similar to runlevels, but provide more flexibility and control over services.
System V does not have a built-in dependency mechanism, which means that services must be manually configured to start and stop in the right order. systemd
has such mechanism, which it uses to built the DAG and topologically sort it, which allows it to start and stop the services in the correct order.
System V does not have a built-in logging. systemd
does.