隨系統自動啓動 systemd 用戶實例

使用

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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章