Quais são os programas / comandos que a chave mágica do SysRq invoca?

3

De Chave do Magic SysRq

The magic SysRq key is a key combination understood by the Linux kernel, which allows the user to perform various low level commands regardless of the system's state. It is often used to recover from freezes, or to reboot a computer without corrupting the filesystem.

Quais são os comandos de baixo nível que as chamam as chaves na tabela ?

São programas que podem ser executados no terminal?

Quão diferentes são as chaves dessas teclas de atalho para o gnome ou a unidade?

    
por Tim 22.05.2015 / 13:41

2 respostas

4

No código-fonte do kernel linux em sysrq.c na linha 415 , existe uma estrutura definida, o que deve acontecer quando uma determinada tecla é pressionada. Então você vê, nenhum comando em um terminal é excitado, em vez disso, são chamadas funções codificadas no kernel. Então, enquanto o kernel não estiver travado, você pode pressionar essas teclas, não importa qual aplicativo está rodando em primeiro plano, o kernel manipula as teclas pressionadas.

Aqui está a parte interessante:

[...]
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 };
[...]

Tecnicamente, você pode chamá-los também em um terminal. Mas, você escreve em um pseudo-arquivo no sistema de arquivos proc chamado /proc/sysrq-trigger . Por exemplo, você pode fazer um:

echo b >/proc/sysrq-trigger

... que instantaneamente reinicia a máquina, sem perguntar ou avisar ou qualquer coisa. É o mesmo que quando você pressiona SysRq - b .

    
por 22.05.2015 / 14:34
2

como linkado no artigo da wikipedia em links externos ... você pode ver essa documentação aqui: Hacks de chave de solicitação do sistema Linux Magic

editar :

isto também é encontrado na fonte do kernel Linux sob o subdiretório Documentation

    
por 22.05.2015 / 13:50