8. systemctl 命令
服务
服务(Service)是指一类在后台持续运行的程序(守护进程,Daemon),通常用于提供系统或网络功能。如:Web服务(nginx 等)、远程控制(ssh、ftpd等)、数据库(mysqld等)、日志管理等。服务通常在系统启动时自动运行,无需用户交互,并通过特定方式(如命令行或系统工具)进行管理。
服务由 Linux 的初始化系统管理,Ubuntu 26.04 使用 systemd 对服务进行管理。
systemctl 命令
systemctl 命令是最新 Linux 系统中用于 查询 和 发送控制命令 的系统管理工具命令。
主要功能
- 查询服务的状态。
- 管理系统服务:启动、停止、重启服务等。
单元
单元(UNIT)是 systemd 管理系统资源的基本单位,代表系统中被 systemd 管理的各种实体(如服务、设备、挂载点等)。每个单元对应一个配置文件,定义了资源的属性、依赖关系和行为。
为了演示服务的用法。我们需要运行 sudo apt install openssh-server 命令安装一个 ssh 服务。
ssh 是用于 Linux 或 UNIX 操作系统中用于接收远程连接的服务。安装了这个服务后,远程计算机可以在终端中使用 ssh 命令远程连接这个计算机。这个服务是运维和开发人员常用的服务。完成本课程的实验后,你可以使用 sudo systemctl stop ssh.service 命令来关闭 ssh.service 服务来保证系统的安全。
安装命令如下:
weimz@mzstudio:~$ sudo apt install openssh-server
如果你使用的是本教材提供的 Ubuntu26.04LTS_IntelX86CPU.zip 虚拟机镜像则无需安装(已经安装过了)。
命令格式
systemctl [选项] [参数]
如:
列出所有的单元。
weimz@mzstudio:~$ systemctl
UNIT LOAD ACTIVE SUB DESCRIPTION
...
ssh.service loaded active running OpenBSD Secure Shell server
这里列出的所有 活动 单元(UNIT),如 ssh 服务的 单元(UNIT)是 ssh.service。
每列具体内容如下:
- UNIT:单元名称(如服务:
.service、挂载点.mount、套接字.socket、设备.device等)。 - LOAD:单元加载状态(loaded 表示已加载、error:配置有错误、masked:单元被禁用)。
- ACTIVE:单元的高层级状态(如 active 运行中,inactive 未运行,failed 尝试启动但失败)。
- SUB:更详细的子状态(如 running 表示服务正在运行,exited 表示已退出)。
- 服务(.service):running(运行中)、exited(已退出)、dead(未运行)。
- 挂载点(.mount):mounted(已挂载)、waiting(等待挂载)。
- 设备(.device): plugged(设备插入)、listening(套接字监听)等。
- DESCRIPTION:单元的简要描述。
单元状态查询命令和选项
systemctl 或 systemctl list-unitssystemctl list-units --allsystemctl list-units -t <类型名>service, mount, socket)。systemctl status <UNIT>ssh.service)。systemctl is-active <UNIT>active/inactive)。systemctl --failed如:
查询 ssh.service 的服务状态(单元名可以使用 ssh.service、也可以是 ssh ):
weimz@mzstudio:~$ systemctl status ssh.service
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/usr/lib/systemd/system/ssh.service; disabled; preset: enabled)
Active: active (running) since Thu 2026-05-28 14:15:31 +08; 2s ago
Invocation: 34629a455dff4e47bb28e3e4ef7df082
TriggeredBy: ● ssh.socket
Docs: man:sshd(8)
man:sshd_config(5)
Process: 11514 ExecStartPre=/usr/sbin/sshd -t (code=exited, status=0/SUCCESS)
Main PID: 11519 (sshd)
Tasks: 1 (limit: 6092)
Memory: 1.2M (peak: 1.9M)
CPU: 52ms
CGroup: /system.slice/ssh.service
└─11519 "sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups"
...
可见守护进程已经运行(running),PID 是 11519,单元配置文件是 /usr/lib/systemd/system/ssh.service。
生命周期管理命令和选项
systemctl start <UNIT>systemctl stop <UNIT>systemctl restart <UNIT>systemctl reload <UNIT>systemctl reload-or-restart <UNIT>systemctl kill <UNIT>-s <信号值> 指定信号)。如:
weimz@mzstudio:~$ sudo systemctl stop ssh.service
weimz@mzstudio:~$ sudo systemctl start ssh.service
weimz@mzstudio:~$ sudo systemctl restart ssh.service
weimz@mzstudio:~$ sudo systemctl kill ssh.service
weimz@mzstudio:~$ sudo systemctl reload ssh.service
weimz@mzstudio:~$ sudo systemctl restart ssh.service
开机自启管理
systemctl enable <UNIT>systemctl disable <UNIT>systemctl is-enabled <UNIT>enabled/disabled)。systemctl mask <UNIT>/dev/null,防止手动或依赖启动)。systemctl unmask <UNIT>练习:
- 使用
sudo apt install openssh-server安装ssd服务。 - 使用
systemctl list-units -t service命令查看所有服务,看一是是否有ssh.service这个服务。 - 使用
sudo systemctl start ssh.service来启动ssh服务。 - 使用
sudo systemctl stop ssh.service来停止ssh服务。 - 使用
sudo systemctl restart ssh.service来重新开始ssh服务。 - 使用
sudo systemctl stop ssh.service来停止ssh服务。