Linux 中 systemd 和 systemctl 是什么?
1. systemd
- 定义:
systemd
是 Linux 系统中的系统和服务管理器,负责初始化系统和管理系统进程。 - 用途:取代传统的 SysV 和 Upstart 初始化系统,用于管理系统启动流程以及守护进程。
主要功能:
- 系统初始化:在系统启动时,
systemd
作为第一个进程启动(PID 1),加载并初始化系统。 - 服务管理:通过“单元” (unit) 的概念,将服务、挂载点、设备等抽象为可管理的单元。
- 并行启动:
systemd
支持服务并行启动,能够加速系统的启动过程。 - 依赖管理:能够处理复杂的服务依赖关系,确保按需启动服务。
- 日志管理:与
journald
集成,用于记录系统日志和服务日志。
- 系统初始化:在系统启动时,
单元类型:
- Service Unit:管理系统服务(如
*.service
文件)。 - Target Unit:定义一组服务的启动顺序(类似于运行级别)。
- Mount Unit:管理文件系统挂载点(如
*.mount
文件)。 - 其他单元:包括
socket
、timer
、device
等类型。
- Service Unit:管理系统服务(如
2. systemctl
- 定义:
systemctl
是systemd
提供的命令行工具,用于管理和控制systemd
管理的各个单元。 常用操作:
- 启动服务:
systemctl start <unit>
,如systemctl start nginx.service
- 停止服务:
systemctl stop <unit>
- 重启服务:
systemctl restart <unit>
- 启用服务:
systemctl enable <unit>
(开机自动启动) - 禁用服务:
systemctl disable <unit>
- 查看服务状态:
systemctl status <unit>
- 查看所有正在运行的服务:
systemctl list-units --type=service
- 启动服务:
常见用法:
- 检查单元是否运行:
systemctl is-active <unit>
- 检查单元是否已启用:
systemctl is-enabled <unit>
- 查看服务日志:可以配合
journalctl
命令查看日志,如journalctl -u <unit>
- 检查单元是否运行:
总结
systemd
是 Linux 系统的核心服务管理器,负责初始化、启动和管理系统服务。systemctl
是systemd
的控制工具,用于与系统的各类服务和单元进行交互,便于用户查看、控制和管理服务的状态和行为。
这种设计使 Linux 系统的服务管理更高效、模块化和易于维护。