当“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文件。

现在我们想知道内存信息是在 echo 返回之前立即写入syslog/dmesg还是memory-info在 echo 返回之后写入?

答案1

我猜您的根本问题是如何确保在复制系统日志时已记录内存信息......

我没有检查代码,但我认为这都是异步的。如果您想序列化操作,可以通过写入来实现/dev/kmsg;你在那里写的任何东西最终都会在内核缓冲区中。所以像

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

应该可以解决问题...您甚至可以在消息中添加一条串行消息,/dev/kmsg这样您就可以确定之后复制了正确的内容,甚至可以用两条消息包装内存转储。

相关内容