我應該為系統使用者計時器使用 WantedBy 的 default.target 或 timers.target 值嗎?
除非我啟用它,否則位於我的 .timer 文件
~/.config/systemd/user
不會顯示在命令的輸出中。systemctl --user list-timers --all
此命令不顯示禁用的 .timers 和啟用的計時器是否正常?由於錯誤,我無法啟用沒有
[Install]
部分的 .timerThe 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 是兩者中更合適的,但兩者都應該工作。