[id='understanding-systemd']
= Understanding systemd

_Systemd_ is a system and service manager for Linux, compatible with SysV and LSB init scripts. _Systemd_ provides:

* Aggressive parallelization capabilities
* Uses socket and D-Bus activation for starting services
* Offers on-demand starting of daemons, keeps track of processes using Linux cgroups
* Supports snapshotting and restoring of the system state
* Maintains mount and automount points
* Implements an elaborate transactional dependency-based service control logic.

The `systemctl` command is the primary tool to manage _systemd_. It combines the functionality of SysVinit's `service` and `chkconfig` commands into a single tool you can use to enable and disable services permanently or only for the current session.

_Systemd_ manages so-called *_units_*, which are representations of system resources and services. This following list shows the unit types that _systemd_ can manage:

service::
  A service on the system, including instructions for starting, restarting, and stopping the service.

socket::
  A network socket associated with a service.

device::
  A device specifically managed with _systemd_.

mount::
  A mountpoint managed with _systemd_.

automount::
  A mountpoint automatically mounted on boot.
  
swap::
  Swap space on the system.

target::
  A synchronization point for other units. Usually used to start enabled services on boot.

path::
  A path for path-based activation. For example, you can start services based on the state of a certain path, such as whether it exists or not.

timer::
  A timer to schedule activation of another unit.

snapshot::
  A snapshot of the current _systemd_ state. Usually used to rollback after making temporary changes to _systemd_.

slice::
  Restriction of resources through Linux Control Group nodes (cgroups).

scope::
  Information from _systemd_ bus interfaces. Usually used to manage external system processes.
