rsyslog
私はDebianバスターを使用しています。
私はsysvinit
systemdではなく古いスタイルを使用しています。rsyslog
ほとんどのinitスクリプトが実行された後、init起動シーケンスの後半に開始されました。
起動プロセス中に、メッセージdmesg
とrsyslogが起動する前に実行される他の起動スクリプトからの他の以前のログメッセージは失われません。rsyslog
起動時にすぐに記録されます。
rsyslogが実行されていない場合、これらのメッセージはどこに保存されますか?
初期起動メッセージが記録されないように、rsyslogを起動する前にこの「キャッシュ」を消去できますか?
あるいは、より良い方法は、フィルタリングしてデフォルトのsyslogファイルに書き込むことができることです。
*.* -/var/log/syslog
しかし、もう一方はログインしていません。
*.* |/dev/xconsole
アップデートと説明
私が解決しようとしている問題が完全にはっきりしていない可能性があることに気づきました。したがって、状況のいくつかの説明は次のとおりです。
syslog
標準ロギング(例:)に加えて、/var/log/syslog
に同じ情報を記録しており、/dev/xconsole
デスクトップセッションにユーザーとしてログインした場合は、バックグラウンドで次のコマンドを使用します。
cat /dev/xconsole
これにより、自分の背景に新しいログが表示されることをすぐに確認できます。また、通常のファイルと/dev/xconsole
は異なり、読んだ後は空になります。したがって、ログアウトして再度ログインすると、古いメッセージは表示されず、新しいメッセージのみが表示されます。
これで問題は、ブート後にカーネルバッファにログが多すぎるため、起動時に無駄なデバッグ初期ブート情報でフル容量をrsyslog
埋めることです。/dev/xconsole
私が最も興味を持っているのは、失われた遅いブートメッセージです。初めて実行した後にのみcat
/dev/xconsole
スペースが解放され、新しいメッセージを受け取ることができます。
私は次のような醜いハッキングを追加しました/etc/rsyslog.conf
。
:msg, startswith, "\[ " stop
*.* |/dev/xconsole
これにより、デフォルトでは、1秒秒のカウンターで始まるすべての初期メッセージが削除されます[ 0.000000]
が、後続のすべてのメッセージを受け入れます。 [ 14.348189]
これはうまくいきますが、汚い解決策だと思います。
それでは、興味のない初期の起動メッセージをどのように削除し、便利なinit起動スクリプトメッセージを記録できますか?
ベストアンサー1
プロセスはsyslog
通常、次の 3 つのソースからメッセージを取得します。
- アプリケーションを通じて
/dev/log
- ポート514を介したネットワーク接続
- カーネル経由
/proc/kmsg
/dev/log
最初に... 従来、プロセスが開始される前に送信されたすべてのアプリケーションはsyslogd
メッセージを失います。 systemd
状況が少し混乱しているからそれ代わりにこのソケットを聞くことができます。これでsyslogd
読むことができますsystemd
。しかし、それはあなたが心配する問題ではないようです。
2番目のものは明らかにあなたの質問とは関係ありません。
だから私たちは3番目に集中します。以下は、で始まる行です[...]
。ここで数字は開始後のタイムスタンプです。これは、ユーザー空間アプリケーションではなくカーネルによって生成されたメッセージです。
カーネルメッセージは「リングバッファ」に保存され、rsyslog
起動時にこのバッファを読み込み、設定ファイルにデータを入れるように指示した場所にデータを入れます。
一般的な状況では大丈夫です。何かが正しくブートされない場合に備えて、すべてのカーネルブートメッセージのログを望んでいます。
ただし、気にしない場合は、このコマンドを使用できますdmesg --clear
。これにより、「リングバッファ」がクリアされます。したがって、起動前に起動順序に入れると、rsyslog
デーモンはバッファがすでに消去されているカーネルメッセージを読み取ることはありません。
今どのように実行する操作は、実行しているディストリビューションによって大きく異なります。従来の方法では、sysvinit
syslog起動スクリプトの前に実行されるRCファイルを生成する必要があります。 systemdを使用すると、syslogプロセスの前提条件を持つユニットを作成できます。