我正在編寫一個 systemd 計時器。我應該為 WantedBy 使用什麼值?
在各種範例中,我看到了所有這些不同的選擇建議:
- WantedBy=timers.target
- WantedBy=多使用者.target
- WantedBy=basic.target
- WantedBy=default.target
- WantedBy=mytimer.target(自定義使用者定義名稱)
但是,在我找到的範例中,沒有提供進一步的解釋。
以下頁面也沒有對 WantedBy 提供任何解釋:
- https://www.freedesktop.org/software/systemd/man/systemd.timer.html
- https://www.freedesktop.org/software/systemd/man/systemd.time.html
我想了解一種在需要編寫 systemd 計時器而不是 cron 作業時可以使用的簡單*方法。
*設置一個 cron 作業是 1 行。Systemd 計時器涉及編寫兩個文件並執行一兩個 systemctl 命令。但在我的經驗中,僅憑這一事實並不一定是使 systemd 計時器比 cron 更難的原因——它是眾多選項和(似乎)缺乏清晰的文件和完整解釋的簡單範例。
對於簡單的案例,使用
WantedBy=timers.target
. 見man systemd.special
:
timers.target
一個特殊的目標單元,它設置 啟動後應處於活動狀態的所有計時器單元(有關詳細資訊,請參見systemd.timer(5) )。
建議應用程序安裝的計時器單元通過
Wants=
該單元的依賴關係拉入。這最好通過WantedBy=timers.target
計時器單元的“[Install]
”部分進行配置。定時器預設依賴
Before=timers.target
。而且,如果您檢查man bootup
,您會看到它basic.target
作為timers.target
依賴項引入。所以我認為WantedBy=basic.target
在大多數情況下似乎都可以正常工作(對於default.target
,通常是multi-user.target
或graphical.target
,兩者都在 之後basic.target
)。但:
timers.target
被basic.target
非同步拉入。這允許計時器單元依賴於僅在啟動後才可用的服務。因此,依賴於其他服務單元的更複雜的計時器會更好,
timers.target
而不是依賴於其他任何服務單元。