"echo -m> /proc/sysrq-trigger"がスクリプトで実行されると、プロセスコンテキストで実行されますか?

"echo -m> /proc/sysrq-trigger"がスクリプトで実行されると、プロセスコンテキストで実行されますか?

sysrq コマンドで実行され、syslog のメモリ情報を取得し、スクリプトが syslog をコピーするスクリプトがあります。

echo -m > /proc/sysrq-trigger

ドキュメントによると、カーネルレベルで "handle_sysrq"が呼び出され、割り込みコンテキストで実行されますが、sysrqそれをトリガする方法は2つあります。そうですか?

  1. 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これで問題は解決します...後で正しい内容をコピーしたことを確認するために、メッセージにシリアルメッセージを追加するか、メモリダンプを2つのメッセージにラップすることもできます。

関連情報