Modern Linux distributions (such as Ubuntu, Debian, CentOS, and RHEL) use systemd as their default init system and service manager, initializing as PID 1. The primary administrative tool for managing, monitoring, and controlling system services is systemctl. In this article, we explore how to start, stop, enable, and troubleshoot background services effectively.
Core Service Control Commands
The systemctl utility provides instant control over operational states for system daemons and servers.
| Command | Purpose | Usage Example |
|---|---|---|
| systemctl start | Immediately starts the target service. | sudo systemctl start nginx |
| systemctl stop | Gracefully halts a running service. | sudo systemctl stop apache2 |
| systemctl restart | Performs a full restart cycle (stop + start). | sudo systemctl restart mysql |
| systemctl reload | Reloads configuration files without dropping connections. | sudo systemctl reload nginx |
| systemctl status | Displays active runtime state and recent log entries. | sudo systemctl status php8.2-fpm |
Configuring Boot-Time Activation
Critical server services (such as databases and HTTP daemons) must be configured to persist across server reboots.
- systemctl enable: Registers the service unit to launch automatically during system startup.
- systemctl disable: Prevents the service from starting automatically upon system boot.
- systemctl is-enabled: Verifies whether boot persistence is currently configured for a unit.
Practical Server Management Workflow
The snippet below demonstrates a complete operational workflow for managing and validating an Nginx web server unit.
# 1. Start the Nginx service
sudo systemctl start nginx
# 2. Enable automatic start on system boot
sudo systemctl enable nginx
# 3. Inspect runtime status ('active (running)' indicates normal operation)
sudo systemctl status nginx
# 4. List all currently running service units
systemctl list-units --type=service --state=running
Error Diagnostics with journalctl
If a service fails to initialize and enters a failed state, pair systemctl with journalctl for detailed logs. Running journalctl -u nginx.service -e outputs the exact failure details, helping pinpoint syntax errors in configuration files instantly.