"echo -m > /proc/sysrq-trigger"가 스크립트에서 실행될 때 프로세스 컨텍스트에서 실행됩니까?

"echo -m > /proc/sysrq-trigger"가 스크립트에서 실행될 때 프로세스 컨텍스트에서 실행됩니까?

sysrq 명령으로 실행되어 syslog의 메모리 정보를 가져온 다음 스크립트가 syslog를 복사하는 스크립트가 있습니다.

echo -m > /proc/sysrq-trigger

문서에 따르면 커널 수준에서 "handle_sysrq"가 호출되고 인터럽트 컨텍스트에서 실행되지만 sysrq이를 트리거하는 방법에는 두 가지가 있습니다. 그렇죠?

  1. 하나는 키보드의 키 조합입니다. 그리고
  2. 또 다른 방법은 적절한 문자를 /proc/sysrq-trigger파일에 쓰는 것입니다.

syslog/dmesg이제 메모리 정보가 에코가 반환되기 직전에 기록되는지 아니면 memory-info에코가 반환된 후에 기록되는지 알고 싶습니다 .

답변1

귀하의 근본적인 질문은 syslog를 복사할 때 메모리 정보가 기록되도록 하는 방법인 것 같습니다...

코드를 확인하지는 않았지만 모두 비동기식이라고 가정합니다. 작업을 직렬화하려면 /dev/kmsg; 거기에 쓰는 모든 내용이 커널 버퍼에 남게 됩니다. 그처럼

echo m > /proc/sysrq-trigger
echo "whatever you want" > /dev/kmsg

/dev/kmsg그러면 문제가 해결될 것입니다... 나중에 올바른 내용을 복사했는지 확인할 수 있도록 메시지에 직렬 메시지를 추가하거나 메모리 덤프를 두 개의 메시지로 래핑할 수도 있습니다.

관련 정보