Systemd

wg-quick@wg0.service’ 中的 ‘@’ 是什麼意思?

  • November 27, 2022

我熟悉創建普通的 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

您在 @ 之後放置的任何內容都會放入系統日誌中。

希望有幫助!

引用自:https://unix.stackexchange.com/questions/726446