!["echo -m > /proc/sysrq-trigger"가 스크립트에서 실행될 때 프로세스 컨텍스트에서 실행됩니까?](https://linux55.com/image/94471/%22echo%20-m%20%26gt%3B%20%2Fproc%2Fsysrq-trigger%22%EA%B0%80%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%EB%90%A0%20%EB%95%8C%20%ED%94%84%EB%A1%9C%EC%84%B8%EC%8A%A4%20%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%8B%A4%ED%96%89%EB%90%A9%EB%8B%88%EA%B9%8C%3F.png)
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
그러면 문제가 해결될 것입니다... 나중에 올바른 내용을 복사했는지 확인할 수 있도록 메시지에 직렬 메시지를 추가하거나 메모리 덤프를 두 개의 메시지로 래핑할 수도 있습니다.