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