免费网站技术,太原汽车网站建设,网站后台自动退出,公众号app下载简介
Systemd 是许多现代 Linux 发行版提供核心功能的默认服务管理器#xff0c;而 systemctl 是用户与 systemd 服务交互的方式。这使得 systemctl 成为 Linux 管理员工具箱中重要的一部分。
在本文中#xff0c;我们将探讨如何使用 systemctl 在使用 systemd 的系统上执行…简介
Systemd 是许多现代 Linux 发行版提供核心功能的默认服务管理器而 systemctl 是用户与 systemd 服务交互的方式。这使得 systemctl 成为 Linux 管理员工具箱中重要的一部分。
在本文中我们将探讨如何使用 systemctl 在使用 systemd 的系统上执行常见的管理任务。我们将手把手教你如何在 Linux 服务器上使用 systemctl 管理 systemd 服务。
准备工作
服务器准备
必要前提
一个充满求知欲的大脑。一台 Linux 服务器推荐腾讯云、阿里云或雨云等。
我将以 雨云 为例带大家创建一台自己的云服务器以便学习本篇文章的内容。
注册链接 https://rainyun.ivwv.site
创建雨云服务器 以下步骤仅供参考请根据实际需求选择配置。 点击 云产品 → 云服务器 → 立即购买。选择距离你较近的区域以保证低延迟。 按照自己需求选择配置选择Ubuntu 22.04 版本按照自己需求是否预装Docker。最后按照提示进行购买。购买后等待机器部署完毕点击刚刚创建好的服务器进入管理面板找到远程连接相关信息。 我们使用 PowerShell 进行 SSH 远程连接到服务器WinR 打开运行窗口输入 powershell 后点击确定。 输入 ssh root你的服务器IP 例如 ssh root154.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 apache2systemctl 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.serviceRSYSLOG 的单元文件是 syslog.service。
要列出系统上所有已加载的单元请运行命令 systemctl 或 systemctl list-units两个命令执行相同的操作。
输出应类似于 以下是每列的含义
UNIT - systemd 单元的名称LOAD - 指示配置是 loadedsystemd 解析并存储在内存中的配置、error、not-found、bad-setting 还是 masked。ACTIVE - 指示单元的状态。示例状态包括 active、inactive 和 failed。SUB - “子状态”的缩写SUB 值显示有关单元状态的更详细信息。对于服务常见的 SUB 值包括 running、stop 和 exited。你可以使用命令 systemctl --statehelp 查看 systemd 单元的可用子状态。DESCRIPTION - systemd 单元的描述。
默认情况下systemctl 和 systemctl list-units 输出仅显示已加载的单元。要显示所有可用单元请添加 --all 选项。
systemctl list-units --all你还可以使用 --state 和 --type 参数来过滤 systemctl 输出。
例如要查看所有 active 和 loaded 服务单元请使用
systemctl list-units --stateactive --typeservice使用 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]
DescriptionThe 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 选项并以 usernamehostname 格式指定用户名和远程主机地址。
例如要在 remotehost 上以 root 身份运行命令 systemctl status apache2请执行此命令
systemctl status apache2 -H rootremotehost
rootremotehost password:输出应类似于 结尾
通过对如何使用 Linux systemctl 命令的深入了解你可以在许多现代 Linux 系统上高效地管理服务。要了解有关 systemd 和 systemctl 的更多信息请查看 systemd 手册页。
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site 我的博客https://blog.ivwv.site