Skip to the content.

CentOS 9 实战(6):服务管理与 systemd

欢迎来到《CentOS 9 实战速查手册》专栏的第 6 篇文章。在这里,我们将深入探讨 CentOS 9 中的服务管理与 systemdsystemd 是一种系统和服务管理器,用于在系统启动时启动服务、管理后台进程以及系统状态。掌握 systemd 可以帮助你更高效地管理和维护 CentOS 系统的服务。

1. systemd 简介

systemdLinux 的系统和服务管理器,设计用来取代传统的 SysVinitUpstart 系统初始化程序。systemd 提供了并行启动服务依赖关系管理更详细的日志功能。

1.1 systemd 的优点

1.2 应用场景

2. 服务管理

使用 systemd 管理服务主要通过以下几个常用命令实现:

2.1 启动和停止服务

# 启动服务
sudo systemctl start httpd

# 停止服务
sudo systemctl stop httpd

2.2 重启和重新加载服务

# 重启服务
sudo systemctl restart httpd

# 重新加载服务配置
sudo systemctl reload httpd

2.3 启用和禁用服务

# 启用服务,使其在系统启动时自动启动
sudo systemctl enable httpd

# 禁用服务,使其在系统启动时不自动启动
sudo systemctl disable httpd

2.4 查看服务状态

# 查看服务的当前状态
sudo systemctl status httpd

2.5 查看所有服务

# 列出所有服务及其状态
sudo systemctl list-units --type=service

3. systemd 单元文件

systemd 通过单元文件(Unit File)来管理服务。单元文件描述了服务的启动、停止和依赖关系等信息。单元文件通常存放在 /etc/systemd/system//usr/lib/systemd/system/ 目录下。

3.1 单元文件结构

一个典型的单元文件包含以下几个部分:

[Unit]
Description=Service Description
After=network.target

[Service]
ExecStart=/usr/bin/executable
ExecStop=/usr/bin/stop-command
Restart=on-failure

[Install]
WantedBy=multi-user.target

3.2 具体服务示例

Apache HTTP Server 为例,单元文件定义了 Apache 服务的启动停止重启命令,以及相关的依赖关系。下面是一个简化的 Apache 单元文件:

[Unit]
Description=Apache HTTP Server
After=network.target

[Service]
ExecStart=/usr/sbin/httpd -DFOREGROUND
ExecReload=/usr/sbin/httpd -k graceful
ExecStop=/bin/kill -WINCH ${MAINPID}
Type=forking
PIDFile=/var/run/httpd/httpd.pid

[Install]
WantedBy=multi-user.target

在这个文件中,ExecStart 指定了启动 Apache 的命令,ExecReload 指定了重新加载 Apache 配置的命令,ExecStop 指定了停止 Apache 的命令。

4. 创建自定义服务

创建一个自定义服务的步骤如下:

4.1 实战案例:配置自定义服务

假设我们有一个 Python 脚本 my_script.py,需要将其配置为系统服务。

sudo vim /etc/systemd/system/myscript.service
[Unit]
Description=My Custom Python Script
After=network.target

[Service]
ExecStart=/usr/bin/python3 /path/to/my_script.py
Restart=on-failure
User=myuser
Group=mygroup

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myscript.service
sudo systemctl enable myscript.service
sudo systemctl status myscript.service

通过这些步骤,我们将一个 Python 脚本配置为系统服务,确保其在系统启动时自动运行,并在失败时自动重启。

5. journalctl 日志管理

journalctlsystemd 的日志管理工具,用于查询和显示系统日志。

5.1 查看日志

# 查看所有日志
sudo journalctl

# 查看指定服务的日志
sudo journalctl -u myscript.service

5.2 实时查看日志

# 实时查看日志输出
sudo journalctl -f

5.3 查看系统启动日志

# 查看最近一次启动的日志
sudo journalctl -b

# 查看前一次启动的日志
sudo journalctl -b -1

5.4 过滤日志

# 根据时间过滤日志
sudo journalctl --since "2023-07-01" --until "2023-07-02"

# 根据优先级过滤日志(0-7,数字越小优先级越高)
sudo journalctl -p 3

6. 总结

在这篇文章中,我们介绍了 CentOS 9服务管理与 systemd,包括服务的启动、停止、重启和查看状态,以及如何创建和管理自定义服务。我们还讨论了 journalctl 日志管理工具及其常用命令。通过掌握这些知识,你可以更高效地管理和维护 CentOS 系统的服务。在接下来的文章中,我们将深入探讨 文件系统管理与磁盘配额,敬请期待。