Orange的运维学习日记--13.Linux服务管理
Orange的运维学习日记–13.Linux服务管理
systemd 介绍
系统启动管理进程
- CentOS 5 使用 SysV init 串行启动,速度最慢,无并行依赖
- CentOS 6 使用 Upstart,可并行启动无依赖进程,依赖进程串行启动
- CentOS 7 使用 systemd 并行标记所有进程,真正运行时才启动,实现最快启动速度
基本概念
- 服务:从业务角度命名,例如 web 服务、数据库服务
- 守护进程(daemon):在后台提供服务的进程,如 httpd、sshd 等
示例:安装并启动 Apache(httpd)
# 安装软件包
yum install -y httpd# 修改配置文件,设置 ServerName
vim /etc/httpd/conf/httpd.conf
# 取消 ServerName 注释并赋值
ServerName centos7.laoma.cloud:80# 启动 httpd 服务
systemctl start httpd# 查看守护进程
ps axf | grep httpd
上述输出中,PID 为 httpd 服务的守护进程
systemd 架构
systemd 以 PID 1 方式运行,负责:
- unit 加载与依赖解析
- cgroups 资源管理
- journald 日志收集
- socket 激活与 D-Bus 通信
- timer 事件调度
unit 类型
systemd 通过不同后缀区分各种对象
- Service(.service):定义系统服务
- Socket(.socket):标识进程间通信的 socket
- Target(.target):模拟运行级别
- Timer(.timer):计划任务
- Device(.device):内核设备
- Mount(.mount):文件系统挂载点
- Snapshot(.snapshot):系统快照
- Swap(.swap):交换分区
- Automount(.automount):自动挂载点
- Path(.path):基于文件系统事件触发
- Slice(.slice):cgroups 资源切片
查看 unit 列表信息
列出已加载并 active 的 units
systemctl list-units
按类型列出 units
# 列出 timer 类型
systemctl list-units -t timer
列出所有 unit 文件(包括未加载)
systemctl list-unit-files
查看失败的服务
systemctl --failed --type service
查看单个 unit 信息
systemctl status sshd.service
输出示例
● sshd.service - OpenSSH server daemonLoaded: loaded (/usr/lib/systemd/system/sshd.service; enabled)Active: active (running) since 三 2022-11-09 08:45:45 CST; 5h 50min agoDocs: man:sshd(8) man:sshd_config(5)Main PID: 1167 (sshd)Tasks: 1CGroup: /system.slice/sshd.service└─1167 /usr/sbin/sshd -D
控制系统服务
常用 systemctl 命令对照表
命令 | 描述 |
---|---|
systemctl start | 启动服务 |
systemctl stop | 停止服务 |
systemctl restart | 重启服务 |
systemctl reload | 重新加载服务配置 |
systemctl enable | 设置服务开机自启 |
systemctl disable | 取消服务开机自启 |
systemctl is-enabled | 查看开机自启状态 |
systemctl mask | 禁用服务 |
systemctl unmask | 取消禁用服务 |
systemctl list-dependencies | 查看依赖关系 |
systemctl list-dependencies --reverse | 查看反向依赖 |
unit 配置文件路径
- /etc/systemd/system/:管理员自定义优先级高
- /usr/lib/systemd/system/:软件包默认配置
自定义服务示例
以开发 mm
服务为例
# 准备可执行文件
cp /bin/md5sum /bin/mm# 复制并编辑 unit 文件
cp /usr/lib/systemd/system/sshd.service /etc/systemd/system/mm.service
vim /etc/systemd/system/mm.service
[Unit]
Description=mm server daemon[Service]
Type=fork
ExecStart=/usr/bin/mm /dev/zero[Install]
WantedBy=multi-user.target
# 重新加载 systemd 配置
systemctl daemon-reload# 设置开机启动并立即启动
systemctl enable mm --now# 查看服务状态
systemctl status mm
常见 unit 激活状态含义
状态 | 含义 |
---|---|
loaded | 单元配置文件已处理 |
active (running) | 正在运行 |
active (exited) | 一次性任务已成功完成 |
active (waiting) | 运行中,等待触发事件 |
inactive | 未运行 |
enabled | 系统引导时自动启动 |
disabled | 系统引导时不启动 |
static | 无法单独启用,依赖其他单元触发 |
inactive | 未运行 |
enabled | 系统引导时自动启动 |
disabled | 系统引导时不启动 |
static | 无法单独启用,依赖其他单元触发 |