我即将从 14.04 LTS 升级到 16.04 LTS,但首先我需要整理我使用的最重要的软件(如 OpenVPN 客户端)的 systemd 服务。我有一个适用于 14.04 的运行良好的 upstart 脚本。
我读了很多关于 systemd 的文章,但没有太多经验。来自另一个邮政我还了解以下内容:
OpenVPN 是 systemd 下的模板化服务。服务名称为 [电子邮件保护]。因此,您应该使用以下命令启动 /etc/openvpn/myvpn.conf 实例
系统控制启动[电子邮件保护]
我编译了 OpenVPN 客户端。我就是搞不懂,是[电子邮件保护]自动生成,还是如何生成?除此之外,在这种情况下,我如何向此服务添加重启设置(或任何其他设置)。[电子邮件保护]?我想补充一下
失败时重启
根据建议免费桌面网站:
对于长期运行的服务,建议将其设置为 on-failure,以便通过尝试自动从错误中恢复来提高可靠性。对于能够自行终止(并避免立即重新启动)的服务,on-abnormal 是另一种选择。
我的目标是,如果我不停止 OpenVPN 客户端,它就会始终重新启动。
答案1
关于“[电子邮件保护]“你问题的一部分,另一个例子:我有一个名为的OpenVPN配置文件,/etc/openvpn/Germany.conf
因此我使用启动openvpn守护进程。这是我的默认配置,因此它进入。systemctl start [email protected]
/etc/default/openvpn
如果我的德国网关出现故障,我还有另一个配置文件/etc/openvpn/Netherlands.conf
,可以使用它。systemctl start [email protected]
关于重启设置,这大概尽管我自己还没有测试过该[Service]
部分。/etc/systemd/system/multi-user.target.wants/openvpn.service
注意:以上内容假设您通过 使用 Ubuntu 软件包apt-get install openvpn
。我不确定当您自己编译这些东西时会发生什么?另外:您为什么要这样做?
答案2
此外,在这种情况下,我如何向此服务添加重启设置(或任何其他设置)[电子邮件保护]?
从https://www.freedesktop.org/software/systemd/man/systemd.unit.html(重点是我的):
除了单元文件 foo.service 之外,可能还存在一个“插入式”目录 foo.service.d/。此目录中所有带有“.conf”后缀的文件将在解析文件本身后进行解析。这对于更改或添加单元的配置设置非常有用,而无需修改单元文件。每个插入式文件都必须具有适当的节标题。请注意,对于实例化单元,此逻辑将首先查找实例“ .d/”子目录并读取其“ .conf”文件,然后查找模板“ .d/”子目录和那里的“ .conf”文件。还请注意,“[Install]”部分的设置在插入式单元文件中不受尊重,并且不起作用。
除了 /etc/systemd/system,系统服务的嵌入式“.d”目录还可以放在 /usr/lib/systemd/system 或 /run/systemd/system 目录中。/etc 中的嵌入式文件优先于 /run 中的文件,而 /run 中的文件又优先于 /usr/lib 中的文件。这些目录中的嵌入式文件优先于位于任何地方的单元文件。
基于上述内容,如果您有多个 openvpn 配置,并且想要根据这些配置更改所有 openvpn 服务的某些配置方面,您需要创建目录并将适当的 .conf 文件放置在那里。/etc/systemd/[email protected]
如果你想更改特定的 openvpn 服务,例如[电子邮件保护]在您的情况下,您必须创建目录并将适当的 .conf 文件放置在那里。/etc/systemd/[email protected]