Systemd-Timer

我正在編寫一個 systemd 計時器。我應該為 WantedBy 使用什麼值?

  • March 1, 2018

在各種範例中,我看到了所有這些不同的選擇建議:

  • WantedBy=timers.target
  • WantedBy=多使用者.target
  • WantedBy=basic.target
  • WantedBy=default.target
  • WantedBy=mytimer.target(自定義使用者定義名稱)

但是,在我找到的範例中,沒有提供進一步的解釋。

以下頁面也沒有對 WantedBy 提供任何解釋:

我想了解一種在需要編寫 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.targetgraphical.target,兩者都在 之後basic.target)。但:

timers.targetbasic.target非同步拉入。這允許計時器單元依賴於僅在啟動後才可用的服務。

因此,依賴於其他服務單元的更複雜的計時器會更好,timers.target而不是依賴於其他任何服務單元。

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