BUSCTL
BUSCTL
NAMESYNOPSIS
æè¿°
é项
å½ä»¤
åæ°æ ¼å¼
ä¾å
åè§
NOTES
è·
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 å½ä»¤æ¾ç¤ºå¯¹è±¡è·¯å¾æ¶ï¼ ä¸ä»¥æ å½¢ç¼©è¿æ¾ç¤ºï¼èæ¯ä»¥å¹³éºåè¡¨çæ ¼å¼æ¾ç¤ºã
--quiet
ä¸ call å½ä»¤è¿ç¨ï¼ç¦æ¢æ¾ç¤ºåºçæ¶æ¯ã 注æï¼ éè¯¯æ¶æ¯ä¾ç¶ä¼è¢«æ¾ç¤ºåºæ¥ï¼å¹¶ä¸ä¾ç¶å¯ä»¥ç¨è¿åå¼å¤ææè´¥ã
--verbose
ä¸ call æ get-property å½ä»¤è¿ç¨ï¼ è¡¨ç¤ºä»¥è¯¦ç»æ¨¡å¼æ¾ç¤ºè¾åºã
--expect-reply=BOOL
ä¸ call å½ä»¤è¿ç¨ï¼ 设置æ¯å¦çå¾è¢«è°ç¨çæ¹æ³æ§è¡å®æã "yes" 表示ç徿¹æ³æ§è¡å®æå¹¶ä¸è¿ååºçæ°æ®ï¼ ç¶å busctl å°è¿åä¸ä¸ªå¯ç¨äºå¤ææ¹æ³æ§è¡æè´¥çè¿åç ã "no" 表示è°ç¨æ¹æ³ä¹åä¸ç- å¾å¶æ§è¡å®æä¹ä¸æ¾ç¤ºåºçæ°æ®ï¼ èæ¯ç´æ¥éåºï¼å¹¶ä¸ä¸è¿åææä¹çè¿åç ã å¦æåªæ¯æ³å±è½åºçæ°æ®ï¼ åºè¯¥ä½¿ç¨ --quiet é项ã é»è®¤å¼ä¸º "yes"
--auto-start=BOOL
ä¸ call å½ä»¤è¿ç¨ï¼ 设置æ¯å¦åºè¯¥éå«çå¯å¨å½åå°æªè¿è¡ã 使¯è¢«é置为èªå¨å¯å¨çæå¡ã é»è®¤æ¯ "yes"
--allow-interactive-authorization=BOOL
ä¸ call å½ä»¤è¿ç¨ï¼ 设置æå¡å¨æ§è¡æä½æ¶ï¼ æ¯å¦åºè¯¥å¼ºå¶è¿è¡äº¤äºå¼ææ(å¨å®å¨çç¥å·²éç½®çæ¶å)ã é»è®¤æ¯ "yes"
--timeout=SECS
ä¸ call å½ä»¤è¿ç¨ï¼ 设置çåæ¹æ³å®æçæå¤§ç§æ°ã 注æï¼æ- ¤å¤çè¶æ¶è®¾ç½®å¯¹ --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
æ¾ç¤ºè¯æ³å¸®å©
åæ°æ ¼å¼
call ä¸ set-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 å½ä»¤å¨è¾åºåºç- æ¶ä¹åæ ·æ¯è¿ä¸ªæ ¼å¼ã ç±äºè¿ä¸ªæ ¼å¼è¿äºç²¾ç®ä¸æçè§£ï¼ æä»¥ call ä¸ get-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