스크립트를 실행하기 위한 마법의 sysreq 키 조합이 있습니까?

스크립트를 실행하기 위한 마법의 sysreq 키 조합이 있습니까?

높은 RAM 사용량 수준과 관련된 것으로 보이는 시스템 중단 현상이 발생하고 있습니다(스왑은 대부분 사용되지 않지만).

저는 마법의 sysreq 조합이 포함된 스크립트를 사용하여 Thunderbird와 기타 메모리 돼지를 죽일 수 있기를 원합니다.

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

관련 정보