diff --git a/command/ethtool.md b/command/ethtool.md index b25559054a..2cf3a4ff27 100644 --- a/command/ethtool.md +++ b/command/ethtool.md @@ -54,144 +54,75 @@ Ethtool命令显示的信息来源于网卡驱动层,即TCP/ip协议的链路 网卡驱动负责实现(部分)这些函数,并将其封装入`ethtool_ops`结构体,为网络核心层提供统一的调用接口。因此,不同的网卡驱动会给应用层返回不同的信息。`Ethtool命令选项`、`struct ethtool_ops成员函数`、`Ethtool命令显示参数的来源`,三者间的对应关系如下表所示: - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
命令选项struct ethtool_ops成员函数Ethtool命令显示参数的来源(以网卡驱动BNX2为例)
Ethtool命令显示参数的来源(以网卡驱动BNX2为例)
无 -sget_settingsget_wol get_msglevel get_link set_settings set_wol set_msglevel从网卡寄存器中获得网卡速度等信息,可配置。
-a -Aget_pauseparam set_pauseparam从网卡寄存器中获得Autonegotiate/RX/TX模块的状态:on oroff,可配置。
-c -Cget_coalesceset_coalesce从网卡寄存器中获得coalescing参数:TX/RX一个数据包后,推迟发生TX/RX中断的时间(us)/数据包个数。—减小该值可以提高网卡的响应时间。 当rx-usecs&rx-frames同时被设为0时,RX中断停止。 当tx-usecs&tx-frames同时被设为0时,TX中断停止。
-g -Gget_ringparam set_ringparam除当前TX/RX ring的值(从网卡寄存器中读取得到,可配置)外,其它为网卡bnx2自己固定的信息。
-k -Kget_rx_csumget_tx_csum get_sg get_tso set_rx_csum set_tx_csum set_sg set_tso显示信息从保存该状态的变量中读取得到,没有对应的寄存器。因此,TX/RX校验等模块一直处于on状态,实际上是无法修改的。
-iget_drvinfo[self_test_count, get_stats_coun,t get_regs_len, get_eeprom_len]网卡bnx2自己固定的信息,如: ——————————————————– driver: bnx2 version: 1.4.30 firmware-version: 1.8.0.5 bus-info: 0000:09:00.0 ——————————————————–
-dget_drvinfoget_regs不支持,即bnx2中没有实现函数get_regs。
-e -Eget_eepromset_eeprom不支持,即bnx2中没有实现函数get_eeprom。
-rnway_reset配置网卡MII_BMCR寄存器,重启Auto negotiation模块。
-pphys_id配置网卡BNX2_EMAC_LED寄存器,实现LED闪功能。
-tself_test通过配置网卡寄存器,逐一测试网卡的硬件模块:registers,memory,loopback,Link stat,interrupt。
-Sget_ethtool_stats显示信息来源于网卡驱动中的结构体变量stats_blk。(网卡通过DMA方式,将寄存器BNX2_HC_STATISTICS _ADDR_L和BNX2_HC_STATISTICS_ADDR_H中的数据实时地读取到结构体变量struct statistics_block *stats_blk中。) —显示的数据都是从网卡寄存器中统计得到的,各项的含义需查询网卡(芯片)手册。
由上可见,ethtool命令用于显示/配置网卡硬件(寄存器)。   diff --git a/command/gdb.md b/command/gdb.md index 6f5291de08..56434faa87 100644 --- a/command/gdb.md +++ b/command/gdb.md @@ -23,90 +23,20 @@ gdb(选项)(参数) -s:设置读取的符号表文件。 ``` - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
命令解释示例
file <文件名>加载被调试的可执行程序文件。 -因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。(gdb) file gdb-sample
rRun的简写,运行被调试的程序。 -如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。(gdb) r
cContinue的简写,继续执行被调试程序,直至下一个断点或程序结束。(gdb) c
b <行号> -b <函数名称> -b *<函数名称> -b *<代码地址> d [编号]b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 -其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。 d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。(gdb) b 8 -(gdb) b main -(gdb) b *main -(gdb) b *0x804835c (gdb) d
s, ns: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数; -n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”; -n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。(gdb) s -(gdb) n
si, nisi命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。(gdb) si -(gdb) ni
p <变量名称>Print的简写,显示指定变量(临时变量或全局变量)的值。(gdb) p i -(gdb) p nGlobalVar
display ... undisplay <编号>display,设置程序中断后欲显示的数据及其格式。 -例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令 -“display /i $pc” -其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。 undispaly,取消先前的display设置,编号从1开始递增。(gdb) display /i $pc (gdb) undisplay 1
iinfo的简写,用于显示各类信息,详情请查阅“help i”。(gdb) i r
qQuit的简写,退出GDB调试环境。(gdb) q
help [命令名称]GDB帮助命令,提供对GDB名种命令的解释说明。 -如果指定了“命令名称”参数,则显示该命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。(gdb) help
+命令 | 解释 | 示例 +--- | --- | --- +file <文件名> | 加载被调试的可执行程序文件。
因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 | (gdb) file gdb-sample +r | Run的简写,运行被调试的程序。
如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。 | (gdb) r +c | Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。 | (gdb) c +b <行号>
b <函数名称>
b *<函数名称>
b *<代码地址> d [编号] | b: Breakpoint的简写,设置断点。两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。
其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。如果不了解汇编,可以不予理会此用法。 d: Delete breakpoint的简写,删除指定编号的某个断点,或删除所有断点。断点编号从1开始递增。 | (gdb) b 8(gdb) b main
(gdb) b *main
(gdb) b *0x804835c (gdb) d +s, n | s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数;
n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s 相当于其它调试器中的“Step Into (单步跟踪进入)”;
n 相当于其它调试器中的“Step Over (单步跟踪)”。 这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。 | (gdb) s
(gdb) n +si, ni | si命令类似于s命令,ni命令类似于n命令。所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。 | (gdb) si
(gdb) ni +p <变量名称> | Print的简写,显示指定变量(临时变量或全局变量)的值。 | (gdb) p i
(gdb) p nGlobalVar +display ... undisplay <编号> | display,设置程序中断后欲显示的数据及其格式。
例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令
“display /i $pc”
其中 $pc 代表当前汇编指令,/i 表示以十六进行显示。当需要关心汇编代码时,此命令相当有用。 undispaly,取消先前的display设置,编号从1开始递增。 | (gdb) display /i $pc (gdb) undisplay 1 +i | info的简写,用于显示各类信息,详情请查阅“help i”。 | (gdb) i r +q | Quit的简写,退出GDB调试环境。 | (gdb) q +help [命令名称] | GDB帮助命令,提供对GDB名种命令的解释说明。
如果指定了“命令名称”参数,则显示该命令的详细说明;如果没有指定参数,则分类显示所有GDB命令,供用户进一步浏览和查询。 | (gdb) help ### 参数 diff --git a/command/inotifywait.md b/command/inotifywait.md index 6b8f33639d..e0b504030d 100644 --- a/command/inotifywait.md +++ b/command/inotifywait.md @@ -106,48 +106,17 @@ path=$1 * `--timefmt`是指定时间的输出格式。 * `--format`指定文件变化的详细信息。 -### # 可监听的事件 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
事件描述
access **访问** ,读取文件。
modify **修改** ,文件内容被修改。
attrib **属性** ,文件元数据被修改。
move **移动** ,对文件进行移动操作。
create **创建** ,生成新文件
open **打开** ,对文件进行打开操作。
close **关闭** ,对文件进行关闭操作。
delete **删除** ,文件被删除。
+### 可监听的事件 +事件 | 描述 +--- | --- +access | **访问** ,读取文件。 +modify | **修改** ,文件内容被修改。 +attrib | **属性** ,文件元数据被修改。 +move | **移动** ,对文件进行移动操作。 +create | **创建** ,生成新文件 +open | **打开** ,对文件进行打开操作。 +close | **关闭** ,对文件进行关闭操作。 +delete | **删除** ,文件被删除。 \ No newline at end of file diff --git a/command/iostat.md b/command/iostat.md index f56e2e3610..94f4089bdd 100644 --- a/command/iostat.md +++ b/command/iostat.md @@ -53,70 +53,23 @@ sda1 0.02 0.08 详细说明:第二行是系统信息和监测时间,第三行和第四行显示CPU使用情况(具体内容和mpstat命令相同)。这里主要关注后面I/O输出的信息,如下所示: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
标示说明
Device监测设备名称
rrqm/s每秒需要读取需求的数量
wrqm/s每秒需要写入需求的数量
r/s 每秒实际读取需求的数量
w/s每秒实际写入需求的数量
rsec/s每秒读取区段的数量
wsec/s每秒写入区段的数量
rkB/s每秒实际读取的大小,单位为KB
wkB/s每秒实际写入的大小,单位为KB
avgrq-sz需求的平均大小区段
avgqu-sz需求的平均队列长度
await等待I/O平均的时间(milliseconds)
svctmI/O需求完成的平均时间
%util被I/O需求消耗的CPU百分比
+ +标示 | 说明 +--- | --- +Device | 监测设备名称 +rrqm/s | 每秒需要读取需求的数量 +wrqm/s | 每秒需要写入需求的数量 +r/s | 每秒实际读取需求的数量 +w/s | 每秒实际写入需求的数量 +rsec/s | 每秒读取区段的数量 +wsec/s | 每秒写入区段的数量 +rkB/s | 每秒实际读取的大小,单位为KB +wkB/s | 每秒实际写入的大小,单位为KB +avgrq-sz | 需求的平均大小区段 +avgqu-sz | 需求的平均队列长度 +await | 等待I/O平均的时间(milliseconds) +svctm | I/O需求完成的平均时间 +%util | 被I/O需求消耗的CPU百分比 \ No newline at end of file diff --git a/command/strace.md b/command/strace.md index d42e5d1b58..f2c45f6d15 100644 --- a/command/strace.md +++ b/command/strace.md @@ -239,32 +239,11 @@ exit_group(0) = ? 这是一个很有用的功能,strace会将每次系统调用的发生时间记录下来,只要使用-t/tt/ttt三个参数就可以看到效果了,具体的例子可以自己去尝试。 - - - - - - - - - - - - - - - - - - - - - - - - - -
参数名输出样式说明
-t10:33:04 exit_group(0)输出结果精确到秒
-tt10:33:48.159682 exit_group(0)输出结果精确到微妙
-ttt1262169244.788478 exit_group(0)精确到微妙,而且时间表示为unix时间戳
+参数名 | 输出样式 | 说明 +--- | --- | --- +-t | 10:33:04 exit_group(0) | 输出结果精确到秒 +-tt | 10:33:48.159682 exit_group(0) | 输出结果精确到微妙 +-ttt | 1262169244.788478 exit_group(0) | 精确到微妙,而且时间表示为unix时间戳 **截断输出**