Uma combinação de chave mágica sysreq pode executar um script?

1

Estou passando por interrupções do sistema que parecem estar correlacionadas com altos níveis de uso de RAM (embora a troca não seja usada na maioria das vezes).

Eu gostaria de poder matar o thunderbird e outros hogs da memória através de um script com um combo magic sysreq.

Existe alguma maneira de executar um script via Alt + SysReq ?

    
por Tom Hale 03.03.2018 / 09:04

1 resposta

3

Você pode ligar um script ao Alt + SysRq se modificar as origens do kernel. O tratamento do Alt + SysRq é definido em drivers/tty/sysrq.c . Por exemplo, o Alt + SysRq + f chama a função sysrq_handle_moom() que agenda uma chamada de out_of_memory() para eliminar um processo.

static void moom_callback(struct work_struct *ignored)
{
    /* ... */
    if (!out_of_memory(&oc))
    /* ... */
}

static DECLARE_WORK(moom_work, moom_callback);

static void sysrq_handle_moom(int key)
{
        schedule_work(&moom_work);
}
static struct sysrq_key_op sysrq_moom_op = {
        .handler        = sysrq_handle_moom,
        .help_msg       = "memory-full-oom-kill(f)",
        .action_msg     = "Manual OOM execution",
        .enable_mask    = SYSRQ_ENABLE_SIGNAL,
};
    
por 03.03.2018 / 09:51