如何在 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代码 安装插件 测试代码发布 实现发布成功发送邮件…...
Ascend NPU上适配Step-Audio模型
1 概述 1.1 简述 Step-Audio 是业界首个集语音理解与生成控制一体化的产品级开源实时语音对话系统,支持多语言对话(如 中文,英文,日语),语音情感(如 开心,悲伤)&#x…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
2025季度云服务器排行榜
在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...
【UE5 C++】通过文件对话框获取选择文件的路径
目录 效果 步骤 源码 效果 步骤 1. 在“xxx.Build.cs”中添加需要使用的模块 ,这里主要使用“DesktopPlatform”模块 2. 添加后闭UE编辑器,右键点击 .uproject 文件,选择 "Generate Visual Studio project files",重…...
倒装芯片凸点成型工艺
UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域ÿ…...
Qt的学习(一)
1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
Linux-进程间的通信
1、IPC: Inter Process Communication(进程间通信): 由于每个进程在操作系统中有独立的地址空间,它们不能像线程那样直接访问彼此的内存,所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...
