guide.deepin.org/docs/deepin进阶教程/3.系统初始化/3.7.定制Systemd.md
xzl 75e27661e0 refactor: 重构文档目录
移除了所有数字标号

Log:
2023-03-06 16:45:33 +08:00

1.5 KiB
Raw Permalink Blame History

定制Systemd

套接字激活

套接字激活是指当一个服务需要监听一个端口时它不会直接监听而是由systemd来监听然后将连接转发给服务。这样做的好处是当服务不需要监听端口时systemd就不会监听从而节省了资源。

使用默认安装,通过 systemd 启动的过程中,在 network.target 启动后,很多网络服务 (参见 第 6 章 网络应用)作为后台守护进程daemon启动。 "sshd" 也不列外。让我们修改为按需启动"sshd" 作为一个定制化的例子。

首先,禁用系统安装的服务单元。

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 会被启动。

现在,启用这两个单元文件。

sudo systemctl deamon-reload