使用
systemctl --user enable xxx.service
激活的用戶實例(systemd user unit),只有在用戶登錄會話後,纔會運行。
如果要讓用戶實例(systemd user unit) 隨系統自動啓動,需要再執行命令:
loginctl enable-linger username
需求場景:
centos8 使用 pulseaudio 來提供聲音合成輸出。如果是啓動級別爲 graphical.target 時,會自動以 gdm 用戶隨機啓動 pulseaudio 服務。而改爲 multi-user.target 級別運行命令行多用戶模式,不啓用圖形界面時,則不會啓動 pulseaudio 服務。當用戶的後臺服務需要輸出音頻時,需要依賴 pulseaudio 服務。如果在 --system 級別 enable 用戶服務,由於默認 pulseaudio 服務是註冊到用戶級別的,也就是說,在 --system 級別啓動時,將無法 Require 引用 --user 級別的 pulseaudio 服務。
注:用戶級別的後臺服務單元 (Systemd user unit) 保存在以下四個位置:
- /usr/lib/systemd/user:優先級最低,會被高優先級的同名 unit 覆蓋
- ~/.local/share/systemd/user
- /etc/systemd/user:全局共享的用戶級 unit[s]
- ~/.config/systemd/user:優先級最高
用戶級 unit 與系統級 unit 相互獨立,不能互相關聯或依賴。
參考:
https://www.cnblogs.com/hadex/p/6571278.html
https://wiki.archlinux.org/index.php/Systemd/User_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)