我遇到系统挂起,这似乎与高 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,
};