在现代 Linux 系统中,systemd 已成为主流的初始化系统和服务管理器。对于使用 RockyLinux 的用户来说,掌握如何编写和管理 systemd 单元文件 是一项非常实用的技能。无论你是系统管理员还是刚入门的 Linux 小白,本文将手把手教你如何创建、配置和启用一个自定义的 systemd 服务。

什么是 systemd 单元文件?
systemd 单元文件 是用于定义系统资源(如服务、挂载点、定时任务等)的配置文件。其中最常见的是
.service类型的单元文件,用于控制后台服务(daemon)。这些文件通常存放在
/etc/systemd/system/(用户自定义)或
/usr/lib/systemd/system/(系统预装)目录中。
在本教程中,我们将围绕 RockyLinux systemd单元文件 编写一个简单的 Web 服务示例,并将其注册为系统服务。
准备工作
确保你已安装 RockyLinux(8 或 9 版本均可),并拥有 root 权限或 sudo 权限。我们还将使用一个简单的 Python 脚本来模拟 Web 服务:
将上述脚本保存为 #!/usr/bin/env python3# 文件路径:/opt/mywebserver/app.pyfrom http.server import HTTPServer, SimpleHTTPRequestHandlerif __name__ == "__main__": server = HTTPServer(('0.0.0.0', 8080), SimpleHTTPRequestHandler) print("Starting web server on port 8080...") server.serve_forever()/opt/mywebserver/app.py
,并赋予执行权限:
现在,我们来创建一个名为 sudo mkdir -p /opt/mywebserversudo nano /opt/mywebserver/app.pysudo chmod +x /opt/mywebserver/app.py编写 systemd 单元文件
mywebserver.service
的 systemd 单元文件。该文件将告诉系统如何启动、停止和监控我们的 Python Web 服务。
使用你喜欢的编辑器创建单元文件:
在文件中输入以下内容: 保存文件后,我们需要重新加载 systemd 配置,然后启用并启动服务: 检查服务状态: 如果一切正常,你应该看到服务处于 “active (running)” 状态。此时,访问 如果你的服务无法启动,可以使用以下命令查看详细日志: 这会实时输出服务日志,帮助你定位问题(如路径错误、权限不足等)。 通过本教程,你已经学会了如何在 RockyLinux 系统中编写和管理 systemd 单元文件。这项技能对于 Linux服务自定义 和 RockyLinux系统管理 至关重要。无论是部署 Web 应用、数据库,还是自动化脚本,你都可以通过 systemd 实现可靠、可监控、可自启的服务管理。 记住,良好的单元文件应包含清晰的描述、合理的用户权限、自动重启机制以及正确的依赖关系。希望这篇教程能帮助你迈出 RockyLinux systemd单元文件 编写的坚实第一步!sudo nano /etc/systemd/system/mywebserver.service[Unit]Description=My Custom Web Server on RockyLinuxAfter=network.target[Service]Type=simpleUser=nobodyWorkingDirectory=/opt/mywebserverExecStart=/usr/bin/python3 /opt/mywebserver/app.pyRestart=alwaysRestartSec=10[Install]WantedBy=multi-user.target字段说明:
[Unit]:定义服务的元信息。 Description
:服务描述,便于识别。 After
:指定本服务在网络启动之后运行。 [Service]:定义服务行为。 Type=simple
:表示主进程就是 ExecStart 启动的进程。 User
:以 nobody 用户身份运行(更安全)。 WorkingDirectory
:工作目录。 ExecStart
:启动命令。 Restart=always
:服务崩溃时自动重启。 RestartSec=10
:重启前等待 10 秒。 [Install]:定义启用服务时的行为。 WantedBy=multi-user.target
:表示该服务属于多用户文本模式,开机自启时会加载。 启用并启动服务
# 重新加载 systemd 配置sudo systemctl daemon-reload# 启用服务(开机自启)sudo systemctl enable mywebserver.service# 启动服务sudo systemctl start mywebserver.servicesudo systemctl status mywebserver.servicehttp://你的服务器IP:8080
即可看到 Python 内置 HTTP 服务器返回的目录列表。常见问题与调试技巧
sudo journalctl -u mywebserver.service -f总结
