实用工具命令(utility command)

首先介绍使用crash时的实用工具命令。

set命令

set命令是运用非常广泛的命令。指定进程后,就会将进程的上下文切换到指定的进程,显示这个上下文。没有指定时显示当前进程的上下文。进程上下文的初始值为内核发生重大故障时运行的进程的初始值。


crash>set

PID:1474

COMMAND:"sh"

TASK:ffff88001c5c9740[THREAD_INFO:ffff88001b76a000]

CPU:0

STATE:TASK_RUNNING(PANIC)


使用-c选项可以指定CPU,并显示之前在这个CPU上运行的进程。使用-p选项可以显示发生重大故障时运行的进程。

使用set命令可以确认当前的编辑器设置。


crash>set-v|grep edit

edit:vi


要指定命令行编辑模式时,需要在crash启动时指定。


crash-e[vi|emacs]……


设置为emacs,就可以进行与bash相同的键操作。

crash命令有时会输出大量的信息,可以使用下列命令禁用界面的scroll功能。


crash>set scroll off


此外使用下列命令也可以禁用界面的scroll功能。


crash>sf


sf是通过别名定义设置的,是set scroll off的别名。默认的别名定义可以使用alias来确认。

实用工具命令(utility command) - 图1

eval命令

eval命令将输入的表达式的计算结果以十六进制、十进制、八进制以及二进制显示。指定-b选项就会显示在二进制中第几位是1。表达式可以使用四则运算(-、+、*、/、%)、位运算(&、|、^)、shift运算(<<、>>)。


crash>eval 1<<12

hexadecimal:1000(4KB)

decimal:4096

octal:10000

binary:0000000000000000000000000000000000000000000000000001000000000000

crash>eval(~4096-1)

hexadecimal:ffffffffffffeffe

decimal:18446744073709547518(-4098)

octal:1777777777777777767776

binary:1111111111111111111111111111111111111111111111111110111111111110

crash>eval-b 10001e1

hexadecimal:10001e1

decimal:16777697

octal:100000741

binary:0000000000000000000000000000000000000001000000000000000111100001

bits set:24 8 7 6 5 0


ascii命令

ascii命令将十六进制转换为字符串。


crash>rd modprobe_path 2

ffffffff813213a0:6f6d2f6e6962732f 000065626f727064/sbin/modprobe..

crash>ascii 6f6d2f6e6962732f

6f6d2f6e6962732f:/sbin/mo


history命令

history命令显示已输入命令的记录。也可以使用别名h。


crash>history

[1]set

[2]set vi

[3]set scroll off

crash>h

[1]set

[2]set vi

[3]set scroll off