使用 systemctl 命令管理 Linux 服务

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本教程将概述 Linux 中的 systemd 初始化系统,以及如何使用 systemctl 命令来管理系统服务。你将了解 systemd 的关键特性、不同类型的单元,以及使用 systemctl 重启服务的常见用例。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/SystemInformationandMonitoringGroup(["System Information and Monitoring"]) linux/SystemInformationandMonitoringGroup -.-> linux/service("Service Managing") subgraph Lab Skills linux/service -.-> lab-398448{{"使用 systemctl 命令管理 Linux 服务"}} end

了解 Linux 中的 systemd 初始化系统

systemd 初始化系统是许多现代 Linux 发行版(包括 Ubuntu 22.04)中的默认初始化进程。它负责管理引导过程、系统服务以及各种其他系统级任务。对于需要在其系统上控制和管理服务的 Linux 系统管理员和开发人员来说,了解 systemd 初始化系统至关重要。

什么是 systemd?

systemd 是一套系统管理守护进程、库和实用工具,旨在提供一种一致且高效的方式来管理引导过程、系统服务和其他系统级任务。它作为传统 System V 初始化系统的替代品被引入,而传统 System V 初始化系统在很长一段时间内都是许多 Linux 发行版中的标准初始化系统。

systemd 的关键特性

systemd 初始化系统的一些关键特性包括:

  • 并行服务启动:systemd 可以并行启动系统服务,这可以显著减少 Linux 系统的启动时间。
  • 依赖管理:systemd 可以管理系统服务之间的依赖关系,确保服务按正确顺序启动。
  • 日志记录和监控:systemd 提供了一个集中式日志系统(journald),并可以监控系统服务的状态。
  • 电源管理:systemd 可以管理与电源相关的任务,例如挂起或休眠系统。
  • 网络管理:systemd 可以管理网络接口和连接,包括对基于网络的服务的支持。

理解 systemd 单元

在 systemd 中,基本的管理单元称为“单元”。单元可以有不同的类型,例如:

  • 服务单元:表示可以启动、停止或重启的系统服务。
  • 目标单元:表示系统状态或目标,例如默认引导目标或图形用户界面目标。
  • 套接字单元:表示系统服务可以使用的网络套接字。
  • 定时器单元:表示基于时间的事件,例如下达的任务或定期作业。

与 systemd 进行交互

与 systemd 初始化系统进行交互的主要工具是 systemctl 命令。使用 systemctl,你可以执行各种操作,例如:

## 启动一个服务
sudo systemctl start my-service.service

## 停止一个服务
sudo systemctl stop my-service.service

## 重启一个服务
sudo systemctl restart my-service.service

## 检查一个服务的状态
systemctl status my-service.service

你还可以使用 systemctl 来启用或禁用服务、管理目标以及执行其他系统级任务。

使用 systemctl 命令控制服务

在基于 systemd 的 Linux 发行版(如 Ubuntu 22.04)中,systemctl 命令是管理系统服务的主要工具。使用 systemctl,你可以启动、停止、重启系统服务并检查其状态,还可以启用或禁用服务以控制系统启动期间它们的行为。

启动、停止和重启服务

要启动服务,请使用 start 子命令:

sudo systemctl start my-service.service

要停止服务,请使用 stop 子命令:

sudo systemctl stop my-service.service

要重启服务,请使用 restart 子命令:

sudo systemctl restart my-service.service

检查服务状态

要检查服务的状态,请使用 status 子命令:

systemctl status my-service.service

这将显示有关该服务的信息,包括其当前状态、正在运行的服务的进程 ID 以及任何最近的日志条目。

启用和禁用服务

要使服务在系统启动时自动启动,请使用 enable 子命令:

sudo systemctl enable my-service.service

要禁止服务在系统启动时自动启动,请使用 disable 子命令:

sudo systemctl disable my-service.service

管理服务依赖项

systemd 还允许你管理服务之间的依赖项。你可以使用 systemctl 命令查看服务的依赖项,以及依赖特定服务的其他服务。

## 查看服务的依赖项
systemctl list-dependencies my-service.service

## 查看依赖某个服务的其他服务
systemctl list-dependencies --reverse my-service.service

通过理解和使用各种 systemctl 命令,你可以在 Ubuntu 22.04 环境中有效地控制和管理系统服务。

使用 systemctl 重启服务的常见用例

对于 Linux 系统管理员和开发人员来说,使用 systemctl 命令重启服务是一项常见任务。在几种常见的情况下,重启服务可能会带来好处甚至是必要的。让我们在 Ubuntu 22.04 系统的背景下探讨其中一些情况。

应用配置更改

当你对服务的配置文件进行更改时,通常需要重启服务以使更改生效。例如,如果你修改了 Apache 网络服务器的配置,可以使用以下命令重启服务:

sudo systemctl restart apache2.service

这将停止当前的 Apache 服务实例,加载新配置,然后再次启动服务。

排查服务问题

如果服务的行为不符合预期或遇到问题,重启服务通常可以解决问题。在排查诸如内存泄漏、进程挂起或其他与服务相关的问题时,这可能会很有用。

sudo systemctl restart my-problematic-service.service

更新服务二进制文件或依赖项

当你更新服务的二进制文件或其依赖项时,重启服务可确保加载并运行新版本。这对于与安全相关的更新尤为重要,因为它可确保服务的最新版本在系统上处于活动并运行状态。

sudo apt update && sudo apt upgrade
sudo systemctl restart my-updated-service.service

处理临时故障

有时,服务可能会遇到临时故障或问题,通过重启服务可以解决这些问题。在这种情况下,重启服务有助于恢复正常运行,而无需进一步排查故障。

sudo systemctl restart my-service.service

通过了解这些使用 systemctl 重启服务的常见用例,你可以更有效地管理和维护 Ubuntu 22.04 系统的服务。

总结

systemd 初始化系统是许多现代 Linux 发行版中的默认初始化进程,负责管理引导过程、系统服务以及各种其他系统级任务。了解如何使用 systemctl 命令来控制和管理系统服务,对 Linux 系统管理员和开发人员而言至关重要。本教程涵盖了 systemd 的关键特性、不同类型的单元,以及使用 systemctl 重启服务的常见用例。通过掌握这些技能,你将能够高效地管理和维护你的 Linux 系统。