Linux systemd 服务管理器详解
Linux systemd 详解一、什么是 systemdsystemd 是 Linux 系统的初始化系统和服务管理器是目前大多数主流 Linux 发行版如 CentOS/RHEL 7、Ubuntu 15、Debian 8默认使用的 init 程序。核心特点并行启动相比传统的 SysVinit串行启动systemd 支持并行启动服务大幅提升启动速度按需启动不立即启动所有服务只在需要时才启动依赖管理明确定义服务之间的依赖关系统一管理不仅管理系统服务还管理挂载点、套接字、设备等二、核心概念1. Unit单元systemd 中所有资源都被称为 Unit主要类型包括类型扩展名作用Service.service系统服务Socket.socket进程间通信套接字Target.target一组 Unit 的集合类似运行级别Mount.mount文件系统挂载点Device.device内核识别的设备Timer.timer定时器替代 cron2. Target目标替代传统的运行级别runlevel运行级别Target描述0runlevel0.target / poweroff.target关机1runlevel1.target / rescue.target单用户模式2-4runlevel2-4.target / multi-user.target多用户非图形界面5runlevel5.target / graphical.target多用户图形界面6runlevel6.target / reboot.target重启三、常用命令服务管理# 启动服务systemctl start service_name# 停止服务systemctl stop service_name# 重启服务systemctl restart service_name# 重新加载配置不中断服务systemctl reload service_name# 查看服务状态systemctl status service_name# 启用开机自启systemctlenableservice_name# 禁用开机自启systemctl disable service_name# 检查是否开机自启systemctl is-enabled service_name系统状态查看# 列出所有运行中服务systemctl list-units# 列出所有服务包括未启动systemctl list-unit-files# 查看系统启动耗时systemd-analyze# 查看每个服务启动耗时systemd-analyze blame# 查看依赖关系systemd-analyze critical-chain系统控制# 重启系统systemctlreboot# 关机systemctl poweroff# 进入救援模式systemctl rescue# 挂起systemctlsuspend四、编写 Service Unit 文件1. 文件位置系统服务/usr/lib/systemd/system/用户自定义/etc/systemd/system/优先级更高2. Unit 文件结构[Unit] DescriptionMy Custom Service Documentationhttp://example.com Afternetwork.target mysql.service Requiresmysql.service Beforenginx.service [Service] Typesimple Usermyuser Groupmygroup WorkingDirectory/opt/myapp EnvironmentFile/etc/myapp/config ExecStart/usr/bin/python3 /opt/myapp/app.py ExecReload/bin/kill -HUP $MAINPID ExecStop/bin/kill -TERM $MAINPID Restarton-failure RestartSec5 [Install] WantedBymulti-user.target Aliasmyapp.service3. Service 类型详解Type说明simple默认值主进程直接启动forking程序会 fork 子进程传统 daemononeshot执行一次就退出常用于初始化脚本dbus需要 D-Bus 就绪后才启动notify启动完成后会发送通知五、实战案例案例1创建 Nginx 服务# 创建服务文件sudovim/etc/systemd/system/nginx.service[Unit] DescriptionThe NGINX HTTP and reverse proxy server Afternetwork.target remote-fs.target nss-lookup.target [Service] Typeforking PIDFile/run/nginx.pid ExecStartPre/usr/sbin/nginx -t ExecStart/usr/sbin/nginx ExecReload/usr/sbin/nginx -s reload ExecStop/bin/kill -s QUIT $MAINPID PrivateTmptrue [Install] WantedBymulti-user.target# 重新加载配置sudosystemctl daemon-reload# 启动服务sudosystemctl start nginx# 设置开机自启sudosystemctlenablenginx案例2Python Web 服务sudovim/etc/systemd/system/flaskapp.service[Unit] DescriptionFlask Web Application Afternetwork.target [Service] Userwww-data Groupwww-data WorkingDirectory/var/www/flaskapp EnvironmentPATH/var/www/flaskapp/venv/bin EnvironmentFile/etc/flaskapp/env ExecStart/var/www/flaskapp/venv/bin/gunicorn -w 4 -b 127.0.0.1:8000 app:app Restartalways RestartSec10 [Install] WantedBymulti-user.target六、日志管理journalctlsystemd 自带日志系统 journald统一管理所有日志。常用 journalctl 命令# 查看所有日志journalctl# 查看指定服务日志journalctl -u nginx.service# 实时追踪日志journalctl -u nginx.service -f# 查看最近30分钟日志journalctl --since30 min ago# 查看今天日志journalctl --since today# 查看指定时间段journalctl --since2023-01-01--until2023-01-02# 查看内核日志journalctl -k# 查看本次启动后的日志journalctl -b七、定时任务Timersystemd Timer 可以替代传统的 cron 定时任务。示例每天凌晨备份数据库备份脚本/usr/local/bin/backup.sh#!/bin/bashtar-czf /backup/db_$(date\%Y\%m\%d).tar.gz /var/lib/mysqlService 文件/etc/systemd/system/backup.service[Unit] DescriptionDatabase backup [Service] Typeoneshot ExecStart/usr/local/bin/backup.sh UserrootTimer 文件/etc/systemd/system/backup.timer[Unit] DescriptionRun backup daily [Timer] OnCalendardaily Persistenttrue [Install] WantedBytimers.target启用定时器chmodx /usr/local/bin/backup.shsudosystemctl daemon-reloadsudosystemctlenablebackup.timersudosystemctl start backup.timer八、高级技巧1. 服务依赖关系[Unit] # 在什么之后启动 Afternetwork.target # 需要什么服务 Requiresmysql.service # 推荐依赖不影响启动 Wantsredis.service # 冲突关系 Conflictsapache2.service2. 资源限制[Service] # CPU 限制 CPUQuota50% # 内存限制 MemoryLimit1G # 打开文件数限制 LimitNOFILE65536 # 进程数限制 LimitNPROC10243. 环境变量[Service] # 单个设置 EnvironmentENVproduction EnvironmentPORT8080 # 从文件加载 EnvironmentFile/etc/myapp/env EnvironmentFile-/etc/myapp/env-local # 加-表示文件不存在也不报错九、故障排查常见问题排查步骤查看服务状态systemctl status service_name查看详细日志journalctl -u service_name -n50--no-pager检查 Unit 文件语法systemd-analyze verify /etc/systemd/system/xxx.service查看依赖问题systemctl list-dependencies service_name重新加载配置systemctl daemon-reload十、与传统 init 对比特性SysVinitsystemd启动方式串行并行服务依赖数字编号显式声明日志管理syslogjournald配置语法Shell 脚本声明式 INI动态管理不支持支持socket/D-Bus 激活资源控制不支持支持 cgroups总结systemd 作为现代 Linux 系统的核心组件提供了一套完整的系统和服务管理方案。掌握 systemd 不仅能帮助您更好地管理服务还能深入理解 Linux 系统的运作机制。从日常的服务启停到复杂的服务编排systemd 都能提供强大的支持。

相关新闻

Nodejs+vue3居民小区物业管理系统

Nodejs+vue3居民小区物业管理系统

文章目录技术架构设计核心功能模块性能优化策略安全防护措施部署与监控扩展性设计--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术架构设计 Node.js 作为后端服务,采用 Express 或 Koa 框架提供 RE…

2026/5/17 5:20:28 阅读更多 →
nodejs+vue3基于微信小程序的技术编程语言学习指南应用

nodejs+vue3基于微信小程序的技术编程语言学习指南应用

文章目录技术架构设计后端技术栈前端技术栈数据交互方案开发工具链性能优化策略安全防护措施--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术架构设计 Node.js 作为后端服务,提供 RESTful API 接口…

2026/7/3 3:31:17 阅读更多 →
nodejs+vue3基于微信小程序的宠物之家健康用品销售系统 宠物用品商城系统

nodejs+vue3基于微信小程序的宠物之家健康用品销售系统 宠物用品商城系统

文章目录技术架构设计核心功能模块微信小程序集成要点前后端交互设计性能优化策略安全与运维扩展性设计示例代码片段(Node.js Vue3)--nodejs技术栈--结论源码文档获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!技术架构…

2026/5/17 5:20:27 阅读更多 →

最新新闻

大模型数据准备实战:高信噪比语料构建七步法

大模型数据准备实战:高信噪比语料构建七步法

1. 为什么说“数据准备”才是训练定制大模型时最耗神、也最值钱的环节你有没有过这种体验:花两周时间调参、换架构、折腾分布式训练,最后发现模型在业务场景里答非所问,逻辑混乱,甚至编造事实?我带过三支不同行业的LLM…

2026/7/4 18:13:16 阅读更多 →
遗传算法优化大模型参数:自动化调参实战

遗传算法优化大模型参数:自动化调参实战

1. 项目概述:当遗传算法遇上大模型去年在优化一个客服对话系统时,我花了整整两周手工调整prompt模板和模型参数。直到某天深夜调试时突然想到:为什么不让算法自己寻找最优解?这就是GA(遗传算法)大模型组合的…

2026/7/4 18:11:15 阅读更多 →
机器学习新手必学的5大核心领域进阶地图

机器学习新手必学的5大核心领域进阶地图

1. 这不是一份“排行榜”,而是一张新手进阶地图:为什么初学者必须先搞懂这5个机器学习领域你点开这篇博客,大概率正站在机器学习的入口处——手头可能刚装好Python,跑通了第一个print("Hello, ML!"),但面对“…

2026/7/4 18:11:15 阅读更多 →
AI十年演进路径:从边缘智能到可信AI的工程化落地

AI十年演进路径:从边缘智能到可信AI的工程化落地

1. 这不是预言,而是技术演进路径的推演:我们真正该关注的AI十年图景你点开这篇文章,大概率不是为了听一句“AI会改变世界”——这句话从2012年AlexNet横空出世那天起,就被重复了上万遍。我做AI工程落地和系统架构设计整整11年&…

2026/7/4 18:07:14 阅读更多 →
Spring Boot + MyBatis + Vue 全栈毕设实战:从零到部署的完整项目开发指南

Spring Boot + MyBatis + Vue 全栈毕设实战:从零到部署的完整项目开发指南

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 计算机专业的学生在完成毕业设计或课程设计时,常常面临一个核心矛盾:既要理解项目背后的技术原理&#xff0…

2026/7/4 18:07:14 阅读更多 →
从零实现大语言模型:Happy-LLM开源教程带你手写LLaMA2

从零实现大语言模型:Happy-LLM开源教程带你手写LLaMA2

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Claude 随心用,限时 5 折。 👉 点击领海量免费额度 最近在社区里看到很多开发者,尤其是刚接触AI大模型的朋友,普遍反映一个痛点:大模型相关的资料要…

2026/7/4 18:05:14 阅读更多 →

日新闻

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 发布:关键安全修复版本,多项问题得到解决

Memcached 1.6.43 正式发布,这是一个关键的安全修复版本,修复了多个方面的问题,还对部分功能进行了优化。 安全修复亮点 此次发布在安全修复上表现突出。binprot 避免了项目引用计数溢出,mcmc 因安全问题提升了上游版本号&#xf…

2026/7/4 0:04:29 阅读更多 →
终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案

终极指南:使用HMCL启动器跨平台畅玩Minecraft的完整解决方案 【免费下载链接】HMCL A Minecraft Launcher which is multi-functional, cross-platform and popular 项目地址: https://gitcode.com/gh_mirrors/hm/HMCL HMCL(Hello Minecraft! Lau…

2026/7/4 0:06:29 阅读更多 →
KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

KMX63与PIC18F66K40在嵌入式HMI中的硬件协同与低功耗设计

1. KMX63与PIC18F66K40的硬件协同架构解析KMX63作为一款三轴加速度计和磁力计组合传感器,与PIC18F66K40微控制器的搭配堪称嵌入式HMI开发的黄金组合。这套硬件组合的核心优势在于KMX63提供的高精度运动感知能力与PIC18F66K40强大的信号处理能力形成了完美互补。KMX6…

2026/7/4 0:06:29 阅读更多 →

周新闻

月新闻