玩Linux运维,服务进程管理(daemon)是绝对的核心基础。开机速度、服务自启、进程启停、环境切换、定时任务,全都依赖一套服务管理机制。Linux服务管理分为两代:老式 System V init、新式 systemd。很多人学不懂、记不住,是因为只背命令,没搞懂:systemd 就是为了解决 System V 的所有缺陷而生的。今天这篇文章,用极简干货的方式,帮你彻底打通两代机制,适配实操+面试。
一、初代机制:System V init(CentOS6 经典版)
System V 是传统的脚本式服务管理,结构简单,但缺点非常致命,也是后来被 systemd 替代的核心原因。1. 服务脚本存放位置
全部是 bash 脚本,支持自定义修改逻辑,灵活性极高。2. 基础操作命令(固定格式)
✅ 启动:/etc/init.d/daemon start✅ 关闭:/etc/init.d/daemon stop✅ 重启:/etc/init.d/daemon restart✅ 查状态:/etc/init.d/daemon status3. 两种服务运行模式
① 独立启动 stand alone
适用:高频核心服务,如 sshd、nginx、httpd。② 总管托管 super daemon(xinetd/inetd)
平时不启动、不占资源,有端口请求才临时唤醒,请求结束立即销毁。优点:可管控连接、权限、黑白名单;缺点:唤醒有延迟。4. 最大痛点:无自动服务依赖
System V 手动启停服务时,不会自动拉起依赖服务。比如:B服务依赖A服务,只启动B,系统不会自动启A,直接报错失败。5. 七大运行等级 runlevel
Linux 预设 7 个开机级别,对应不同系统环境:6. 开机自启原理 & 命令
系统不直接读 init.d 脚本,而是读取软链接目录:/etc/rc.d/rc[0-6].d/查看状态:chkconfig --list 服务名7. 运行等级切换
二、现代主流:systemd(CentOS7+ / Ubuntu16+)
systemd 是新一代系统服务总管,全盘解决 System V 的所有短板,也是目前生产环境、面试的核心重点。1. 核心优势(对标旧机制缺陷)
✅并行启动:服务同时启动,大幅提速开机(旧版串行逐个启动)✅自动依赖处理:启动子服务,自动前置拉起所有依赖服务✅精细化分类:多类型 unit 单元管理,不再只有两种模式✅群组管理:target 群组一键切换系统运行环境✅兼容旧脚本:完美兼容 /etc/init.d/ 老式服务2. 运维避坑:systemd 局限性
❌ 仅兼容 runlevel 1/3/5,其余等级无对应 target❌ systemctl 语法固定,无法像脚本一样自定义参数❌ 手动直接运行进程启动的服务,systemd 无法识别管控❌ 不支持启动交互,自定义服务必须关闭标准输入交互3. 配置文件目录(优先级从低到高)
1️⃣ /usr/lib/systemd/system/:系统默认配置(禁止修改,升级会覆盖)2️⃣ /run/systemd/system/:运行临时配置,优先级更高3️⃣ /etc/systemd/system/:管理员自定义配置(最高优先级)4. 六大核心 Unit 单元
systemd 把所有系统功能抽象为「单元」,分类清晰:📌.target:服务群组,对标 runlevel 运行等级📌.mount/.automount:文件系统自动挂载📌.path:文件/目录监听触发服务(如打印队列)📌.timer:高精度定时任务(替代 crond)
三、运维高频:systemctl 核心实操命令
所有 systemd 管控,全部统一用 systemctl,是日常敲得最多的命令。1. 服务启停 & 自启管理
systemctl start 服务名 # 启动
systemctl stop 服务名 # 关闭
systemctl restart 服务名 # 重启
systemctl reload 服务名 # 热重载(不中断业务)
systemctl enable 服务名 # 开机自启
systemctl disable 服务名 # 关闭自启
systemctl status 服务名 # 查看详细状态
2. 服务实时运行状态
✅ active(exited):一次性任务,执行完毕退出✅ active(waiting):运行中,等待依赖/事件3. 服务开机自启状态
mask:强制锁定,彻底无法启动(需 unmask 解锁)4. 系统环境 Target 管理
multi-user.target → 文本模式(runlevel 3)graphical.target → 图形模式(runlevel 5)systemctl get-default # 查看默认开机环境
systemctl set-default 目标.target # 设置默认环境
systemctl isolate 目标.target # 实时切换,无需重启
5. 电源、休眠、救援模式
systemctl poweroff # 关机
systemctl reboot # 重启
systemctl suspend # 待机(内存保活、秒唤醒)
systemctl hibernate # 休眠(落盘断电)
systemctl rescue # 救援模式
systemctl emergency # 紧急修复模式
6. 服务依赖排查
systemctl list-dependencies 服务名 # 查看依赖的服务
systemctl list-dependencies 服务名 --reverse # 反向查谁依赖它
四、进阶核心:systemd 配置文件详解
自定义配置统一放在:/etc/systemd/system/服务名.service.d/*.conf1. 配置三大模块(必考)
【Unit】依赖与描述
【Service】运行规则
forking:父启子、父退出,子常驻(传统服务通用)ExecStartPre/ExecStart/ExecStartPost:启动前/中/后执行命令【Install】自启挂载
WantedBy:挂载到指定 target,实现开机自启2. 关键命令区分(高频坑点)
刷新 systemd 系统缓存,让系统识别新的服务配置 服务名让业务程序热加载自身配置,不重启服务、不中断业务
五、高阶定时:systemd timer 替代 crond
systemd timer 是新一代定时方案,比 crond精度更高、日志更全、排错更简单。1. 优缺点
2. 使用前提
2. 成对配置:xxx.service(任务)+ xxx.timer(定时规则)3. 常用定时参数
OnUnitActiveSec:服务启动后间隔循环执行4. 极简定时示例
六、全文总结:两代机制核心对比
1️⃣启动方式:System V 串行慢启动|systemd 并行极速启动2️⃣依赖管理:System V 无自动依赖|systemd 自动解析拉起依赖3️⃣服务分类:System V 仅2类|systemd 多unit精细化管理4️⃣环境管理:System V 依赖runlevel|systemd 依托target群组5️⃣定时能力:依赖crond、精度差|原生timer、高精度可追溯6️⃣运维体验:脚本繁琐、不统一|systemctl统一命令、高效易排障systemd 是目前 Linux 运维的绝对核心,吃透它,搞定开机、服务、定时绝大多数场景!