Systemd-Timer

我應該為系統使用者計時器使用 WantedBy 的 default.target 或 timers.target 值嗎?

  • April 8, 2021

除非我啟用它,否則位於我的 .timer 文件~/.config/systemd/user不會顯示在命令的輸出中。systemctl --user list-timers --all此命令不顯示禁用的 .timers 和啟用的計時器是否正常?

由於錯誤,我無法啟用沒有[Install]部分的 .timer The unit files have no installation config。根據 freedesktop.org 文件:

計時器單元將自動對 timers.target 具有 Before= 類型的依賴項

這是否意味著我不必啟用我的 .timer 來工作?

如果我確實需要啟用我的 .timer:

我相信這default.target就是使用者登錄成功後要執行的軟體WantedBy

我也相信使用者 systemd 實例是由 啟動的pam_systemd,我相信這發生在之前default.target

所以在我看來,如果我使用default.target計時器將在登錄後啟動。如果我OnStartupSec在這種情況下使用,它會正確計算從 systemd 使用者實例啟動開始的時間嗎?

另一方面,如果我使用timers.target,因為這是一個使用者計時器,它會在登錄前啟動並從其啟動時間開始計算秒數,還是僅在啟動後才註冊並開始計算時間systemd --user

自從我問了這個問題以來,我變得更紅了,發現我的問題是我的誤解——我認為 systemd 的使用者和系統實例都依賴於同一組目標。根據THIS page 每個 systemd 實例使用自己設置的目標,因此很明顯,在 systemd 的使用者實例啟動之前,使用者計時器不會啟動,因此計時器將正確計算從 systemd 的使用者實例啟動開始的時間。

系統管理器為每個使用者啟動 user@uid.service 單元,它為每個使用者啟動一個單獨的非特權 systemd 實例——使用者管理器。與系統管理器類似,使用者管理器啟動預設拉入的單元。目標。對於非圖形會話,使用 default.target。每當使用者登錄到圖形會話時,登錄管理器都會啟動 graphics-session.target 目標,該目標用於拉入圖形會話所需的單元。當特定硬體可供使用者使用時,會啟動許多目標(顯示在右側)。

既然是這種情況,我相信 timers.target 是兩者中更合適的,但兩者都應該工作。

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