sysrq 명령으로 실행되어 syslog의 메모리 정보를 가져온 다음 스크립트가 syslog를 복사하는 스크립트가 있습니다.
echo -m > /proc/sysrq-trigger
문서에 따르면 커널 수준에서 "handle_sysrq"가 호출되고 인터럽트 컨텍스트에서 실행되지만 sysrq
이를 트리거하는 방법에는 두 가지가 있습니다. 그렇죠?
- 하나는 키보드의 키 조합입니다. 그리고
- 또 다른 방법은 적절한 문자를
/proc/sysrq-trigger
파일에 쓰는 것입니다.
syslog/dmesg
이제 메모리 정보가 에코가 반환되기 직전에 기록되는지 아니면 memory-info
에코가 반환된 후에 기록되는지 알고 싶습니다 .
답변1
귀하의 근본적인 질문은 syslog를 복사할 때 메모리 정보가 기록되도록 하는 방법인 것 같습니다...
코드를 확인하지는 않았지만 모두 비동기식이라고 가정합니다. 작업을 직렬화하려면 /dev/kmsg
; 거기에 쓰는 모든 내용이 커널 버퍼에 남게 됩니다. 그처럼
echo m > /proc/sysrq-trigger
echo "whatever you want" > /dev/kmsg
/dev/kmsg
그러면 문제가 해결될 것입니다... 나중에 올바른 내용을 복사했는지 확인할 수 있도록 메시지에 직렬 메시지를 추가하거나 메모리 덤프를 두 개의 메시지로 래핑할 수도 있습니다.