The systemctl command is a powerful utility used to interact with systemd, the init system and service manager on many Linux distributions. It allows you to manage services, system states, and various system resources.
Overview of systemctl
systemctl provides control over systemd services, which includes starting, stopping, restarting, enabling, disabling, and checking the status of services. Additionally, it can be used to manage system states (e.g., reboot, shutdown) and inspect logs and configurations.
General Syntax
systemctl [OPTIONS] COMMAND [NAME...]
Where:
COMMAND is the action you want to perform (e.g., start, stop, status).
NAME is the name of the service, target, or unit you want to manage (e.g., nginx.service, docker, or multi-user.target).
Common systemctl Commands
Starting a Service:
Starts a systemd service.
systemctlstart<service-name>
Example: To start the apache2 service:
systemctlstartapache2
Stopping a Service:
Stops a running systemd service.
systemctlstop<service-name>
Example: To stop the apache2 service:
systemctlstopapache2
Restarting a Service:
Restarts a service by stopping and then starting it again.
systemctlrestart<service-name>
Example: To restart the apache2 service:
systemctlrestartapache2
Reloading a Service:
Reloads a service’s configuration without stopping it. Some services support reloading (like web servers).
systemctlreload<service-name>
Example: To reload the apache2 service:
systemctlreloadapache2
Checking the Status of a Service:
Displays the current status of a service, including whether it's running, its PID, and any recent log entries.
systemctlstatus<service-name>
Example: To check the status of apache2:
systemctlstatusapache2
Enabling a Service to Start at Boot:
Enables a service to start automatically when the system boots.
systemctlenable<service-name>
Example: To enable apache2 to start at boot:
systemctlenableapache2
Disabling a Service from Starting at Boot:
Disables a service from automatically starting when the system boots.
systemctldisable<service-name>
Example: To disable apache2 from starting at boot:
systemctldisableapache2
Masking a Service:
Prevents a service from being started, either manually or automatically, by creating a symbolic link to /dev/null.
systemctlmask<service-name>
Example: To mask the apache2 service:
systemctlmaskapache2
Unmasking a Service:
Reverses the effect of mask by removing the symbolic link.
systemctlunmask<service-name>
Example: To unmask apache2:
systemctlunmaskapache2
Viewing Logs for a Service:
Displays the logs for a specific service managed by systemd.
journalctl-u<service-name>
Example: To view the logs for apache2:
journalctl-uapache2
Viewing the System Logs:
Displays the entire system journal, including messages from all services and system events.
journalctl
Rebooting the System:
Reboots the entire system.
systemctlreboot
Shutting Down the System:
Shuts down the system gracefully.
systemctlpoweroff
Suspending the System:
Suspends the system (puts it to sleep).
systemctlsuspend
Viewing All Active Units:
Lists all active systemd units (services, sockets, etc.).
systemctllist-units
Viewing All Loaded Units:
Lists all loaded systemd units, including inactive ones.
systemctllist-units--all
Checking Systemd Targets:
Lists the systemd targets. Targets represent different states or "runlevels" in systemd. For example, multi-user.target is similar to runlevel 3 in traditional SysVinit systems.
systemctllist-units--type=target
Switching Runlevels (Changing Targets):
You can switch between different systemd targets (which are similar to runlevels).
systemctlisolate<target-name>
Example: To switch to the multi-user target (which is equivalent to runlevel 3):
systemctlisolatemulti-user.target
Checking System Boot Logs:
You can view the logs related to the system’s boot process.
journalctl-b
Example Usage
1. Start the Apache service:
2. Check the status of a service:
3. Enable a service to start at boot:
4. Disable a service from starting at boot:
5. Restart a service after making configuration changes:
6. Check all active services:
7. Reboot the system:
8. View logs for the nginx service:
9. Power off the system:
Conclusion
The systemctl command is an essential tool for managing a system running systemd. It provides control over services, targets (runlevels), and logs, enabling administrators to configure, troubleshoot, and maintain their Linux systems effectively. From simple service management to complex system configurations, systemctl is the go-to utility for modern Linux administration.