Linux systemd 系统管理:systemctl 控制服务与守护进程
Linux systemd 系统管理:systemctl 控制服务与守护进程
系统启动过程
Linux 系统的启动过程遵循以下步骤:
- 开机自检:计算机启动后,BIOS/UEFI 进行硬件自检,确认硬件设备正常
- MBR 引导:从指定的启动设备读取主引导记录 (MBR),启动引导程序
- GRUB 菜单:显示引导菜单,用户可选择要启动的操作系统内核
- 加载 Linux 内核:内核被加载到内存中并开始初始化
- 运行 systemd:启动 systemd 进程 (PID=1),作为所有进程的父进程,负责后续系统初始化
一、systemd 简介
systemd 是 Linux 系统的系统和服务管理器,具有以下特点:
- 采用并行启动方式,提高系统启动速度
- 负责管理系统启动和服务器进程
- 能够在启动时和运行中的系统上激活系统资源、服务器守护进程和其他进程
守护进程是指在后台等待或运行以执行各种任务的程序,一个或多个守护进程共同负责系统上的某个服务。
2、Systemd 的新功能
- 并行化功能:可以同时启动多个服务,提高系统启动速度
- 按需启动守护进程:不需要预先启动单独的服务,可在需要时再启动
- 自动服务依赖关系管理:能够处理服务间的依赖关系,例如在网络不可用时不启动依赖网络的服务,防止长时间超时
- 利用 Linux 控制组:通过控制组追踪相关进程,便于管理和监控
二、systemctl 管理 systemd 单元
1、单元类型
使用systemctl -t help
可以查看所有单元类型:
[root@zhang3 ~]# systemctl -t help
Available unit types:
service
socket
busname
target
snapshot
device
mount
automount
swap
timer
path
slice
scope
2、列出单元
systemctl
:查看系统启动时所有单元的状态systemctl list-unit-files
:查看系统中所有单元及当前状态systemctl --type=service
:只显示服务单元类型的状态systemctl list-units --type=service
:列出所有已加载且处于活动状态的服务单元systemctl list-unit-files | grep service
:筛选出所有服务单元
查询服务状态的命令:
systemctl is-active 服务名
:查询具体某个服务是否处于激活状态systemctl is-enabled 服务名
:查询具体某个服务下次启动的状态
3、查看服务状态
systemctl status chronyd
:以chronyd服务为例,查看 chronyd 服务的详细状态,包括运行状态、进程 ID、最近日志等信息
[root@zhang3 system]# systemctl status chronyd
● chronyd.service - NTP client/serverLoaded: loaded (/usr/lib/systemd/system/chronyd.service; disabled; vendor preset: enabled)Active: active (running) since 三 2025-08-06 15:15:53 CST; 24min agoDocs: man:chronyd(8)man:chrony.conf(5)Process: 10975 ExecStartPost=/usr/libexec/chrony-helper update-daemon (code=exited, status=0/SUCCESS)Process: 10971 ExecStart=/usr/sbin/chronyd $OPTIONS (code=exited, status=0/SUCCESS)Main PID: 10973 (chronyd)Tasks: 1CGroup: /system.slice/chronyd.service└─10973 /usr/sbin/chronyd8月 06 15:15:53 zhang3.example.com systemd[1]: Starting NTP client/server...
8月 06 15:15:53 zhang3.example.com chronyd[10973]: chronyd version 3.2 startin...
Hint: Some lines were ellipsized, use -l to show in full.
4、启动和停止服务
systemctl start chronyd
:启动 chronyd 服务systemctl stop chronyd
:停止 chronyd 服务systemctl restart chronyd
:重新启动 chronyd 服务systemctl reload chronyd
:重新加载 chronyd 服务的配置文件
示例说明:
systemctl restart NetworkManager
:重启网络管理服务,过程是先关闭服务,再重新加载新的配置文件,最后启动服务systemctl reload NetworkManager
:重新加载网络管理服务的配置文件,不会断开服务,直接应用新配置
5、启用和禁用服务
在系统启动时,服务是否会自动启动取决于 systemd 配置目录中是否存在该服务的链接文件:
- 启用服务:
systemctl enable chronyd
,会在 systemd 的配置目录中创建该服务的链接文件,使服务在系统启动时自动启动 - 禁用服务:
systemctl disable chronyd
,会删除 systemd 配置目录中该服务的链接文件,使服务在系统启动时不会自动启动
6、屏蔽服务
系统中有些服务同时启动可能产生冲突,为了防止管理员意外启动这些冲突的服务,可以屏蔽服务:
- 屏蔽服务:
systemctl mask chronyd
- 解除屏蔽:
systemctl unmask chronyd
屏蔽服务会创建一个指向 /dev/null 的符号链接,阻止服务被启动,比禁用服务更严格。
通过上述命令和功能,systemd 提供了一套完整的系统和服务管理机制,使得管理员能够方便地控制系统服务的生命周期和运行状态。