
本文翻译自我的英文博客,最新修订内容可随时参考:关于Systemd
Linux 系统使用 init 管理启动进程的历史已久(例如通过 sudo /etc/init.d/apache2 start 或 service apache2 start 启动服务),但传统 init 采用串行启动方式,效率较低。为解决这一问题,systemd 应运而生(名称中的 d 是 daemon 的缩写,表明其守护进程管理器的定位)。如今,systemd 已取代 initd,成为主流 Linux 发行版的默认主进程(PID 1)。
systemctl:系统控制核心工具sudo systemctl reboot # 重启系统
sudo systemctl poweroff # 关机
sudo systemctl suspend # 挂起(睡眠) hostnamectl:查看主机信息(架构、硬件、内核、操作系统等) hostnamectl
# 等价于 uname -a timedatectl:管理时区设置 timedatectl set-timezone Asia/Shanghai # 设置时区为上海 loginctl:管理用户会话 loginctl list-sessions # 列出所有登录会话
loginctl list-users # 列出所有用户 systemd 通过 Unit 管理系统资源,共有 12 种单元类型,常见类型包括:
httpd.service) multi-user.target) ssh.socket) systemctl status bluetooth.service # 查看服务状态
systemctl start/stop/restart httpd.service # 启停/重启服务
systemctl enable/disable httpd.service # 设置开机自启/禁用
systemctl reload httpd.service # 重新加载服务配置(不重启进程) /usr/lib/systemd/system/ /etc/systemd/system/(优先级高于系统默认) enabled:已启用(开机自启) disabled:已禁用 static:静态单元(仅作为依赖,不能直接启动) masked:被屏蔽(禁止启动) 修改单元文件后需重新加载配置:
systemctl daemon-reload # 重新加载 systemd 配置
systemctl restart httpd.service # 重启服务使配置生效 Target 本质是一组单元的集合,用于实现特定系统状态(如多用户模式、图形界面模式)。常见 Target 包括:
default.target:默认目标(通常指向 graphical.target 或 multi-user.target) multi-user.target:多用户文本模式(无图形界面) graphical.target:图形界面模式 rescue.target:救援模式(单用户修复环境) 切换 Target:
sudo systemctl isolate multi-user.target # 切换至多用户模式
sudo systemctl reboot --target=rescue.target # 重启并进入救援模式 journalctlsystemd 通过 journalctl 统一管理系统日志(包括内核日志和服务日志),日志配置文件为 /etc/systemd/journald.conf。
journalctl -k # 查看内核日志
journalctl --since "2023-10-01" # 查看从指定日期开始的日志
journalctl -f # 实时追踪日志(类似 tail -f)
journalctl _PID=1 # 查看 PID 为 1 的进程(systemd 自身)日志
journalctl -u httpd.service # 查看指定服务的日志 特性 | systemd | 传统 init(如 SysVinit) |
|---|---|---|
启动方式 | 并行启动多个服务,提升启动速度 | 串行启动,效率较低 |
进程管理 | 基于 PID 1 统一管理所有进程 | 依赖 |
单元类型 | 支持服务、套接字、定时器等 12 种单元 | 仅支持服务和运行级别(runlevel) |
日志系统 | 集成 | 依赖第三方工具(如 |
配置文件 | 使用 | 脚本存放在 |
systemctl enable/disable 管理开机自启,避免手动修改符号链接。 /etc/systemd/system/ 目录,避免覆盖系统默认文件。 journalctl 和 systemctl status 定位服务故障(如 systemctl status httpd.service 查看状态,journalctl -u httpd.service 查看详细日志)。 systemd-analyze 分析启动耗时: systemd-analyze blame # 按耗时排序启动单元
systemd-analyze critical-chain # 查看启动依赖链 systemd 通过单元化管理、并行启动和统一日志系统,彻底改变了 Linux 系统的初始化方式。掌握 systemctl、journalctl 等核心工具及单元配置方法,是高效管理 Linux 系统的关键。如需深入学习 systemd 定时器(Timer Unit)或自定义服务开发,欢迎访问博客获取更多资源:关于Systemd。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。