~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/Documentation/translations/zh_CN/admin-guide/sysrq.rst

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /Documentation/translations/zh_CN/admin-guide/sysrq.rst (Version linux-6.12-rc7) and /Documentation/translations/zh_CN/admin-guide/sysrq.rst (Version linux-5.16.20)


  1 .. include:: ../disclaimer-zh_CN.rst                1 .. include:: ../disclaimer-zh_CN.rst
  2                                                     2 
  3 :Original: Documentation/admin-guide/sysrq.rst      3 :Original: Documentation/admin-guide/sysrq.rst
  4                                                     4 
  5 :翻译:                                            5 :翻译:
  6                                                     6 
  7  黄军华 Junhua Huang <huang.junhua@zte.com.c      7  黄军华 Junhua Huang <huang.junhua@zte.com.cn>
  8                                                     8 
  9 :校译:                                            9 :校译:
 10                                                    10 
 11  司延腾 Yanteng Si <siyanteng@loongson.cn>       11  司延腾 Yanteng Si <siyanteng@loongson.cn>
 12                                                    12 
 13 .. _cn_admin-guide_sysrq:                          13 .. _cn_admin-guide_sysrq:
 14                                                    14 
 15 Linux 魔法系统请求键骇客                  15 Linux 魔法系统请求键骇客
 16 ========================                           16 ========================
 17                                                    17 
 18 针对 sysrq.c 的文档说明                     18 针对 sysrq.c 的文档说明
 19                                                    19 
 20 什么是魔法 SysRq 键?                       20 什么是魔法 SysRq 键?
 21 ~~~~~~~~~~~~~~~~~~~~~                              21 ~~~~~~~~~~~~~~~~~~~~~
 22                                                    22 
 23 它是一个你可以输入的具有魔法般     23 它是一个你可以输入的具有魔法般的组合键。
 24 无论内核在做什么,内核都会响应      24 无论内核在做什么,内核都会响应 SysRq 键的输入,除非内核完全卡死。
 25                                                    25 
 26 如何使能魔法 SysRq 键?                    26 如何使能魔法 SysRq 键?
 27 ~~~~~~~~~~~~~~~~~~~~~~~                            27 ~~~~~~~~~~~~~~~~~~~~~~~
 28                                                    28 
 29 在配置内核时,我们需要设置 'Magic     29 在配置内核时,我们需要设置 'Magic SysRq key (CONFIG_MAGIC_SYSRQ)' 为 'Y'。
 30 当运行一个编译进 sysrq 功能的内核     30 当运行一个编译进 sysrq 功能的内核时,/proc/sys/kernel/sysrq 控制着被
 31 SysRq 键调用的功能许可。这个文件     31 SysRq 键调用的功能许可。这个文件的默认值由 CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE
 32 配置符号设定,文件本身默认设置     32 配置符号设定,文件本身默认设置为 1。以下是 /proc/sys/kernel/sysrq 中可能的
 33 值列表:                                       33 值列表:
 34                                                    34 
 35    -  0 - 完全不使能 SysRq 键                35    -  0 - 完全不使能 SysRq 键
 36    -  1 - 使能 SysRq 键的全部功能          36    -  1 - 使能 SysRq 键的全部功能
 37    - >1 - 对于允许的 SysRq 键功能的     37    - >1 - 对于允许的 SysRq 键功能的比特掩码(参见下面更详细的功能描述)::
 38                                                    38 
 39           2 =   0x2 - 使能对控制台日志     39           2 =   0x2 - 使能对控制台日志记录级别的控制
 40           4 =   0x4 - 使能对键盘的控制     40           4 =   0x4 - 使能对键盘的控制 (SAK, unraw)
 41           8 =   0x8 - 使能对进程的调试     41           8 =   0x8 - 使能对进程的调试导出等
 42          16 =  0x10 - 使能同步命令           42          16 =  0x10 - 使能同步命令
 43          32 =  0x20 - 使能重新挂载只读     43          32 =  0x20 - 使能重新挂载只读
 44          64 =  0x40 - 使能对进程的信号     44          64 =  0x40 - 使能对进程的信号操作 (term, kill, oom-kill)
 45         128 =  0x80 - 允许重启、断电        45         128 =  0x80 - 允许重启、断电
 46         256 = 0x100 - 允许让所有实时任     46         256 = 0x100 - 允许让所有实时任务变普通任务
 47                                                    47 
 48 你可以通过如下命令把值设置到这     48 你可以通过如下命令把值设置到这个文件中::
 49                                                    49 
 50     echo "number" >/proc/sys/kernel/sysrq          50     echo "number" >/proc/sys/kernel/sysrq
 51                                                    51 
 52 这里被写入的 number 可以是 10 进制     52 这里被写入的 number 可以是 10 进制数,或者是带着 0x 前缀的 16 进制数。
 53 CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE 必须是以     53 CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE 必须是以 16 进制数写入。
 54                                                    54 
 55 注意,``/proc/sys/kernel/sysrq`` 的值只     55 注意,``/proc/sys/kernel/sysrq`` 的值只影响通过键盘触发 SySRq 的调用,对于
 56 通过 ``/proc/sysrq-trigger`` 的任何操作     56 通过 ``/proc/sysrq-trigger`` 的任何操作调用都是允许的
 57 (通过具有系统权限的用户)。         57 (通过具有系统权限的用户)。
 58                                                    58 
 59 如何使用魔法 SysRq 键?                    59 如何使用魔法 SysRq 键?
 60 ~~~~~~~~~~~~~~~~~~~~~~~                            60 ~~~~~~~~~~~~~~~~~~~~~~~
 61                                                    61 
 62 在 x86 架构上                                  62 在 x86 架构上
 63         你可以按下键盘组合键 :kbd:`A     63         你可以按下键盘组合键 :kbd:`ALT-SysRq-<command key>`。
 64                                                    64 
 65         .. note::                                  65         .. note::
 66            一些键盘可能没有标识 'SyS     66            一些键盘可能没有标识 'SySRq' 键。'SySRq' 键也被当做 'Print Screen'键。
 67            同时有些键盘无法处理同     67            同时有些键盘无法处理同时按下这么多键,因此你可以先按下键盘 :kbd:`Alt` 键,
 68            然后按下键盘 :kbd:`SysRq` 键     68            然后按下键盘 :kbd:`SysRq` 键,再释放键盘 :kbd:`SysRq` 键,之后按下键盘上命令键
 69            :kbd:`<command key>`,最后释放     69            :kbd:`<command key>`,最后释放所有键。
 70                                                    70 
 71 在 SPARC 架构上                                71 在 SPARC 架构上
 72         你可以按下键盘组合键 :kbd:`A     72         你可以按下键盘组合键 :kbd:`ALT-STOP-<command key>` 。
 73                                                    73 
 74 在串行控制台(只针对 PC 类型的标     74 在串行控制台(只针对 PC 类型的标准串口)
 75         你可以发一个 ``BREAK`` ,然后     75         你可以发一个 ``BREAK`` ,然后在 5 秒内发送一个命令键,
 76         发送 ``BREAK`` 两次将被翻译为     76         发送 ``BREAK`` 两次将被翻译为一个正常的 BREAK 操作。
 77                                                    77 
 78 在 PowerPC 架构上                              78 在 PowerPC 架构上
 79         按下键盘组合键 :kbd:`ALT - Prin     79         按下键盘组合键 :kbd:`ALT - Print Screen` (或者 :kbd:`F13`) - :kbd:`<命令键>` 。
 80         :kbd:`Print Screen` (或者 :kbd:`F1     80         :kbd:`Print Screen` (或者 :kbd:`F13`) - :kbd:`<命令键>` 或许也能实现。
 81                                                    81 
 82 在其他架构上                                 82 在其他架构上
 83         如果你知道其他架构的组合     83         如果你知道其他架构的组合键,请告诉我,我可以把它们添加到这部分。
 84                                                    84 
 85 在所有架构上                                 85 在所有架构上
 86         写一个字符到 /proc/sysrq-trigger     86         写一个字符到 /proc/sysrq-trigger 文件,例如::
 87                                                    87 
 88                 echo t > /proc/sysrq-trigger       88                 echo t > /proc/sysrq-trigger
 89                                                    89 
 90 这个命令键 :kbd:`<command key>` 是区分     90 这个命令键 :kbd:`<command key>` 是区分大小写的。
 91                                                    91 
 92 什么是命令键?                              92 什么是命令键?
 93 ~~~~~~~~~~~~~~                                     93 ~~~~~~~~~~~~~~
 94                                                    94 
 95 =========== ==================================     95 =========== ================================================================
 96 命令键           功能                         96 命令键           功能
 97 =========== ==================================     97 =========== ================================================================
 98 ``b``       将立即重启系统,不会同     98 ``b``       将立即重启系统,不会同步或者卸载磁盘。
 99                                                    99 
100 ``c``       将执行系统 crash,如果配    100 ``c``       将执行系统 crash,如果配置了系统 crashdump,将执行 crashdump。
101                                                   101 
102 ``d``       显示所有持有的锁。           102 ``d``       显示所有持有的锁。
103                                                   103 
104 ``e``       发送 SIGTERM 信号给所有进    104 ``e``       发送 SIGTERM 信号给所有进程,除了 init 进程。
105                                                   105 
106 ``f``       将调用 oom killer 杀掉一个    106 ``f``       将调用 oom killer 杀掉一个过度占用内存的进程,如果什么任务都没杀,
107             也不会 panic。                    107             也不会 panic。
108                                                   108 
109 ``g``       kgdb 使用(内核调试器)    109 ``g``       kgdb 使用(内核调试器)。
110                                                   110 
111 ``h``       将会显示帮助。(实际上    111 ``h``       将会显示帮助。(实际上除了这里列举的键,其他的都将显示帮助,
112             但是 ``h`` 容易记住):-)       112             但是 ``h`` 容易记住):-)
113                                                   113 
114 ``i``       发送 SIGKILL 给所有进程,    114 ``i``       发送 SIGKILL 给所有进程,除了 init 进程。
115                                                   115 
116 ``j``       强制性的 “解冻它” - 用    116 ``j``       强制性的 “解冻它” - 用于被 FIFREEZE ioctl 操作冻住的文件系统。
117                                                   117 
118 ``k``       安全访问秘钥(SAK)杀掉在    118 ``k``       安全访问秘钥(SAK)杀掉在当前虚拟控制台的所有程序,注意:参考
119             下面 SAK 节重要论述。         119             下面 SAK 节重要论述。
120                                                   120 
121 ``l``       显示所有活动 cpu 的栈回    121 ``l``       显示所有活动 cpu 的栈回溯。
122                                                   122 
123 ``m``       将导出当前内存信息到你    123 ``m``       将导出当前内存信息到你的控制台。
124                                                   124 
125 ``n``       用于使所有实时任务变成    125 ``n``       用于使所有实时任务变成普通任务。
126                                                   126 
127 ``o``       将关闭系统(如果配置和    127 ``o``       将关闭系统(如果配置和支持的话)。
128                                                   128 
129 ``p``       将导出当前寄存器和标志    129 ``p``       将导出当前寄存器和标志位到控制台。
130                                                   130 
131 ``q``       将导出每个 cpu 上所有已    131 ``q``       将导出每个 cpu 上所有已装备的高精度定时器(不是完整的
132             time_list 文件显示的 timers    132             time_list 文件显示的 timers)和所有时钟事件设备的详细信息。
133                                                   133 
134 ``r``       关闭键盘的原始模式,设    134 ``r``       关闭键盘的原始模式,设置为转换模式。
135                                                   135 
136 ``s``       将尝试同步所有的已挂载    136 ``s``       将尝试同步所有的已挂载文件系统。
137                                                   137 
138 ``t``       将导出当前所有任务列表    138 ``t``       将导出当前所有任务列表和它们的信息到控制台。
139                                                   139 
140 ``u``       将尝试重新挂载已挂载文    140 ``u``       将尝试重新挂载已挂载文件系统为只读。
141                                                   141 
142 ``v``       强制恢复帧缓存控制台。     142 ``v``       强制恢复帧缓存控制台。
143 ``v``       触发 ETM 缓存导出 [ARM 架    143 ``v``       触发 ETM 缓存导出 [ARM 架构特有]
144                                                   144 
145 ``w``       导出处于不可中断状态(    145 ``w``       导出处于不可中断状态(阻塞)的任务。
146                                                   146 
147 ``x``       在 ppc/powerpc 架构上用于 xm    147 ``x``       在 ppc/powerpc 架构上用于 xmon 接口。
148             在 sparc64 架构上用于显示    148             在 sparc64 架构上用于显示全局的 PMU(性能监控单元)寄存器。
149             在 MIPS 架构上导出所有的     149             在 MIPS 架构上导出所有的 tlb 条目。
150                                                   150 
151 ``y``       显示全局 cpu 寄存器 [SPARC-    151 ``y``       显示全局 cpu 寄存器 [SPARC-64 架构特有]
152                                                   152 
153 ``z``       导出 ftrace 缓存信息            153 ``z``       导出 ftrace 缓存信息
154                                                   154 
155 ``0``-``9`` 设置控制台日志级别,该    155 ``0``-``9`` 设置控制台日志级别,该级别控制什么样的内核信息将被打印到你的
156             控制台。(比如 ``0`` ,将    156             控制台。(比如 ``0`` ,将使得只有紧急信息,像 PANICs or OOPSes
157             才能到你的控制台。)        157             才能到你的控制台。)
158 =========== ==================================    158 =========== ================================================================
159                                                   159 
160 好了,我能用他们做什么呢?           160 好了,我能用他们做什么呢?
161 ~~~~~~~~~~~~~~~~~~~~~~~~~~                        161 ~~~~~~~~~~~~~~~~~~~~~~~~~~
162                                                   162 
163 嗯,当你的 X 服务端或者 svgalib 程    163 嗯,当你的 X 服务端或者 svgalib 程序崩溃,unraw(r) 非原始模式命令键是非常
164 方便的。                                      164 方便的。
165                                                   165 
166 sak(k)(安全访问秘钥)在你尝试登    166 sak(k)(安全访问秘钥)在你尝试登陆的同时,又想确保当前控制台没有可以获取你的
167 密码的特洛伊木马程序运行时是有    167 密码的特洛伊木马程序运行时是有用的。它会杀掉给定控制台的所有程序,这样你
168 就可以确认当前的登陆提示程序是    168 就可以确认当前的登陆提示程序是实际来自 init 进程的程序,而不是某些特洛伊
169 木马程序。                                   169 木马程序。
170                                                   170 
171 .. important::                                    171 .. important::
172                                                   172 
173    在其实际的形式中,在兼容 C2 安    173    在其实际的形式中,在兼容 C2 安全标准的系统上,它不是一个真正的 SAK,
174    它也不应该误认为此。                 174    它也不应该误认为此。
175                                                   175 
176 似乎其他人发现其可以作为(系统    176 似乎其他人发现其可以作为(系统终端联机键)当你想退出一个程序,
177 同时不会让你切换控制台的方法。    177 同时不会让你切换控制台的方法。(比如,X 服务端或者 svgalib 程序)
178                                                   178 
179 ``reboot(b)`` 是个好方法,当你不能    179 ``reboot(b)`` 是个好方法,当你不能关闭机器时,它等同于按下"复位"按钮。
180                                                   180 
181 ``crash(c)`` 可以用于手动触发一个 cr    181 ``crash(c)`` 可以用于手动触发一个 crashdump,当系统卡住时。
182 注意当 crashdump 机制不可用时,这    182 注意当 crashdump 机制不可用时,这个只是触发一个内核 crash。
183                                                   183 
184 ``sync(s)`` 在拔掉可移动介质之前,    184 ``sync(s)`` 在拔掉可移动介质之前,或者在使用不提供优雅关机的
185 救援 shell 之后很方便 -- 它将确保    185 救援 shell 之后很方便 -- 它将确保你的数据被安全地写入磁盘。注意,在你看到
186 屏幕上出现 "OK" 和 "Done" 之前,同    186 屏幕上出现 "OK" 和 "Done" 之前,同步还没有发生。
187                                                   187 
188 ``umount(u)`` 可以用来标记文件系统    188 ``umount(u)`` 可以用来标记文件系统正常卸载,从正在运行的系统角度来看,它们将
189 被重新挂载为只读。这个重新挂载    189 被重新挂载为只读。这个重新挂载动作直到你看到 "OK" 和 "Done" 信息出现在屏幕上
190 才算完成。                                   190 才算完成。
191                                                   191 
192 日志级别 ``0`` - ``9`` 用于当你的控    192 日志级别 ``0`` - ``9`` 用于当你的控制台被大量的内核信息冲击,你不想看见的时候。
193 选择 ``0`` 将禁止除了最紧急的内核    193 选择 ``0`` 将禁止除了最紧急的内核信息外的所有的内核信息输出到控制台。(但是如果
194 syslogd/klogd 进程是运行的,它们仍    194 syslogd/klogd 进程是运行的,它们仍将被记录。)
195                                                   195 
196 ``term(e)`` 和 ``kill(i)`` 用于当你有些    196 ``term(e)`` 和 ``kill(i)`` 用于当你有些有点失控的进程,你无法通过其他方式杀掉
197 它们的时候,特别是它正在创建其    197 它们的时候,特别是它正在创建其他进程。
198                                                   198 
199 "just thaw ``it(j)`` " 用于当你的系统    199 "just thaw ``it(j)`` " 用于当你的系统由于一个 FIFREEZE ioctl 调用而产生的文件
200 系统冻结,而导致的不响应时。        200 系统冻结,而导致的不响应时。
201                                                   201 
202 有的时候 SysRq 键在使用它之后,看    202 有的时候 SysRq 键在使用它之后,看起来像是“卡住”了,我能做些什么?
203 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    203 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
204                                                   204 
205 这也会发生在我这,我发现轻敲键    205 这也会发生在我这,我发现轻敲键盘两侧的 shift、alt 和 control 键,然后再次敲击
206 一个无效的 SysRq 键序列可以解决问    206 一个无效的 SysRq 键序列可以解决问题。(比如,像键盘组合键 :kbd:`alt-sysrq-z` )
207 切换到另一个虚拟控制台(键盘操    207 切换到另一个虚拟控制台(键盘操作 :kbd:`ALT+Fn` ),然后再切回来应该也有帮助。
208                                                   208 
209 我敲击了 SysRq 键,但像是什么都没    209 我敲击了 SysRq 键,但像是什么都没发生,发生了什么错误?
210 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    210 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
211                                                   211 
212 有一些键盘对于 SysRq 键设置了不同    212 有一些键盘对于 SysRq 键设置了不同的键值,而不是提前定义的 99
213 (查看在 ``include/uapi/linux/input-event-co    213 (查看在 ``include/uapi/linux/input-event-codes.h`` 文件中 ``KEY_SYSRQ`` 的定义)
214 或者就根本没有 SysRq 键。在这些场    214 或者就根本没有 SysRq 键。在这些场景下,执行 ``showkey -s`` 命令来找到一个合适
215 的扫描码序列,然后使用 ``setkeycode    215 的扫描码序列,然后使用 ``setkeycodes <sequence> 99`` 命令映射这个序列值到通用
216 的 SysRq 键编码上(比如 ``setkeycodes     216 的 SysRq 键编码上(比如 ``setkeycodes e05b 99`` )。最好将这个命令放在启动脚本
217 中。                                            217 中。
218 哦,顺便说一句,你十秒钟不输入    218 哦,顺便说一句,你十秒钟不输入任何东西就将退出 “showkey”。
219                                                   219 
220 我想添加一个 SysRq 键事件到一个模    220 我想添加一个 SysRq 键事件到一个模块中,如何去做呢?
221 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    221 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
222                                                   222 
223 为了注册一个基础函数到这个表中    223 为了注册一个基础函数到这个表中,首先你必须包含 ``include/linux/sysrq.h`` 头
224 文件,这个头文件定义了你所需要    224 文件,这个头文件定义了你所需要的所有东西。然后你必须创建一个 ``sysrq_key_op``
225 结构体,然后初始化它,使用如下    225 结构体,然后初始化它,使用如下内容,A) 你将使用的这个键的处理函数, B) 一个
226 help_msg 字符串,在 SysRq 键打印帮助    226 help_msg 字符串,在 SysRq 键打印帮助信息时将打印出来,C) 一个 action_msg 字
227 符串,就在你的处理函数调用前打    227 符串,就在你的处理函数调用前打印出来。你的处理函数必须符合在 'sysrq.h' 文件中
228 的函数原型。                                228 的函数原型。
229                                                   229 
230 在 ``sysrq_key_op`` 结构体被创建后,    230 在 ``sysrq_key_op`` 结构体被创建后,你可以调用内核函数
231 ``register_sysrq_key(int key, const struct sys    231 ``register_sysrq_key(int key, const struct sysrq_key_op *op_p);``,
232 该函数在表中的 'key' 对应位置内容    232 该函数在表中的 'key' 对应位置内容是空的情况下,将通过 ``op_p`` 指针注册这个操作
233 函数到表中 'key' 对应位置上。在模    233 函数到表中 'key' 对应位置上。在模块卸载的时候,你必须调用
234 ``unregister_sysrq_key(int key, const struct s    234 ``unregister_sysrq_key(int key, const struct sysrq_key_op *op_p)`` 函数,该函数
235 只有在当前该键对应的处理函数被    235 只有在当前该键对应的处理函数被注册到了 'key' 对应位置时,才会移除 'op_p' 指针
236 对应的键值操作函数。这是为了防    236 对应的键值操作函数。这是为了防止在你注册之后,该位置被改写的情况。
237                                                   237 
238 魔法 SysRq 键系统的工作原理是将键    238 魔法 SysRq 键系统的工作原理是将键对应操作函数注册到键的操作查找表,
239 该表定义在 'drivers/tty/sysrq.c' 文件    239 该表定义在 'drivers/tty/sysrq.c' 文件中。
240 该键表有许多在编译时候就注册进    240 该键表有许多在编译时候就注册进去的操作函数,但是是可变的。
241 并且有两个函数作为操作该表的接    241 并且有两个函数作为操作该表的接口被导出::
242                                                   242 
243         register_sysrq_key 和 unregister_sysr    243         register_sysrq_key 和 unregister_sysrq_key.
244                                                   244 
245 当然,永远不要在表中留下无效指    245 当然,永远不要在表中留下无效指针,即,当你的模块存在调用 register_sysrq_key()
246 函数,它一定要调用 unregister_sysrq_k    246 函数,它一定要调用 unregister_sysrq_key() 来清除它使用过的 SysRq 键表条目。
247 表中的空指针是安全的。:)               247 表中的空指针是安全的。:)
248                                                   248 
249 如果对于某种原因,在 handle_sysrq     249 如果对于某种原因,在 handle_sysrq 调用的处理函数中,你认为有必要调用
250 handle_sysrq 函数时,你必须意识到当    250 handle_sysrq 函数时,你必须意识到当前你处于一个锁中(你同时也处于一个中断处理
251 函数中,这意味着不能睡眠)。所    251 函数中,这意味着不能睡眠)。所以这时你必须使用 ``__handle_sysrq_nolock`` 替代。
252                                                   252 
253 当我敲击一个 SysRq 组合键时,只有    253 当我敲击一个 SysRq 组合键时,只有标题打印出现在控制台?
254 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    254 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
255                                                   255 
256 SysRq 键的输出和所有其他控制台输    256 SysRq 键的输出和所有其他控制台输出一样,受制于控制台日志级别控制。
257 这意味着,如果内核以发行版内核    257 这意味着,如果内核以发行版内核中常见的 "quiet" 方式启动,则输出可能不会出现在实际
258 的控制台上,即使它会出现在 dmesg     258 的控制台上,即使它会出现在 dmesg 缓存中,也可以通过 dmesg 命令和 ``/proc/kmsg``
259 文件的消费访问到。作为一个特例    259 文件的消费访问到。作为一个特例,来自 sysrq 命令的标题行将被传递给所有控制台
260 使用者,就好像当前日志级别是最    260 使用者,就好像当前日志级别是最大的一样。如果只发出标题头,则几乎可以肯定内核日志
261 级别太低。如果你需要控制台上的    261 级别太低。如果你需要控制台上的输出,那么你将需要临时提高控制台日志级别,通过使用
262 键盘组合键 :kbd:`alt-sysrq-8` 或者::       262 键盘组合键 :kbd:`alt-sysrq-8` 或者::
263                                                   263 
264     echo 8 > /proc/sysrq-trigger                  264     echo 8 > /proc/sysrq-trigger
265                                                   265 
266 在触发了你感兴趣的 SysRq 键命令后    266 在触发了你感兴趣的 SysRq 键命令后,记得恢复日志级别到正常情况。
267                                                   267 
268 我有很多问题时,可以请教谁?        268 我有很多问题时,可以请教谁?
269 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~                      269 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
270                                                   270 
271 请教在内核邮件列表上的人,邮箱    271 请教在内核邮件列表上的人,邮箱:
272         linux-kernel@vger.kernel.org              272         linux-kernel@vger.kernel.org
273                                                   273 
274 致谢                                            274 致谢
275 ~~~~                                              275 ~~~~
276                                                   276 
277 - Mydraal <vulpyne@vulpyne.net> 撰写了该文    277 - Mydraal <vulpyne@vulpyne.net> 撰写了该文件
278 - Adam Sulmicki <adam@cfar.umd.edu> 进行了    278 - Adam Sulmicki <adam@cfar.umd.edu> 进行了更新
279 - Jeremy M. Dolan <jmd@turbogeek.org> 在 2001/    279 - Jeremy M. Dolan <jmd@turbogeek.org> 在 2001/01/28 10:15:59 进行了更新
280 - Crutcher Dunnavant <crutcher+kernel@datastack    280 - Crutcher Dunnavant <crutcher+kernel@datastacks.com> 添加键注册部分
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php