日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

php小編小新將為您介紹如何將DBus/Systemd設置為Systemd單元的依賴項。DBus和Systemd是Linux操作系統中常用的兩個工具,DBus用于進程間通信,而Systemd則負責系統初始化和進程管理。將DBus和Systemd結合起來使用可以實現更高效的系統管理和資源調度。本文將詳細講解如何在Systemd單元中配置DBus作為依賴項,以幫助您更好地理解和應用這兩個工具的使用方法。

問題內容

我有一個用 go 編寫的小程序,它使用 go-systemd 庫通過 dbus 與 systemd 交互。

程序本身注冊為 systemd 單元并應在引導時啟動。程序運行時,會定期查詢多個單元的systemd單元狀態。

現在當我手動啟動程序時,一切都很好。然而,當 systemd 重新啟動后啟動時,它將“掛起”,這意味著它將無法通過 dbus 查詢 systemd 單元狀態。我將從 go-systemd 庫收到以下消息:

process org.freedesktop.systemd1 exited with status 1

登錄后復制

現在,當我重新啟動程序時,它將立即能夠毫無錯誤地查詢 systemd 單元。這導致我假設我的程序存在錯誤/配置錯誤的依賴項,因此在啟動時會出現競爭條件,導致程序無法通過 dbus 與 systemd 進行通信。

現在我已經把這個和其他幾個組合放在一起了,但是它沒有幫助:

Requires=dbus.service
After=dbus.service
Wants=org.freedesktop.systemd1

登錄后復制

我需要如何配置我自己的 systemd 單元(go 程序的),以便它能夠在重新啟動后立即通過 dbus 與 systemd 進行通信?我必須配置什么依賴項?

解決方法

聽起來您的程序默認情況下正在嘗試連接到 DBus Session 總線,因為您說手動運行它時它工作正常。當應用程序從 Systemd 啟動時,默認情況下它將以 root 身份運行,沒有可連接的會話總線,因此它將失敗。

當用戶在圖形終端上登錄時,會話總線通常在每次登錄的基礎上啟動。在終端登錄時默認不會啟動。

如果是這種情況,我目前可以看到您有兩個選擇:

    使用系統總線而不是會話總線。
    創建您自己連接的總線,不同于會話總線和系統總線。最簡單的方法是使用 dbus-launch 創建您的應用程序可以連接到的新總線。

分享到:
標簽:linux操作系統
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定