神奇的 sysreq 键组合可以运行脚本吗?

神奇的 sysreq 键组合可以运行脚本吗?

我遇到系统挂起,这似乎与高 RAM 使用级别相关(尽管交换大部分未使用)。

我希望能够通过带有神奇 sysreq 组合的脚本来杀死雷鸟和其他内存消耗者。

Alt有什么方法可以通过+运行脚本吗SysReq

答案1

如果修改内核源代码,则可以将脚本挂接到 Alt+SysRq 中。 Alt+SysRq 处理在 中定义drivers/tty/sysrq.c。例如,Alt+SysRq+f 调用sysrq_handle_moom()调度调用来out_of_memory()终止进程的函数。

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,
};

相关内容