![스크립트를 실행하기 위한 마법의 sysreq 키 조합이 있습니까?](https://linux55.com/image/128786/%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0%20%EC%9C%84%ED%95%9C%20%EB%A7%88%EB%B2%95%EC%9D%98%20sysreq%20%ED%82%A4%20%EC%A1%B0%ED%95%A9%EC%9D%B4%20%EC%9E%88%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
높은 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,
};