我们有一个在 sysrq 命令下运行的脚本来获取 syslog 中的内存信息,然后脚本复制 syslog。
echo -m > /proc/sysrq-trigger
从文档中我看到在内核级别“handle_sysrq”被调用,它在中断上下文中运行,但有两种sysrq
触发方式,对吧?
- 一是键盘上的组合键。和
- 另一种方法是将适当的字符写入
/proc/sysrq-trigger
文件。
现在我们想知道内存信息是在 echo 返回之前立即写入syslog/dmesg
还是memory-info
在 echo 返回之后写入?
答案1
我猜您的根本问题是如何确保在复制系统日志时已记录内存信息......
我没有检查代码,但我认为这都是异步的。如果您想序列化操作,可以通过写入来实现/dev/kmsg
;你在那里写的任何东西最终都会在内核缓冲区中。所以像
echo m > /proc/sysrq-trigger
echo "whatever you want" > /dev/kmsg
应该可以解决问题...您甚至可以在消息中添加一条串行消息,/dev/kmsg
这样您就可以确定之后复制了正确的内容,甚至可以用两条消息包装内存转储。