我熟悉创建普通的 systemd 服务。然而,在学习如何配置wireguard时,我在服务名称中遇到了“@”符号,并且想知道它到底是如何工作的。
例如,在wireguard中,您可以配置一个连接,/etc/wireguard/wg0.conf
然后通过运行来控制该连接,就像它拥有自己的服务文件一样。如果您创建第二个名为 的配置文件,您可以通过.sudo systemctl [enable|disable|start|stop|whatever] [email protected]
wg1.conf
[email protected]
这一切都非常方便,但是它是如何工作的呢?这叫什么?
答案1
@
SystemD 服务中的符号用于创建采用变量的服务,以便您可以拥有多个具有不同配置/目标的相同服务。
因此,在这种情况下,它允许您区分配置,但它被许多其他事物(例如 ceph)使用,以允许您运行多个相同的服务,但提供不同的资源。
基本上,当您创建 systemd 服务文件时,您可以使用%i
它,它将替换@
符号后面的任何内容。
因此,您可以创建一个一次性服务,只回显后面的内容,如下@
所示
[Unit]
Description=Echo '%I'
[Service]
Type=oneshot
ExecStart=/bin/echo %i
StandardOutput=syslog
您在 后面放置的任何内容@
都会放入系统日志中。
希望有帮助!