.
SysV init 服务管理
在 Linux 中,rc 是 "run commands" 的缩写。意思是:系统在某个阶段需要执行的一组命令。因此,rc 服务配置文件就是系统启动或服务管理时要执行的脚本。
主要的 rc 服务配置文件与目录
下面是 SysV 风格系统中常见的 rc 脚本:
/etc/rc.local
系统启动完成后执行的脚本
用户可在这里写自定义启动命令
可用于启动私有服务、脚本任务等
/etc/init.d/
每个系统服务一个独立的脚本,例如:
network
ssh
cron
nginx
每个脚本支持 start、stop、restart 等命令
属于 服务脚本的核心目录
/etc/rc.d/(例如 rc0.d、rc1.d、rc3.d、rc5.d)
不同时期执行的服务脚本链接目录
" " 代表不同运行级别:
rc0.d → 关机
rc1.d → 单用户模式
rc3.d → 多用户无图形
rc5.d → 多用户图形界面
目录中有两类符号链接:
SXXname:开机启动 (Start)
KXXname:关闭服务 (Kill)
例如:
S20nginx → 开机时第 20 顺序启动 nginx
K80nginx → 关机时第 80 顺序停止 nginx
这些 rc 文件如何协同工作?
系统选定运行级别(例如进入 runlevel 3)
执行 /etc/rc3.d/ 中所有以 S 开头的脚本
若切换运行级别,则执行 K 开头脚本停止旧服务
/etc/init.d/ 中的脚本提供真正的启动逻辑
rc.local 最后执行用户自定义启动任务
.rc 文件支持的功能
它们让系统能够:
自动启动各种服务
控制服务启动顺序
灵活定制系统启动流程
在没有 systemd 的系统上运行正常服务
尽管如今许多 Linux 发行版使用 systemd,但 rc 风格配置仍然被大量软件、嵌入式系统和旧系统使用。android系统就采用.rc的方式控制native服务的启动。
systemd服务管理
systemd 是现代 Linux 发行版中最主流、最核心的系统与服务管理框架。它取代了早期的 SysV init,提供了更快的启动速度 、更强的服务管理能力和更模块化的系统组件。
systemd 是 Linux 系统在启动时的第一个用户空间进程(PID=1),负责:
初始化系统
启动各类服务
管理系统资源
提供统一的服务控制工具
systemd 的核心特点
服务并行启动,加速开机
systemd 会分析依赖关系,让多个服务并行启动,比 SysV init 快得多。
强大的服务管理体系
通过统一的工具 systemctl 来管理一切服务。
服务依赖与自动重启
可以定义服务间的关系,例如:
网络服务依赖 NetworkManager
数据库依赖文件系统挂载
systemd 可在服务崩溃时自动重启。
日志统一管理(journald)
使用 journalctl 查询系统日志、服务日志,不再依赖分散的 log 文件。
基于 Unit 的模块化结构
systemd 将所有内容抽象为 Unit,如服务、设备、挂载点等。
systemd 的常见 Unit 类型
常见类型包括:
service:最常用,表示"服务"
socket:用于 socket 激活方式启动服务
mount:文件系统挂载
timer:替代 cron 的计时任务
target:表示一组 unit 的集合(类似运行级别)
例如:
sshd.service
docker.service
multi-user.target
systemd 与 SysV init 的区别
systemd 启动更快(并行)
systemd 配置更系统化、更统一
systemd 能自动管理服务崩溃
systemd 有更强大的日志系统
systemd 提供 Timer、Socket 等高级特性