Linux 系统中的 systemd 是一个现代的初始化系统(init system)和服务管理器,用于替代传统的 SysVinit 和 Upstart。它负责系统的启动、服务管理、进程监控、日志记录、挂载文件系统等核心功能,并广泛应用于大多数主流 Linux 发行版(如 Ubuntu、Fedora、CentOS 等)。
systemd 的核心功能
- 系统初始化
作为系统的第一个进程(PID=1),systemd 负责启动其他所有进程和服务,并管理它们的依赖关系。 - 服务管理
通过systemctl
命令管理服务(启动、停止、重启、状态查看、开机自启等)。 - 并行启动
支持服务的并行启动,显著缩短系统启动时间。 - 依赖管理
自动处理服务之间的依赖关系,确保正确的启动顺序。 - 日志管理
通过journald
(systemd 的日志组件)集中管理日志,支持结构化查询。 - 资源监控
可设置资源限制(如 CPU、内存)和进程监控(自动重启崩溃的服务)。 - 其他功能
管理定时任务(替代cron
)、挂载文件系统、管理网络配置等。
systemd 的配置文件目录
systemd 的配置文件(称为 单元文件,Unit Files)分布在多个标准目录中,优先级从高到低依次为:
- 系统管理员自定义配置
/etc/systemd/system/
存放系统管理员手动添加或覆盖的单元文件(优先级最高)。
- 运行时动态配置
/run/systemd/system/
存放系统运行时生成的临时单元文件(重启后失效)。
- 软件包安装的默认配置
/usr/lib/systemd/system/
存放系统或软件包(如通过apt
或yum
安装)提供的默认单元文件。
- 用户级配置(可选)
~/.config/systemd/user/
存放当前用户的单元文件(仅影响用户级服务)。
单元文件类型
单元文件以 .service
、.socket
、.timer
等后缀区分类型,例如:
.service
:定义服务(如 Nginx、MySQL)。.target
:定义系统启动目标(类似 SysVinit 的运行级别)。.timer
:替代cron
的定时任务。.mount
:定义文件系统挂载点。
- 管理服务
systemctl start nginx.service # 启动服务
systemctl stop nginx.service # 停止服务
systemctl enable nginx.service # 启用开机自启
systemctl status nginx.service # 查看状态 - 查看单元文件路径
systemctl show nginx.service -p FragmentPath
# 输出示例:FragmentPath=/usr/lib/systemd/system/nginx.service - 重载配置
修改单元文件后需执行:
systemctl daemon-reload
总结
- systemd 是 Linux 的核心初始化系统和服务管理工具。
- 配置文件位于
/etc/systemd/system/
(自定义)、/usr/lib/systemd/system/
(默认)等目录。 - 使用
systemctl
命令管理服务,通过单元文件定义服务行为。