ffx component explore
指令會啟動互動式殼層,
目標裝置所執行 Fuchsia 元件的內部構造。
概念
ffx component explore
指令會啟動限定範圍的 Dash 程序
新增至目標元件透過這個 Dash 程序,您可以:
- 使用熟悉的 POSIX 指令,例如
ls
、cat
和grep
。 - 探索元件的傳入和傳出功能。
Dash 是之前在 Fuchsia 專案中其他工具使用的命令解譯器
例如 fx shell
、序列控制台、終端機視窗和 virtcon
。Dash 提供
ffx component explore
給開發人員的熟悉體驗,例如 cd
和 ls
瀏覽 Fuchsia 元件中的空格,例如:
[host]$ ffx component explore /bootstrap/archivist
Moniker: /bootstrap/archivist
$ ls
exposed
ns
out
runtime
svc
$
不過,與 fx shell
不同,命名空間只包含元件傳入要求
以及傳出的功能這項限制意味著您幾乎可以在某個環境中進行探索
與元件看到的內容完全相同
探索元件
如要連線至 Fuchsia 元件並啟動互動式殼層,請執行下列指令:
ffx component explore COMPONENT_IDENTIFIER
將 COMPONENT_IDENTIFIER 替換為 moniker, 目標元件的「網址」或「執行個體 ID」。指令 也接受這些識別碼的不重複部分比對
下方的範例指令會啟動互動式殼層 ($
) 來探索
/bootstrap/archivst
元件:
[host]$ ffx component explore /bootstrap/archivist
Moniker: /bootstrap/archivist
$
在這份指南的所有範例中,主機機器終端機的殼層提示都是
以 [host]$
表示,而元件互動殼層中的提示則顯示為
單獨代表 $
,不含 [host]
前置字串。想要換個點吧
[host]$
表示指令會在主機電腦的終端機上執行,而 $
代表該指令會在連線至目標元件的互動式殼層中執行。
本指南也會針對目標元件使用 /bootstrap/archivist
(猴子)
大多數範例實際上,這個引數應替換為元件 ID
以及目標元件
探索元件可用的功能
如要探索目標元件的功能,請前往 /ns
目錄
嵌入至元件的互動殼層/ns
目錄包含元件的
命名空間,如同元件看到的位置,例如:
[host]$ ffx component explore /bootstrap/archivist
Moniker: /bootstrap/archivist
$ cd ns
$ ls
config
events
pkg
svc
如要讓殼層的命名空間與元件命名空間相符
使用 -l
(或 --layout
) 標記,例如:
[host]$ ffx component explore /bootstrap/archivist -l namespace
Moniker: /bootstrap/archivist
$ ls
config
events
pkg
svc
如要進一步瞭解這些目錄,請參閱 ffx 元件探索的命名空間根為何?
探索元件公開的功能
/exposed
目錄包含從目標公開公開的功能
元件新增至父項中,例如:
[host]$ ffx component explore /bootstrap/archivist
Moniker: /bootstrap/archivist
$ cd exposed
$ ls
diagnostics
fuchsia.diagnostics.ArchiveAccessor
fuchsia.diagnostics.FeedbackArchiveAccessor
fuchsia.diagnostics.LegacyMetricsArchiveAccessor
fuchsia.diagnostics.LoWPANArchiveAccessor
fuchsia.diagnostics.LogSettings
fuchsia.logger.Log
fuchsia.logger.LogSink
探索元件提供的功能
如果目標元件是在裝置上執行,則 /out
目錄
包含元件目前提供的所有功能,
範例:
[host]$ ffx component explore /bootstrap/archivist
Moniker: /bootstrap/archivist
$ cd out
$ ls
diagnostics
svc
$ cd svc
$ ls
fuchsia.diagnostics.ArchiveAccessor
fuchsia.diagnostics.FeedbackArchiveAccessor
fuchsia.diagnostics.LegacyMetricsArchiveAccessor
fuchsia.diagnostics.LoWPANArchiveAccessor
fuchsia.diagnostics.LogSettings
fuchsia.logger.Log
探索元件的偵錯執行階段資料
如果目標元件是在裝置上執行,則 /runtime
目錄
包含元件執行元件提供的偵錯資訊,例如:
[host]$ ffx component explore /bootstrap/archivist
Moniker: /bootstrap/archivist
$ cd runtime/elf
$ ls
job_id
process_id
process_start_time
$ cat process_id
2542
在元件殼層中使用自訂指令列工具
如要在目標元件的殼層環境中新增自訂指令列工具,請使用
--tools
旗標,將工具套件的網址提供給 ffx component explore
例如:
[host]$ ffx component explore /core/network --tools fuchsia-pkg://fuchsia.com/net-cli
Moniker: /core/network
$ net help
Usage: net <command> [<args>]
commands for net-cli
Options:
--help display usage information
Commands:
filter commands for packet filter
if commands for network interfaces
log commands for logging
neigh commands for neighbor tables
route commands for routing tables
dhcp commands for an interfaces dhcp client
dhcpd commands to control a dhcp server
dns commands to control the dns resolver
在元件的殼層中執行非互動的指令
如何在元件的裝置端殼層中以非互動方式執行指令,並接收
stdout
、stderr
和結束程式碼,請使用 -c
(或 --command
) 標記,例如:
[host]$ ffx component explore /bootstrap/archivist -c "cat /runtime/elf/process_id"
Moniker: /bootstrap/archivist
2542
附錄
為什麼看不到父項的子項元件?
Fuchsia 不允許直接從父項存取子項元件。 先前是運用元件拓撲的知識存取子項元件 工具不僅運作流暢,且依賴硬式編碼路徑 具備系統拓撲的相關知識
但建議使用下列替代方案:
- 從子項明確轉送功能至父項元件。
- 探索子項元件。
這與 ffx 元件執行有何不同?
ffx component run
指令會建立並啟動元件
都會在元件拓撲內的指定集合中推出不過,ffx component run
不提供互動功能。另一方面,ffx component explore
允許
以互動方式探索拓撲中的任何現有元件總而言之
ffx component explore
:瞭解您剛才使用
ffx component run
。
ffx 元件中的命名空間根探索為何?
根據預設,ffx component explore
指令會在以下位置建立虛擬檔案系統:
包含下列目錄的命名空間根目錄 (/
):
目錄 | 說明 |
---|---|
/.dash |
包含 Dash 所需的二進位檔。 |
/exposed |
包含所有已暴露的功能。 |
/ns
|
包含元件的命名空間,和元件完全相同 就能看到成果 |
/svc |
包含 Dash 所需的功能, |
如果目標元件是在裝置上執行,那麼下列目錄也會 目前:
目錄 | 說明 |
---|---|
/out |
包含元件目前提供的所有功能。 |
/runtime |
包含元件執行元件提供的偵錯資訊。 |
如果在 ffx component explore
中設定 --layout namespace
旗標,則殼層的
命名空間符合元件的命名空間
我可以使用 Dash 殼層存取 Zircon 控制代碼或進行 FIDL 呼叫嗎?
不適用於指令解譯器直接執行這項操作。
如何提出 ffx 元件探索功能要求?
將所有功能要求提交至
ComponentFramework > Tools
Issue Tracker
元件。