SysRq 魔法键调用哪些程序/命令?

SysRq 魔法键调用哪些程序/命令?

魔法 SysRq 键

神奇的 SysRq 键是 Linux 内核可以理解的组合键,它允许用户执行各种操作低级命令 无论系统的状态如何。它通常用于从冻结中恢复,或在不损坏文件系统的情况下重新启动计算机。

低级命令有哪些表中的键调用?

它们是可以在终端中运行的程序吗?

这些键与 gnome 或 unity 的快捷键有何不同?

答案1

在linux内核源代码中sysrq.c 第 415 行,定义了一个结构体,当按下某个键时会发生什么。所以你看,终端中没有命令被执行,而是调用内核中的硬编码函数。因此,只要内核没有崩溃,您就可以按下这些键,无论哪个应用程序在前台运行,内核都会处理按下的键。

这是有趣的部分:

[...]
415 static struct sysrq_key_op *sysrq_key_table[36] = {
416         &sysrq_loglevel_op,             /* 0 */
417         &sysrq_loglevel_op,             /* 1 */
418         &sysrq_loglevel_op,             /* 2 */
419         &sysrq_loglevel_op,             /* 3 */
420         &sysrq_loglevel_op,             /* 4 */
421         &sysrq_loglevel_op,             /* 5 */
422         &sysrq_loglevel_op,             /* 6 */
423         &sysrq_loglevel_op,             /* 7 */
424         &sysrq_loglevel_op,             /* 8 */
425         &sysrq_loglevel_op,             /* 9 */
426 
427         /*
428          * a: Don't use for system provided sysrqs, it is handled specially on
429          * sparc and will never arrive.
430          */
431         NULL,                           /* a */
432         &sysrq_reboot_op,               /* b */
433         &sysrq_crash_op,                /* c & ibm_emac driver debug */
434         &sysrq_showlocks_op,            /* d */
435         &sysrq_term_op,                 /* e */
436         &sysrq_moom_op,                 /* f */
437         /* g: May be registered for the kernel debugger */
438         NULL,                           /* g */
439         NULL,                           /* h - reserved for help */
440         &sysrq_kill_op,                 /* i */
441 #ifdef CONFIG_BLOCK
442         &sysrq_thaw_op,                 /* j */
443 #else
444         NULL,                           /* j */
445 #endif
446         &sysrq_SAK_op,                  /* k */
447 #ifdef CONFIG_SMP
448         &sysrq_showallcpus_op,          /* l */
449 #else
450         NULL,                           /* l */
451 #endif
452         &sysrq_showmem_op,              /* m */
453         &sysrq_unrt_op,                 /* n */
454         /* o: This will often be registered as 'Off' at init time */
455         NULL,                           /* o */
456         &sysrq_showregs_op,             /* p */
457         &sysrq_show_timers_op,          /* q */
458         &sysrq_unraw_op,                /* r */
459         &sysrq_sync_op,                 /* s */
460         &sysrq_showstate_op,            /* t */
461         &sysrq_mountro_op,              /* u */
462         /* v: May be registered for frame buffer console restore */
463         NULL,                           /* v */
464         &sysrq_showstate_blocked_op,    /* w */
465         /* x: May be registered on ppc/powerpc for xmon */
466         /* x: May be registered on sparc64 for global PMU dump */
467         NULL,                           /* x */
468         /* y: May be registered on sparc64 for global register dump */
469         NULL,                           /* y */
470         &sysrq_ftrace_dump_op,          /* z */
471 };
[...]

从技术上讲,您也可以在终端中调用它们,但是,您可以在 proc 文件系统中编写一个名为/proc/sysrq-trigger.例如,您可以执行以下操作:

echo b >/proc/sysrq-trigger

...它会立即重新启动机器,而不询问或警告或任何东西。与按SysRq-时的效果相同b

答案2

正如外部链接中维基百科文章中所链接的那样...您可以在此处查看该文档:Linux 魔法系统请求密钥 Hack

编辑:

Documentation这也可以在 Linux 内核源码子目录下找到

相关内容