Provided by: manpages-zh_1.6.3.6-1_all bug

NAME

       busctl - 內省與監視 D-Bus 匯流排

SYNOPSIS

       busctl [OPTIONS...] [COMMAND] [NAME...]

描述

       busctl 可用於內省與監視 D-Bus 匯流排

選項

       能夠識別的命令列選項如下:

       --address=ADDRESS
           連線到 ADDRESS 指定的匯流排, 而不是預設的匯流排(無論是 --system 系統匯流排還是 --user
           使用者匯流排)。

       --show-machine
           在使用 list 命令顯示總線上的所有 peer 列表時, 額外顯示一個"MACHINE"列,指明其所屬容器
           的名稱。參見 systemd-machined.service(8) 手冊。

       --unique
           在使用 list 命令顯示總線上的所有 peer 列表時,僅顯示 ":number.number" 格式的"唯一
           名"(UniqueName)。

       --acquired
           在使用 list 命令顯示總線上的所有 peer 列表時,與 --unique 選項正好相反, 僅顯示"易讀
           名"(well-known name)。

       --activatable
           在使用 list 命令顯示總線上的所有 peer 列表時, 僅顯示當前未被啟用並且可以在被訪問時自
           動啟用的 peer 。

       --match=MATCH
           在使用 monitor 命令監視已交換的訊息時, 僅顯示與 MATCH 匹配的訊息。 參見
           sd_bus_add_match(3)

       --size=
           在使用 capture 命令捕獲已交換的訊息時, 指定允許捕獲的最大訊息尺寸("snaplen"), 預設值
           是 4096 位元組。

       --list
           在使用 tree 命令顯示物件路徑時, 不以樹形縮排顯示,而是以平鋪列表的格式顯示。

       --quietcall 命令連用,禁止顯示應答訊息。 注意: 錯誤訊息依然會被顯示出來,並且依然可以用返
           回值判斷成敗。

       --verbosecallget-property 命令連用, 表示以詳細模式顯示輸出。

       --expect-reply=BOOLcall 命令連用, 設定是否等待被呼叫的方法執行完成。 "yes" 表示等待方法執行完成並且返
           回應答資料, 然後 busctl 將返回一個可用於判斷方法執行成敗的返回碼。 "no" 表示呼叫方法
           之後不等待其執行完成也不顯示應答資料, 而是直接退出,並且不返回有意義的返回碼。 如果只
           是想遮蔽應答資料, 應該使用 --quiet 選項。 預設值為 "yes"

       --auto-start=BOOLcall 命令連用, 設定是否應該隱含的啟動當前尚未執行、 但是被配置為自動啟動的服務。
           預設是 "yes"

       --allow-interactive-authorization=BOOLcall 命令連用, 設定服務在執行操作時, 是否應該強制進行互動式授權(在安全策略已配置
           的時候)。 預設是 "yes"

       --timeout=SECScall 命令連用, 設定等候方法完成的最大秒數。 注意,此處的超時設定對
           --expect-reply=no 無效。 可使用明確的時間單位字尾: us, ms, s, min, h, d, w, month, y
           。 預設值是"25s" (注意,設為"0"也等價於"25s")。

       --augment-creds=BOOL
           設定 list/status 命令報告的憑據資料 是否應該被擴充套件為包含來自 /proc 的資料。 若設
           為"yes"(預設值), 那麼顯示的資料可能會不一致, 因為 /proc 中的資料可能會更新。

       --user
           與當前呼叫使用者的使用者服務管理器(systemd 使用者例項)通訊, 而不是預設的系統服務管理
           器(systemd 系統例項)。

       --system
           與系統服務管理器(systemd 系統例項)通訊, 這是預設值。

       -H, --host=
           操作指定的遠端主機。可以僅指定一個主機名(hostname), 也可以使用 "username@hostname" 格
           式。 hostname 後面還可以加上容器名(以冒號分隔), 也就是形如 "hostname:container" 的格
           式, 以表示直接連線到指定主機的指定容器內。 操作將透過SSH協議進行,以確保安全。 可以透
           過 machinectl -H HOST 命令列出遠端主機上的所有容器名稱。

       -M, --machine=
           在本地容器內執行操作。 必須明確指定容器的名稱。

       --no-pager
           不將程式的輸出內容管道(pipe)給分頁程式。

       --no-legend
           不輸出列標題, 也就是不在輸出列表的頭部和尾部顯示欄位的名稱。

       -h, --help
           顯示簡短的幫助資訊並退出。

       --version
           顯示簡短的版本資訊並退出。

命令

       能夠識別的命令如下:

       list
           顯示總線上的所有peer(依據服務名稱),這是預設命令。 默認同時顯示"唯一
           名"(UniqueName)與"易讀名"(well-known name), 但是可以使用 --unique--acquired 選項
           進行修改。

       status [SERVICE]
           如果 SERVICE 是一個匯流排服務的"唯一名"或"易讀名", 那麼顯示該服務的程序資訊及憑證資
           訊。 如果 SERVICE 是一個程序的PID,那麼顯示該程序的程序資訊及憑證資訊。 如果未指定
           SERVICE 引數,那麼顯示匯流排所有者的程序資訊及憑證資訊。

       monitor [SERVICE...]
           監視已交換的訊息,可使用 Ctrl-C 中斷監視。 如果未指定 SERVICE 引數,那麼顯示總線上的所
           有訊息。 如果指定了 SERVICE 引數("唯一名"或"易讀名"), 那麼僅顯示到達此peer或者從
           此peer發出的訊息。

       capture [SERVICE...]
           與 monitor 命令類似, 不同之處在於以 pcap 格式輸出(詳見 Libpcap File Format[1])。 強烈
           推薦將 STDOUT 重定向到一個檔案中,然後使用 wireshark(1) 工具檢視與分析。

       tree [SERVICE...]
           顯示服務的物件樹。 如果給出了 SERVICE 引數, 那麼僅顯示指定服務的物件樹, 否則顯示總線
           上所有具有"易讀名"服務的物件樹。

       introspect SERVICE OBJECT [INTERFACE]
           顯示SERVICE服務上OBJECT物件(以路徑表示)的 interface, method, property, signal 值。 如
           果指定了 INTERFACE 引數, 那麼僅輸出指定介面上的成員。

       call SERVICE OBJECT INTERFACE METHOD [SIGNATURE [ARGUMENT...]]
           呼叫一個方法並顯示應答。 必須指定服務名稱(SERVICE)、物件路徑(OBJECT)、介面名
           稱(INTERFACE)、方法名稱(METHOD)。 如果要給方法傳遞引數, 那麼必須使用型別標
           記(SIGNATURE)後跟一個引數字串(ARGUMENT)。 格式細節參見下面的"引數格式"小節。 可以使用
           --quiet 選項抑制輸出。

       get-property SERVICE OBJECT INTERFACE PROPERTY...
           顯示物件屬性的當前值。 必須指定服務名稱(SERVICE)、物件路徑(OBJECT)、介面名
           稱(INTERFACE)、屬性名稱(PROPERTY)。 如果同時指定了多個屬性名稱,那麼將按照每行一個,依
           次顯示每個屬性的當前值。 預設以精簡格式輸出, 但是可以使用 --verbose 選項以詳細格式輸
           出。

       set-property SERVICE OBJECT INTERFACE PROPERTY SIGNATURE ARGUMENT...
           設定物件屬性的當前值。 必須指定下列引數: 服務名稱(SERVICE)、物件路徑(OBJECT)、介面名
           稱(INTERFACE)、 屬性名稱(PROPERTY)、型別標記(SIGNATURE)、引數字串(ARGUMENT)。

       help
           顯示語法幫助

引數格式

       callset-property 命令都接收一個型別標記(SIGNATURE)與多個引數字串(ARGUMENT)。 有關"型別
       標記"的詳細說明, 參見 Type system chapter of the D-Bus specification[2] 文件的"Type
       System"小節。 對於簡單型別(Basic types), 型別標記(SIGNATURE)後面的每個引數(ARGUMENT)都必
       須是引數值的字串表示。 布林型別真值可以表示為 "true", "yes", "on", "1" ; 布林型別假值可以
       表示為 "false", "no", "off", "0" 。 對於陣列,先是一個表示陣列項數的數字,然後跟著陣列中的
       每一項。 對於變數,先是一個表示變數型別的字元,然後跟著變數的值。 對於字典與結構,直接指定
       其內容即可。

       例如,

           s jawoll

       是一個簡單的字串 "jawoll" , "s"是型別標記,"jawoll"是引數字串。

           as 3 hello world foobar

       是一個字串陣列,包含3個成員,分別是 "hello", "world", "foobar"

           a{sv} 3 One s Eins Two u 2 Yes b true

       是一個字典陣列, 該字典將字串對映為變數,包含3個成員,分別是: 字串 "One" 對映到字串
       "Eins" , 字串 "Two" 對映到32位無符號整數"2", 字串 "Yes" 對映到布林真值。

       注意, call, get-property, introspect 命令在輸出應答時也同樣是這個格式。 由於這個格式過於
       精簡不易理解, 所以 callget-property 命令提供了 --verbose 選項用於輸出詳細的、 易於理
       解的多行輸出格式。

例子

       Example 1. 讀寫屬性

       下面的兩個命令,首先寫入一個屬性,然後再讀取它。 該屬性位於 "org.freedesktop.systemd1" 服
       務的 "/org/freedesktop/systemd1" 物件中, 屬性名是 "org.freedesktop.systemd1.Manager" 介面
       上的 "LogLevel" , 此屬性是一個簡單的字串:

           # busctl set-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel s debug
           # busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager LogLevel s "debug"

       Example 2. 精簡輸出與詳細輸出

       下面的兩個命令,兩次讀取同一個屬性(字串陣列型別), 第一次以精簡格式顯示, 第二次以詳細格式
       顯示:

           $ busctl get-property org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment
           as 2 "LANG=en_US.utf8" "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin"
           $ busctl get-property --verbose org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager Environment
           ARRAY "s" {
                   STRING "LANG=en_US.utf8";
                   STRING "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin";
           };

       Example 3. 呼叫方法

       下面的命令, 在 "org.freedesktop.systemd1" 服務的 "/org/freedesktop/systemd1" 物件的
       "org.freedesktop.systemd1.Manager" 介面上呼叫了 "StartUnit" 方法, 並且給此方法傳遞了
       "cups.service" 與 "replace" 兩個字串。 而此方法返回了一個物件路徑:

           # busctl call org.freedesktop.systemd1 /org/freedesktop/systemd1 org.freedesktop.systemd1.Manager StartUnit ss "cups.service" "replace"
           o "/org/freedesktop/systemd1/job/42684"

參見

       dbus-daemon(1), D-Bus[3], sd-bus(3), systemd(1), machinectl(1), wireshark(1)

NOTES

        1. Libpcap File Format
           http://wiki.wireshark.org/Development/LibpcapFileFormat

        2. Type system chapter of the D-Bus specification
           http://dbus.freedesktop.org/doc/dbus-specification.html#type-system

        3. D-Bus
           http://freedesktop.org/wiki/Software/dbus

       本頁面中文版由中文 man 手冊頁計劃提供。

       翻譯人員:金步國
       金步國作品集:http://www.jinbuguo.com
       中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh