guide.deepin.org/docs/deepin进阶教程/3.系统初始化/3.7.定制Systemd.md
xzl 7df2468bb7 docs: update docs
更新文档,添加系统启动相关的文档

Log:
2023-02-27 15:12:51 +08:00

49 lines
1.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 3.7. 定制Systemd
## 3.7.1. 套接字激活
套接字激活是指当一个服务需要监听一个端口时它不会直接监听而是由systemd来监听然后将连接转发给服务。这样做的好处是当服务不需要监听端口时systemd就不会监听从而节省了资源。
使用默认安装,通过 systemd 启动的过程中,在 network.target 启动后,很多网络服务 (参见 第 6 章 网络应用)作为后台守护进程daemon启动。 "sshd" 也不列外。让我们修改为按需启动"sshd" 作为一个定制化的例子。
首先,禁用系统安装的服务单元。
```Shell
sudo systemctl stop sshd.service
sudo systemctl mask sshd.service
```
传统 Unix 服务的按需套接字激活on-demand socket activation系统由 inetd (或 xinetd)超级服务来提供。在 systemd 下, 相同功能能够通过增加*.socket 和 *.service 单元配置文件来启用。
sshd.socket 用来定义一个监听的套接字
```
[Unit]
Description=SSH Socket for Per-Connection Servers
[Socket]
ListenStream=22
Accept=yes
[Install]
WantedBy=sockets.target
```
sshd@.service 作为 sshd.socket 匹配的服务文件
```
[Unit]
Description=SSH Per-Connection Server
[Service]
ExecStart=-/usr/sbin/sshd -i
StandardInput=socket
```
这里sshd.socket 用来定义一个监听的套接字sshd@.service 作为 sshd.socket 匹配的服务文件。sshd.socket 会监听 22 端口当有连接请求时sshd@.service 会被启动。
现在,启用这两个单元文件。
```Shell
sudo systemctl deamon-reload
```