当前位置: 首页 > news >正文

如何在 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 开关指定它。例如,要显示 apache2UMask 属性,请使用:

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> 命令将:

  1. 尝试重新加载服务。如果重新加载成功,则退出。
  2. 如果重新加载失败且服务正在运行,则重新启动服务。
  3. 如果重新加载失败且服务未运行,则启动服务。

要在 apache2 上运行 reload-or-restart 命令,请使用:

systemctl reload-or-restart apache2

systemctl try-reload-or-restart <servicename> 命令类似,但不启动未运行的服务。对于 try-reload-or-restart,逻辑是:

  1. 尝试重新加载服务。如果重新加载成功,则退出。
  2. 如果重新加载失败且服务正在运行,则重新启动服务。
  3. 如果重新加载失败且服务未运行,则退出而不启动服务。

使用 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,可以使用以下命令:

  1. /etc/systemd/system/apache2.service 文件的名称更改(移动)为 /etc/systemd/system/apache2.service.old
mv /etc/systemd/system/apache2.service /etc/systemd/system/apache2.service.old
  1. 使用 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

要列出系统上所有已加载的单元,请运行命令 systemctlsystemctl list-units(两个命令执行相同的操作)。

输出应类似于:

以下是每列的含义:

  • UNIT - systemd 单元的名称
  • LOAD - 指示配置是 loaded(systemd 解析并存储在内存中的配置)、errornot-foundbad-setting 还是 masked
  • ACTIVE - 指示单元的状态。示例状态包括 activeinactivefailed
  • SUB - “子状态”的缩写,SUB 值显示有关单元状态的更详细信息。对于服务,常见的 SUB 值包括 runningstopexited。你可以使用命令 systemctl --state=help 查看 systemd 单元的可用子状态。
  • DESCRIPTION - systemd 单元的描述。

默认情况下,systemctlsystemctl list-units 输出仅显示已加载的单元。要显示所有可用单元,请添加 --all 选项。

systemctl list-units --all

你还可以使用 --state--type 参数来过滤 systemctl 输出。

例如,要查看所有 activeloaded 服务单元,请使用:

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 发行版提供核心功能的默认服务管理器&#xff0c;而 systemctl 是用户与 systemd 服务交互的方式。这使得 systemctl 成为 Linux 管理员工具箱中重要的一部分。 在本文中&#xff0c;我们将探讨如何使用 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命令

模拟触摸、按键等操作&#xff0c;直接在命令行输入对应命令即可。命令行如何识别并操作此命令&#xff0c;执行操作的是shell程序&#xff0c;还是java程序&#xff1f;是不是可以添加自定义的命令&#xff1f; 以下在Android13的代码中分析input命令 Android系统中使用了一…...

Unity游戏环境交互系统

概述 交互功能使用同一个按钮或按钮列表&#xff0c;在不同情况下显示不同的内容&#xff0c;按下执行不同的操作。 按选项个数分类 环境交互系统可分为两种&#xff0c;单选项交互&#xff0c;一般使用射线检测&#xff1b;多选项交互&#xff0c;一般使用范围检测。第一人…...

TOP K问题:利用堆排序找出数组中最小的k个数

设计一个算法&#xff0c;找出数组中最小的k个数。以任意顺序返回这k个数均可。 找小的数需要建大堆来解决&#xff0c;首先将数组中前K个数建成一个大堆&#xff0c;将从k1个数直到数组结束的所有数与堆顶的数进行比较&#xff0c;如果比堆顶的数小&#xff0c;则替换堆顶的数…...

《信息传播:人工智能助力驱散虚假信息阴霾》

在信息爆炸的时代&#xff0c;虚假信息和谣言如同脱缰野马&#xff0c;肆意传播&#xff0c;对社会秩序和公众生活造成了严重影响。人工智能作为一种强大的技术工具&#xff0c;正逐渐成为信息传播的有力助手&#xff0c;为防止虚假信息和谣言扩散提供了新的途径。 虚假信息和…...

数据权限和角色权限区别

1、概念 角色权限&#xff08;Role-Based Access Control, RBAC&#xff09;和数据权限&#xff08;Data Access Control&#xff09;是两种不同的权限管理策略&#xff0c;它们在权限控制的侧重点和应用场景上有所区别&#xff1a; 角色权限&#xff08;RBAC&#xff…...

Flink的多流转换(分流-侧输出流、合流-union、connect、join)

在实际应用中&#xff0c;我们可能要将多个不同来源的数据连接合并在一起进行处理&#xff0c;也有可能要将一条流拆分成多条流进行处理&#xff0c;这就涉及到了Flink的多流转换问题。简单来说&#xff0c;就是分流和合流两大操作&#xff0c;分流主要通过侧输出流实现&#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安全框架&#xff0c;它提供了全面的安全认证和授权的支持。 2 SpringSecurity配置类&#xff08;源码逐行解析&#xff09; Spring Security的配置类是实现安全控制的核心部分 开启Spring Security各种功能&#xff0c;以确保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模型&#xff0c;它为所测试的元件提供了激励信号&#xff0c;可以以波形的方式显示仿真结果或把测试结果存储到文件中。这里所说的激励信号可以直接集成在测试平台文件中&#xff0c;也可以从…...

冥想的实践

这是我某一天的正念和冥想实践&#xff0c;我对正念练习、冥想练习进行了分别的统计。 正念练习&#xff1a;1分钟**5次 冥想&#xff1a;15分钟10分钟 正念练习&#xff0c;基本在工作休息时间练习。当然&#xff0c;工作过程中&#xff0c;也有一部分时间会有正念的状态&am…...

STM32F103RCT6学习之四:定时器

1.基础 定时器可以对输入的时钟进行计数&#xff0c;并在计数值达到设定值时触发中断 16位计数器、预分频器、自动重装寄存器的时基单元&#xff0c;在72MHz计数时钟下可以实现最大59.65s的定时 不仅具备基本的定时中断功能&#xff0c;而且还包含内外时钟源选择、输入捕获、…...

如何在网页端使用 IDE 高效地阅读 GitHub 源码?

如何在网页端使用 IDE 高效地阅读 GitHub 源码&#xff1f; 前言什么是 GitHub1s&#xff1f;使用 GitHub1s 阅读 browser-use 项目源码步骤 1: 打开 GitHub 项目页面步骤 2: 修改 URL 使用 GitHub1s步骤 3: 浏览文件结构步骤 4: 使用代码高亮和智能补全功能步骤 5: 快速跳转和…...

易基因: BS+ChIP-seq揭示DNA甲基化调控非编码RNA(VIM-AS1)抑制肿瘤侵袭性|Exp Mol Med

大家好&#xff0c;这里是专注表观组学十余年&#xff0c;领跑多组学科研服务的易基因。 肝细胞癌&#xff08;hepatocellular carcinoma&#xff0c;HCC&#xff09;早期复发仍然是一个具有挑战性的领域&#xff0c;其中涉及的机制尚未完全被理解。尽管微血管侵犯&#xff08…...

欢迪迈手机商城设计与实现基于(代码+数据库+LW)

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本欢迪迈手机商城就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…...

数据库基础与应用:从概念到实践

数据库是信息技术中的核心组件之一&#xff0c;是现代计算机系统中不可或缺的部分。无论是日常应用的社交网络、电子商务网站&#xff0c;还是企业级的大型系统&#xff0c;几乎所有的信息管理都离不开数据库。那么&#xff0c;数据库究竟是什么&#xff1f;它是如何工作的&…...

jenkins集成工具(一)部署php项目

目录 什么是CI 、CD Jenkins集成工具 一、Jenkins介绍 二、jenkins的安装和部署 环境部署 安装jenkins 安装gitlab 配置镜像源进行安装 修改密码 安装git工具 上传测试代码 Jenkins部署php项目wordpress 发布php代码 安装插件 测试代码发布 实现发布成功发送邮件…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日&#xff0c;2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席&#xff0c;并作《智能体在安全领域的应用实践》主题演讲&#xff0c;分享了在智能体在安全领域的突破性实践。他指出&#xff0c;百度通过将安全能力…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

C++使用 new 来创建动态数组

问题&#xff1a; 不能使用变量定义数组大小 原因&#xff1a; 这是因为数组在内存中是连续存储的&#xff0c;编译器需要在编译阶段就确定数组的大小&#xff0c;以便正确地分配内存空间。如果允许使用变量来定义数组的大小&#xff0c;那么编译器就无法在编译时确定数组的大…...

保姆级【快数学会Android端“动画“】+ 实现补间动画和逐帧动画!!!

目录 补间动画 1.创建资源文件夹 2.设置文件夹类型 3.创建.xml文件 4.样式设计 5.动画设置 6.动画的实现 内容拓展 7.在原基础上继续添加.xml文件 8.xml代码编写 (1)rotate_anim (2)scale_anim (3)translate_anim 9.MainActivity.java代码汇总 10.效果展示 逐帧…...

【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?

FTP&#xff08;File Transfer Protocol&#xff09;本身是一个基于 TCP 的协议&#xff0c;理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况&#xff0c;主要原因包括&#xff1a; ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...

高防服务器价格高原因分析

高防服务器的价格较高&#xff0c;主要是由于其特殊的防御机制、硬件配置、运营维护等多方面的综合成本。以下从技术、资源和服务三个维度详细解析高防服务器昂贵的原因&#xff1a; 一、硬件与技术投入 大带宽需求 DDoS攻击通过占用大量带宽资源瘫痪目标服务器&#xff0c;因此…...

GAN模式奔溃的探讨论文综述(一)

简介 简介:今天带来一篇关于GAN的,对于模式奔溃的一个探讨的一个问题,帮助大家更好的解决训练中遇到的一个难题。 论文题目:An in-depth review and analysis of mode collapse in GAN 期刊:Machine Learning 链接:...

CMS内容管理系统的设计与实现:多站点模式的实现

在一套内容管理系统中&#xff0c;其实有很多站点&#xff0c;比如企业门户网站&#xff0c;产品手册&#xff0c;知识帮助手册等&#xff0c;因此会需要多个站点&#xff0c;甚至PC、mobile、ipad各有一个站点。 每个站点关联的有站点所在目录及所属的域名。 一、站点表设计…...