刚开始使用 systemd,需要停止并启动 OpenVPN。
例如,我可以成功启动 OpenVPN:
systemctl start [email protected]
并可以通过以下方式停止它:
systemctl stop [email protected]
不过,我希望能够在脚本中停止 openvpn,而不必知道当前连接的是哪个 VPN。以前我会使用:
service stop openvpn
使用 systemctl 可以吗?
答案1
您可以使用模式(包括壳球)与systemctl
命令。看man systemctl
:
shell 风格的 glob 将与当前加载的单元进行匹配;文字单位名称,无论带或不带后缀,都将被视为第一种情况。这意味着字面量单位名称始终精确地引用一个单位,但 glob 可能匹配零个单位,并且这不被视为错误。
全局模式使用 fnmatch(3),因此使用正常的 shell 样式的全局规则,并且可以使用“*”、“?”、“[]”。有关更多详细信息,请参阅 glob(7)。这些模式与当前加载的单元的名称进行匹配,不匹配任何内容的模式将被静默跳过。例如:
# systemctl stop sshd@*.service
将停止所有[电子邮件受保护]实例。
因此,就您的情况而言:systemctl stop openvpn*
应该停止所有 OpenVPN 服务。