我正在使用 debian stable 的服务器上运行多个 openvpn 实例;以及一些客户端作为服务器实例。现在,当这些实例之一失败时,systemd 似乎会杀死并重新启动整个进程组:
5 月 27 日 12:09:44 tritone systemd[1]:openvpn@client_uk.service:主进程退出,代码=退出,状态=1/FAILURE 5 月 27 日 12:09:44 tritone systemd[1]:单元 openvpn@client_uk.service 进入失败状态。 5 月 27 日 12:10:01 tritone systemd[1]:停止 OpenVPN 连接到 client_rhode... 5 月 27 日 12:10:01 tritone systemd[1]:启动 OpenVPN 连接到 client_uk... 5 月 27 日 12:10:01 tritone systemd[1]:停止 OpenVPN 连接到 client_ukraine... 5 月 27 日 12:10:01 tritone systemd[1]:停止 OpenVPN 连接到 server_udp... 5 月 27 日 12:10:01 tritone systemd[1]:停止 OpenVPN 服务... 5 月 27 日 12:10:01 tritone systemd[1]:启动 OpenVPN 服务... 5 月 27 日 12:10:01 tritone systemd[1]:启动 OpenVPN 服务。 ...
这与多余的恕我直言一样不受欢迎。重新启动单个失败的服务就足够了。这是来自/etc/systemd/system/multi-user.target.wants/openvpn.service
以下内容的 systemd 配置:
[单元] 说明=OpenVPN 服务 之后=网络.目标 [服务] 类型=oneshot RemainAfterExit=yes ExecStart=/bin/true ExecReload=/bin/true 工作目录=/etc/openvpn [安装] WantedBy=multi-user.target
我看过配置,其中 ExecReload 已设置为kill -HUP $MAINPID
,而且我的服务器似乎也这样做,正如 systemctl status 所说:
Process: 5893 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Run Code Online (Sandbox Code Playgroud)
那么我不明白的是,如果 systemd config ExecReload 实际上另有说明,这个 kill 命令在哪里定义?另外,为什么服务会重新启动,即使Type=oneshot
已定义?我在看正确的文件吗?
重启命令应该是什么样子的?Kill 将不起作用,因为该进程应该已经死了。
编辑:我发现/lib/systemd/system-generators/openvpn-generator
和/lib/systemd/system/openvpn@.service
现在,不过,现在还不清楚,当他们运行或执行。生成器似乎失败了,因为实际上没有创建任何链接,可能是由于 selinux 限制。尽管如此,这个文件似乎是用于 init.d 文件的。所以我想知道,为什么要/etc/systemd/system/multi-user.target.wants/openvpn.service
创建虚拟文件?
如果您使用 CONFIGNAME 作为文件的配置文件名,.conf
您可以尝试
systemctl restart openvpn@CONFIGNAME.service
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2300 次 |
最近记录: |