systemd
By the systemd project (originally Red Hat)
systemd is a system and service manager for Linux that serves as process 1, the first process the kernel starts at boot, and is responsible for initializing the rest of the operating system, starting and supervising services, and managing…
Definition
systemd is a system and service manager for Linux that serves as process 1, the first process the kernel starts at boot, and is responsible for initializing the rest of the operating system, starting and supervising services, and managing dependencies between them. It replaced the older SysVinit and Upstart init systems in most major Linux distributions and expanded far beyond service startup into logging, device management, and network configuration.
Overview
systemd was created to address the limitations of the traditional SysVinit boot process, which started services sequentially through shell scripts and offered little in the way of dependency tracking, parallelization, or service supervision after startup. systemd instead models services as units with explicit dependency relationships, starts independent units in parallel to speed up boot time, and continuously supervises running services, automatically restarting ones that crash if configured to do so. Mechanically, systemd organizes system configuration into unit files — for services, mount points, devices, timers, and sockets — each describing what the unit needs and how it should behave. Its companion journal, journald, captures structured system and service logs in a binary format queryable with the journalctl command, replacing the older practice of scattered plain-text log files. Beyond init duties, the systemd project has absorbed related system-level responsibilities over time, including network configuration through systemd-networkd, DNS resolution through systemd-resolved, and login and session management through systemd-logind, which has made it a broad platform rather than a narrow init daemon. systemd also introduces cgroups-based resource control at the unit level, letting administrators cap CPU, memory, or I/O for a specific service directly through its unit file rather than through a separately managed subsystem. systemd's adoption was and remains contentious within the Linux community: it replaced SysVinit and Upstart in Debian, Ubuntu, Fedora, and most major distributions, but some distributions and communities, notably Devuan and Alpine Linux's default OpenRC setup, deliberately avoid it, citing concerns about scope creep and its departure from the traditional Unix philosophy of small, single-purpose tools. Compared to cron for scheduled tasks, systemd offers a rough analog in systemd timers, which integrate with the same logging and dependency system rather than running as an entirely separate subsystem. In practice, nearly every modern general-purpose Linux server and desktop distribution uses systemd to manage services, and administrators interact with it daily through commands like systemctl to start, stop, enable, and inspect the status of services, as well as through unit files when packaging custom applications to run as managed services. The main criticism is scope: because systemd has absorbed logging, networking, and other subsystems that were traditionally separate and independently replaceable, some administrators view it as a large, tightly coupled system that is harder to audit or partially replace than the smaller tools it displaced, even though its parallel startup and unified logging offer real operational benefits. Administrators moving between systemd and non-systemd distributions also have to relearn a different set of commands and log locations, since the two ecosystems do not share tooling.
Key Features
- Parallel service startup based on explicit unit dependency graphs
- Automatic service supervision and restart on failure
- Unified structured logging through journald and journalctl
- systemd timers as a modern alternative to cron for scheduled tasks
- Integrated network configuration via systemd-networkd and systemd-resolved
- Socket and device activation for on-demand service startup
- systemctl command-line interface for managing and inspecting units