如何在 Ubuntu 22.04 上使用 systemctl 管理 systemd 服务教程
简介
Systemd 是许多现代 Linux 发行版提供核心功能的默认服务管理器,而 systemctl 是用户与 systemd 服务交互的方式。这使得 systemctl 成为 Linux 管理员工具箱中重要的一部分。
在本文中,我们将探讨如何使用 systemctl 在使用 systemd 的系统上执行常见的管理任务。我们将手把手教你如何在 Linux 服务器上使用 systemctl 管理 systemd 服务。
准备工作
服务器准备
必要前提:
- 一个充满求知欲的大脑。
- 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。
我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。
注册链接: https://rainyun.ivwv.site
创建雨云服务器
以下步骤仅供参考,请根据实际需求选择配置。
- 点击 云产品 → 云服务器 → 立即购买。
- 选择距离你较近的区域,以保证低延迟。

- 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
- 最后按照提示进行购买。
- 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

- 我们使用
PowerShell进行SSH远程连接到服务器,Win+R打开运行窗口,输入powershell后点击确定。

- 输入
ssh root@你的服务器IP例如ssh root@154.9.227.239回车后,首次需要输入yes,再次回车后即可登录服务器。

- 到此为止,我们的云服务器就远程连接上了。
安装和配置步骤
使用 Linux systemctl 命令检查服务状态
要检查特定服务的状态,通用的 systemctl 命令语法是:
systemctl status <servicename>
例如,要检查 ufw 防火墙的状态:
systemctl status ufw
输出应类似于:

在输出中,你不仅可以看到服务的状态和 PID,还可以看到来自 journalctl 的最近日志片段。
请注意,你还可以使用完整的 <servicename.service> 单元文件名(如 ufw.service)来运行 systemctl status 命令和其他与服务相关的 systemctl 命令。
使用 Linux systemctl 命令显示服务的属性
Systemd 属性定义了有关单元行为的详细信息。例如,DefaultEnvironment 定义传递给进程的 环境变量。许多属性值在 systemd-system.conf 中定义。
要显示 systemd 服务的所有属性,请使用此通用命令语法:
systemctl show <servicename>
例如,要查看 apache2 的所有属性,请执行此命令:
systemctl show apache2
输出应类似于:

要显示特定属性,请使用 -p 开关指定它。例如,要显示 apache2 的 UMask 属性,请使用:
systemctl show -p UMask apache2
输出应类似于:

使用 Linux systemctl 命令启动和停止服务
现在,我们将使用 Linux systemctl 命令来演示使用 Apache Web 服务 apache2 作为示例来修改服务状态的不同方法。
停止服务
停止服务的通用语法是:
systemctl stop <servicename>
要停止 apache2,请运行:
systemctl stop apache2
启动服务
启动服务的通用语法是:
systemctl start <servicename>
要启动 apache2,请运行:
systemctl start apache2
重启服务
重启(停止然后启动)服务的通用语法是:
systemctl restart <servicename>
要重启 apache2,请运行:
systemctl restart apache2
重新加载服务(重新读取配置文件)
要“重新加载”服务(这意味着使其重新读取配置文件而不重新启动),通用的 systemctl 命令语法是:
systemctl reload <servicename>
要重新加载 apache2,请运行:
systemctl reload apache2
尝试重新加载服务,如果失败则回退到重新启动
并非所有服务都支持重新加载。如果尝试重新加载不支持重新加载的服务,可能会看到类似以下的错误:

systemctl reload-or-restart <servicename> 命令将:
- 尝试重新加载服务。如果重新加载成功,则退出。
- 如果重新加载失败且服务正在运行,则重新启动服务。
- 如果重新加载失败且服务未运行,则启动服务。
要在 apache2 上运行 reload-or-restart 命令,请使用:
systemctl reload-or-restart apache2
systemctl try-reload-or-restart <servicename> 命令类似,但不启动未运行的服务。对于 try-reload-or-restart,逻辑是:
- 尝试重新加载服务。如果重新加载成功,则退出。
- 如果重新加载失败且服务正在运行,则重新启动服务。
- 如果重新加载失败且服务未运行,则退出而不启动服务。
使用 Linux systemctl 命令启用服务
要使服务在系统启动时自动启动,应启用该服务。启用服务的基本 systemctl 命令语法是:
systemctl enable <servicename>
例如,要启用 apache2:
systemctl enable apache2
输出应类似于:

如果想同时启用并启动服务,可以像这样附加 --now 开关:
systemctl enable <servicename> --now
使用 Linux systemctl 命令禁用服务
如果服务当前在系统启动时启动,而你想禁用该行为,可以使用:
systemctl disable <servicename>
例如,要禁用 apache2:
systemctl disable apache2
输出应类似于:

如果想同时禁用并停止服务,可以像这样附加 --now 开关:
systemctl disable <servicename> --now
使用 Linux systemctl 命令屏蔽服务
禁用的服务仍然可以手动启动。屏蔽服务会禁用它,并禁止用户或进程在不首先取消屏蔽它的情况下启动它。
屏蔽服务的通用命令是:
systemctl mask <servicename>
请注意,要屏蔽 systemd 服务,通常需要确保在 /etc/systemd/system/ 中没有相应的 .service 文件。例如,要在我们的 Ubuntu 20.04 系统上屏蔽 apache2,可以使用以下命令:
- 将
/etc/systemd/system/apache2.service文件的名称更改(移动)为/etc/systemd/system/apache2.service.old
mv /etc/systemd/system/apache2.service /etc/systemd/system/apache2.service.old
- 使用 Linux
systemctl命令屏蔽服务
systemctl mask apache2
输出应类似于:

使用 Linux systemctl 命令取消屏蔽服务
取消屏蔽已屏蔽的服务单元的通用命令语法是:
systemctl unmask <servicename>
例如,要取消屏蔽 apache2,请运行此命令:
systemctl unmask apache2
输出应类似于:

Systemd 单元管理
现在,让我们看看用于处理 Systemd 单元的有用命令。
使用 Linux systemctl 命令列出单元
Systemd 单元 是大多数 systemctl 命令的目标。单元是纯文本文件,描述了诸如服务、套接字、设备或文件系统挂载点之类的资源。
Systemd 服务在以 .service 结尾的单元文件中定义。例如,sshd 的单元文件是 sshd.service,RSYSLOG 的单元文件是 syslog.service。
要列出系统上所有已加载的单元,请运行命令 systemctl 或 systemctl list-units(两个命令执行相同的操作)。
输出应类似于:

以下是每列的含义:
- UNIT - systemd 单元的名称
- LOAD - 指示配置是
loaded(systemd 解析并存储在内存中的配置)、error、not-found、bad-setting还是masked。 - ACTIVE - 指示单元的状态。示例状态包括
active、inactive和failed。 - SUB - “子状态”的缩写,SUB 值显示有关单元状态的更详细信息。对于服务,常见的 SUB 值包括
running、stop和exited。你可以使用命令systemctl --state=help查看 systemd 单元的可用子状态。 - DESCRIPTION - systemd 单元的描述。
默认情况下,systemctl 和 systemctl list-units 输出仅显示已加载的单元。要显示所有可用单元,请添加 --all 选项。
systemctl list-units --all
你还可以使用 --state 和 --type 参数来过滤 systemctl 输出。
例如,要查看所有 active 和 loaded 服务单元,请使用:
systemctl list-units --state=active --type=service
使用 Linux systemctl 命令列出依赖项
你可以使用此通用的 systemctl 命令语法查看服务所依赖的其他单元:
systemctl list-dependencies <servicename>
例如,要查看 apache2 的依赖项:
systemctl list-dependencies apache2
输出应类似于:

使用 Linux systemctl 命令显示单元文件
systemctl cat 命令显示 systemd 正在主动使用的单元文件。此信息有助于确定是否已将对单元文件的更改加载到系统中。
使用 systemctl cat 命令显示单元文件的通用语法是:
systemctl cat <单元名称>
例如,要显示 apache2.service 的单元文件,请使用此命令:
systemctl cat apache2
输出应类似于:

使用 Linux systemctl 命令编辑单元文件
Linux systemctl 命令可以编辑定义服务的单元文件。服务单元文件使用 ini 样式格式,其中包含诸如 [Unit]、[Install] 和 [Service] 之类的部分,这些部分定义了不同的单元特征和行为。
要编辑现有的服务单元文件,通用的命令语法是:
systemctl edit --full <servicename>
例如,要编辑 apache2.service 文件,请运行命令:
systemctl edit --full apache2
该单元文件将在你的默认文本编辑器中打开。
要创建新的单元文件片段而不是编辑现有单元文件,请省略 --full 开关,如下所示:
systemctl edit <servicename>
保存新片段将在 <servicename.d> 目录中创建一个 override.conf 文件。 override.conf 中的设置将取代默认单元文件中的设置。
例如,如果运行命令 systemctl edit apache2,然后在片段中保存这些设置:
[Unit]
Description=The Pepper And Egg HTTP Server
将创建一个带有 override.conf 文件的 /etc/systemd/system/apache2.service.d/ 目录。 override.conf 文件包含我们在使用 systemctl edit 命令后保存的确切内容。我们可以使用以下命令查看内容:
cat /etc/systemd/system/apache2.service.d/override.conf
输出应类似于:

我们可以使用此 systemctl 命令重新加载 apache2 服务单元,使其使用新设置:
systemctl reload apache2
要了解有关服务单元文件的更多信息,请参阅 systemd.unit 和 systemd.service。
使用 targets
Systemd targets 将单元分组在一起,并定义系统在启动时可以进入的不同状态。虽然这两个概念之间存在许多差异(有关目标的深入研究,请参阅 systemd.special 手册页),但 systemd targets 类似于 SysV init 系统“运行级别”。
在高层面上,我们可以如下映射 systemd targets 和运行级别:
*poweroff.target映射到运行级别 0* - 此目标用于系统关闭。*rescue.target映射到运行级别 1* - 此目标用于进入单用户模式。*multi-user.target映射到运行级别 2-4* - 此目标用于进入没有图形界面的标准多用户模式。*graphical.target映射到运行级别 5* - 此目标用于具有网络和显示管理器的多用户模式。*reboot.target映射到运行级别 6* - 此目标用于重新启动系统。
要检查 systemd 系统上的当前“运行级别”(默认目标),请运行以下命令:
systemctl get-default
输出应类似于:

要列出所有目标,请运行此命令:
systemctl list-units --type target --all
输出应类似于:

要将目标设置为默认目标,通用的 systemctl 命令语法是:
systemctl set-default <target_name>.target
例如,要将默认目标设置为多用户模式,请运行命令:
systemctl set-default multi-user.target
你应该看到类似于以下的输出:

要立即切换到特定的运行级别(目标),通用命令是:
systemctl isolate <target_name>.target
例如,要将默认目标设置为多用户模式,请运行命令:
systemctl isolate multi-user.target
在远程主机上运行 systemctl 命令
默认情况下,systemctl 命令在执行命令的本地服务器上运行。要在远程服务器上执行 systemctl 命令,请使用 -H 或 --host 选项,并以 <username>@<hostname> 格式指定用户名和远程主机地址。
例如,要在 remotehost 上以 root 身份运行命令 systemctl status apache2,请执行此命令:
systemctl status apache2 -H root@remotehost
root@remotehost password:
输出应类似于:

结尾
通过对如何使用 Linux systemctl 命令的深入了解,你可以在许多现代 Linux 系统上高效地管理服务。要了解有关 systemd 和 systemctl 的更多信息,请查看 systemd 手册页。
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site
相关文章:
如何在 Ubuntu 22.04 上使用 systemctl 管理 systemd 服务教程
简介 Systemd 是许多现代 Linux 发行版提供核心功能的默认服务管理器,而 systemctl 是用户与 systemd 服务交互的方式。这使得 systemctl 成为 Linux 管理员工具箱中重要的一部分。 在本文中,我们将探讨如何使用 systemctl 在使用 systemd 的系统上执行…...
Springboot关于格式化记录
日期格式化 返回前端日期需要格式化 <dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.2</version> </dependency>JsonFormat(pattern "yyyy-MM-dd…...
Android 自定义shell命令
模拟触摸、按键等操作,直接在命令行输入对应命令即可。命令行如何识别并操作此命令,执行操作的是shell程序,还是java程序?是不是可以添加自定义的命令? 以下在Android13的代码中分析input命令 Android系统中使用了一…...
Unity游戏环境交互系统
概述 交互功能使用同一个按钮或按钮列表,在不同情况下显示不同的内容,按下执行不同的操作。 按选项个数分类 环境交互系统可分为两种,单选项交互,一般使用射线检测;多选项交互,一般使用范围检测。第一人…...
TOP K问题:利用堆排序找出数组中最小的k个数
设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。 找小的数需要建大堆来解决,首先将数组中前K个数建成一个大堆,将从k1个数直到数组结束的所有数与堆顶的数进行比较,如果比堆顶的数小,则替换堆顶的数…...
《信息传播:人工智能助力驱散虚假信息阴霾》
在信息爆炸的时代,虚假信息和谣言如同脱缰野马,肆意传播,对社会秩序和公众生活造成了严重影响。人工智能作为一种强大的技术工具,正逐渐成为信息传播的有力助手,为防止虚假信息和谣言扩散提供了新的途径。 虚假信息和…...
数据权限和角色权限区别
1、概念 角色权限(Role-Based Access Control, RBAC)和数据权限(Data Access Control)是两种不同的权限管理策略,它们在权限控制的侧重点和应用场景上有所区别: 角色权限(RBACÿ…...
Flink的多流转换(分流-侧输出流、合流-union、connect、join)
在实际应用中,我们可能要将多个不同来源的数据连接合并在一起进行处理,也有可能要将一条流拆分成多条流进行处理,这就涉及到了Flink的多流转换问题。简单来说,就是分流和合流两大操作,分流主要通过侧输出流实现&#x…...
DirectUI属性表
<?xml version"1.0" encoding"UTF-8"?> <Controls><Window parent""><Attribute name"size" default"0,0" type"SIZE" comment"窗口的初始化大小,如(800,600)"/><Attribu…...
RBAC权限控制
1、Spring Security 是一个功能强大的Java安全框架,它提供了全面的安全认证和授权的支持。 2 SpringSecurity配置类(源码逐行解析) Spring Security的配置类是实现安全控制的核心部分 开启Spring Security各种功能,以确保Web应…...
STM32高级物联网通信之以太网通讯
目录 以太网通讯基础知识 什么是以太网 互联网和以太网的区别 1)概念与范围 (1)互联网 (2)以太网 2)技术特点 (1)互联网 (2)以太网 3)应用场景 (1)互联网 (2)以太网 以太网的层次 1)物理层 2)数据链路层 OSI 7层模型 TCPIP 4层模型 一些常见…...
【小程序】全局配置window和tabBar
目录 全局配置 1. 全局配置文件及常用的配置项 全局配置 - window 1. 小程序窗口的组成部分 2. 了解 window 节点常用的配置项 编辑 3. 设置导航栏的标题 4. 设置导航栏的背景色 5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功能 7. 设置下拉刷新时窗口的背景色 …...
详解VHDL如何编写Testbench
1.概述 仿真测试平台文件(Testbench)是可以用来验证所设计的硬件模型正确性的 VHDL模型,它为所测试的元件提供了激励信号,可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中,也可以从…...
冥想的实践
这是我某一天的正念和冥想实践,我对正念练习、冥想练习进行了分别的统计。 正念练习:1分钟**5次 冥想:15分钟10分钟 正念练习,基本在工作休息时间练习。当然,工作过程中,也有一部分时间会有正念的状态&am…...
STM32F103RCT6学习之四:定时器
1.基础 定时器可以对输入的时钟进行计数,并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元,在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能,而且还包含内外时钟源选择、输入捕获、…...
如何在网页端使用 IDE 高效地阅读 GitHub 源码?
如何在网页端使用 IDE 高效地阅读 GitHub 源码? 前言什么是 GitHub1s?使用 GitHub1s 阅读 browser-use 项目源码步骤 1: 打开 GitHub 项目页面步骤 2: 修改 URL 使用 GitHub1s步骤 3: 浏览文件结构步骤 4: 使用代码高亮和智能补全功能步骤 5: 快速跳转和…...
易基因: BS+ChIP-seq揭示DNA甲基化调控非编码RNA(VIM-AS1)抑制肿瘤侵袭性|Exp Mol Med
大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 肝细胞癌(hepatocellular carcinoma,HCC)早期复发仍然是一个具有挑战性的领域,其中涉及的机制尚未完全被理解。尽管微血管侵犯(…...
欢迪迈手机商城设计与实现基于(代码+数据库+LW)
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本欢迪迈手机商城就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…...
数据库基础与应用:从概念到实践
数据库是信息技术中的核心组件之一,是现代计算机系统中不可或缺的部分。无论是日常应用的社交网络、电子商务网站,还是企业级的大型系统,几乎所有的信息管理都离不开数据库。那么,数据库究竟是什么?它是如何工作的&…...
jenkins集成工具(一)部署php项目
目录 什么是CI 、CD Jenkins集成工具 一、Jenkins介绍 二、jenkins的安装和部署 环境部署 安装jenkins 安装gitlab 配置镜像源进行安装 修改密码 安装git工具 上传测试代码 Jenkins部署php项目wordpress 发布php代码 安装插件 测试代码发布 实现发布成功发送邮件…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
跨链模式:多链互操作架构与性能扩展方案
跨链模式:多链互操作架构与性能扩展方案 ——构建下一代区块链互联网的技术基石 一、跨链架构的核心范式演进 1. 分层协议栈:模块化解耦设计 现代跨链系统采用分层协议栈实现灵活扩展(H2Cross架构): 适配层…...
ETLCloud可能遇到的问题有哪些?常见坑位解析
数据集成平台ETLCloud,主要用于支持数据的抽取(Extract)、转换(Transform)和加载(Load)过程。提供了一个简洁直观的界面,以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...
2025盘古石杯决赛【手机取证】
前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
