Systemd
‘wg-quick@wg0.service’ 中的 ‘@’ 是什麼意思?
我熟悉創建普通的 systemd 服務。然而,在學習如何配置 wireguard 時,我在服務名稱中遇到了“@”符號,並且想知道它究竟是如何工作的。
例如,在 wireguard 中,您可以配置一個連接,
/etc/wireguard/wg0.conf
然後通過執行控制該連接,就像它擁有自己的服務文件一樣sudo systemctl [enable|disable|start|stop|whatever] wg-quick@wg0.service
。如果您創建第二個名為 的配置文件wg1.conf
,您可以通過wg-quick@wg1.service
.這一切都非常方便,但它是如何工作的呢?這叫什麼?
SystemD 服務中的 @ 符號用於創建採用變數的服務,因此您可以擁有多個具有不同配置/目標的相同服務。
所以在這種情況下,它允許您區分配置,但它被許多其他東西使用,例如 ceph 允許您執行多個相同的服務,但提供不同的資源。
基本上,當您創建 systemd 服務文件時,您可以使用 %i,它將替換 @ 符號之後的任何內容。
所以你可以創建一個 oneshot 服務,它只回顯 @ 之後的任何內容,就像這樣
[Unit] Description=Echo '%I' [Service] Type=oneshot ExecStart=/bin/echo %i StandardOutput=syslog
您在 @ 之後放置的任何內容都會放入系統日誌中。
希望有幫助!