尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

Linux 系统服务管理:systemd 与 systemct

Linux 系统服务管理:systemd 与 systemct 文章目录1. 什么是 systemd 与 systemctl2. 核心服务管理命令systemctl2.1 常用核心命令速查表2.2 详解 systemctl status 诊断输出3. 查看服务日志journalctl4. 实战将自己的程序注册为 systemd 服务4.1 配置文件存放位置4.2 编写 .service 模板4.3 部署并启用自定义服务5. 总结在现代 Linux 系统如 Ubuntu、Debian、CentOS 7、Rocky Linux中systemd是默认的系统与服务管理器Init 软件。它接管了系统启动、服务Daemon生命周期管理、日志收集等核心功能。掌握 systemd 的核心工具systemctl不仅能帮助你管理常见的官方服务如 Nginx、MySQL、Docker还能让你轻松把自己的程序Node.js、Python、Go 等注册为开机自启、崩溃自动重启的后台系统服务。1. 什么是 systemd 与 systemctlsystemdLinux 开机后启动的第一个进程PID 1也是所有其他进程的父进程。它通过并行启动服务大幅缩短了系统开机时间。systemctl用户与 systemd 进行交互的主要命令行工具专门用于控制服务的启动、停止、重启、开机自启和状态查看。Unit单元systemd 管理的对象统称为 Unit。最常见的就是Service Unit以.service结尾的服务单元。2. 核心服务管理命令systemctl在平时运维和部署中大部分场景都在使用systemctl。操作语法通常为systemctl 操作 服务名。2.1 常用核心命令速查表操作需求命令示例说明启动服务sudo systemctl start nginx立即启动服务对当前运行环境生效停止服务sudo systemctl stop nginx立即停止服务重启服务sudo systemctl restart nginx强制重启服务平滑重载sudo systemctl reload nginx推荐。不中断服务的情况下重新加载配置文件查看服务状态systemctl status nginx查看服务是否正常运行、PID 及最新日志开机自启sudo systemctl enable nginx设置服务在开机时自动启动禁止开机自启sudo systemctl disable nginx取消服务的开机自启开机自启并立即启动sudo systemctl enable --now nginx组合技一步完成 enable 和 start检查是否开机自启systemctl is-enabled nginx输出enabled或disabled2.2 详解systemctl status诊断输出当服务运行异常时systemctl status是排错的第一现场● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Sat 2026-08-29 09:30:00 CST; 20min ago Docs: man:nginx(8) Main PID: 12345 (nginx) Tasks: 3 (limit: 4621) Memory: 5.2M CPU: 12ms CGroup: /system.slice/nginx.service ├─12345 nginx: master process /usr/sbin/nginx └─12346 nginx: worker processLoaded显示配置文件的路径以及是否设置了开机自启enabled/disabled。Active显示当前的运行状态。active (running)服务正在正常运行。inactive (dead)服务已停止。failed服务启动失败或崩溃。Main PID主进程的 PID。3. 查看服务日志journalctlsystemd 内置了强大的日志管理组件systemd-journald所有由 systemd 管理的服务输出的日志包含 stdout/stderr都会被自动收集。# 1. 查看指定服务的全部历史日志sudojournalctl-unginx# 2. 实时追踪某个服务的最新日志类似 tail -fsudojournalctl-funginx# 3. 查看最近 50 行日志sudojournalctl-unginx-n50# 4. 查看自本次系统开机以来的该服务日志sudojournalctl-unginx-b4. 实战将自己的程序注册为 systemd 服务假设你写了一个 Node.js / Python / Go 的 Web 应用配置文件路径为/home/alex/app/server.js。如果不配置系统服务一旦命令行终端关闭或服务器重启应用就会停止。通过配置.service配置文件可以实现后台运行 开机自启 崩溃自动重启。4.1 配置文件存放位置systemd 服务配置文件分为两类系统/软件包默认配置/lib/systemd/system/或/usr/lib/systemd/system/管理员自定义配置优先使用/etc/systemd/system/4.2 编写.service模板新建服务配置文件/etc/systemd/system/myapp.service[Unit] DescriptionMy Custom Node.js Application # 确保在网络服务启动完成后再启动本服务 Afternetwork.target [Service] # 服务类型simple 表示 ExecStart 指定的进程为主进程 Typesimple # 运行该服务的用户与组出于安全考虑切忌用 root Useralex Groupdevteam # 程序的工作目录 WorkingDirectory/home/alex/app # 启动服务的具体命令建议写绝对路径 ExecStart/usr/bin/node /home/alex/app/server.js # 崩溃重启策略always 表示无论正常退出还是崩溃总是自动重启 Restartalways # 每次重启之间的间隔延迟单位秒 RestartSec5s # 环境变量设置 EnvironmentNODE_ENVproduction PORT3000 [Install] # 规定该服务在系统的多用户模式Multi-User Target下生效 WantedBymulti-user.target4.3 部署并启用自定义服务编写完.service文件后遵循以下标准四步法# 第一步重载 systemd 配置让系统识别新的 service 文件sudosystemctl daemon-reload# 第二步启动服务sudosystemctl start myapp# 第三步检查服务运行状态systemctl status myapp# 第四步设置开机自启sudosystemctlenablemyapp5. 总结统一的命令体验无论是官方软件还是自己编写的服务一律使用systemctl start/stop/status/restart管理。daemon-reload是关键只要修改或新建了/etc/systemd/system/下的.service文件**必须先执行sudo systemctl daemon-reload**才能生效。安全运行编写自定义服务时Service段落中显式配置User非root用户遵循最小权限原则。 感谢阅读想了解更多 我的博客网站 | 记录思考分享干货 我的个人主页 | 关于我、开源项目
返回列表