假设我使用以下命令设置了一个参数,稍后如何读取它?
mdb -kwe "spa_load_verify_metadata/W 0"
我正在尝试阅读手册页,但我只是暂时使用这个操作系统,不明白它在说什么。
The search modifiers are:
l Search for the specified 2-byte value.
L Search for the specified 4-byte value.
M Search for the specified 8-byte value.
我通常期望该值位于/sys/modules/zfs/parameters/spa_load_verify_metadata
我可以得到cat
的值,但/sys
甚至不存在。
我尝试使用 查找变量find
,但它不在文件系统中。我不明白这些值在哪里的概念......
我实际上只是想读取的值我知道存在的其他参数。
答案1
在 Linux 上,导出内核参数的自然方法是 /sys 或 /proc 中的虚拟文件。在 Solaris 及其衍生版本上,调试器 mdb 可用于读取和写入值。
# mdb -ke "spa_load_verify_metadata::print"
0x1 (B_TRUE)
或者像我以前那样:
# echo "spa_load_verify_metadata::print" | mdb -k
0x1 (B_TRUE)
您可以使用调试器找到有关该符号的更多信息:
# mdb -k
> spa_load_verify_metadata::nm
Value Size Type Bind Other Shndx Name
0xfffffffffbfc11f0|0x0000000000000004|OBJT |GLOB |0x0 |6 |spa_load_verify_metadata
更多信息可以在这里找到:Oracle Solaris 模块化调试器指南