18

kvmモジュールを変更し、カーネルコードにprintkステートメントを追加しました。仮想マシンを実行した後、printkは障害のあるアドレスとゲストOSに関するその他の情報を提供します。

この情報から統計を生成する必要があります.dmesgを使用すると、カーネルスペースで障害のあるアドレスのみを確認できます。つまり、アドレスが0XC0000000を超えています(VMEXITが発生した場合、つまりゲストモードからホストモードに切り替える場合は、障害のあるアドレスが必要です)

kern.logに同じ統計が表示されると、ユーザースペース(0XC0000000未満)から障害のあるアドレスも取得します。したがって、dmesgの容量は限られているように思えます。また、提供される情報はkern.logのサブセットです。
私のkern.logファイルは大きすぎます。grep、join、awkなどのテキスト処理コマンドがファイルで実行するのに時間がかかりすぎるため、kern.logから古いデータを消去しても問題ありません。

私の質問は次
のとおりです。dmesgとkern.logの違いは何ですか?
cronジョブとしてkern.logファイルのサイズを減らす方法は?(過去24時間に追加されたすべてのデータを消去する)
カーネルからprintfのような機能を取得するためのより良い方法はありますか?

4

1 に答える 1

15

/var/log/kern.log彼のローテーションされたログ(/var/log/kern.log.1 /var/log/kern.log.2....)には、カーネルによって生成され、によって処理されるログが含まれていますsyslog

dmesgマニュアルページで説明されているように:

dmesgは、カーネルリングバッファを検査または制御するために使用されます。

実際、前回の起動以降の/var/log/kern.logの最後の16392オクテットが表示されます。

于 2012-07-10T12:33:59.423 に答える