46 lines
1.2 KiB
Markdown
46 lines
1.2 KiB
Markdown
---
|
||
title: "Socket Activation"
|
||
type: concept
|
||
tags: [systemd, activation, optimization]
|
||
date: 2026-04-16
|
||
---
|
||
|
||
## Definition
|
||
Socket Activation(套接字激活)是 systemd 的一种按需启动机制,只有当客户端首次请求连接时,服务才会被启动。与传统的开机自启相比,可以减少系统资源占用。
|
||
|
||
## Mechanism
|
||
1. systemd 创建监听套接字
|
||
2. 客户端发起连接请求
|
||
3. systemd 接收连接并启动服务进程
|
||
4. 连接传递给已启动的服务
|
||
|
||
## Use Cases
|
||
- SSH(ssh.socket)
|
||
- D-Bus 系统消息总线
|
||
- 打印服务(cups.socket)
|
||
|
||
## Advantages
|
||
- 减少内存占用
|
||
- 按需启动,节能
|
||
- 简化服务依赖管理
|
||
|
||
## Comparison with Traditional Mode
|
||
| 特性 | Socket Activation | 传统开机自启 |
|
||
|------|------------------|-------------|
|
||
| 启动时机 | 按需启动 | 开机启动 |
|
||
| 资源占用 | 低 | 常驻内存 |
|
||
| 响应速度 | 首次延迟 | 即时响应 |
|
||
|
||
## Example
|
||
```bash
|
||
# 启用 socket 激活(默认)
|
||
sudo systemctl enable ssh.socket
|
||
|
||
# 切换回传统模式
|
||
sudo systemctl disable ssh.socket
|
||
sudo systemctl enable ssh.service
|
||
```
|
||
|
||
## Connections
|
||
- [[systemd]] ← implements ← [[Socket Activation]]
|
||
- [[SSH]] ← uses ← [[Socket Activation]] |