dmesgコンテンツをファイルに記録するにはどうすればよいですか?


18

私はゼロから構築されたLinux OSを実行しています。カーネルメッセージバッファ(dmesg)を、再起動後も保持されるファイルに保存したいと思います。

syslogdを実行しようとしましたが、既存のカーネルメッセージバッファーも、syslogdの起動後にカーネルが生成した新しいメッセージもない、新しいログファイル/ var / log / messagesを開きました。

カーネルメッセージバッファーを永続的なログファイルに保存するにはどうすればよいですか?


どのsyslogdを実行していますか:sysklogd、busybox、inetutils、systemd、rsyslog、その他?
ジル 'SO-悪であるのをやめる'

回答:


16

/etc/rsyslog.confまたはを確認する必要があります/etc/syslog.conf。早い段階で次のような行がある場合:

*.*                -/var/log/syslog

dmesgからのものを含め、すべてがそのファイルに移動するはずです。より適切にターゲットを設定するには:

kernel.*           -/var/log/dmesg

何らかの理由でそれが失敗した場合、定期的に(例えばcron経由で)できます:

dmesg > /var/log/dmesg

dmesgバッファーの大きさ(これはカーネルにコンパイルされるか、log_buf_lenパラメーターを介して設定されます)およびシステムが起動している時間に応じて、起動後のカーネルログの記録を保持します。

dmesg出力をファイルに継続的に書き込む場合は、-w(--follow)フラグを使用します。

dmesg --follow > mydmesg.log

4
+1 dmesgはリングバッファを使用しているため、無制限に成長せず、カーネル内に保持されるため、ファイルシステムが稼働する前にメッセージをログに記録できることに注意してください。
msw

3

を使用するとsystemd、を使用してsystemdジャーナルからすべての情報を取得できますjournalctl -ksyslogそしてrsyslogあなたがsystemdにを使用する場合は必要ありません。


0

PopSicleはこれを行います。古いmsdosリダイレクトを使用し、ターミナルでLibreOffice Calcによってスプレッドシートで開かれる.csvファイルに再作成されます。

dmesg > /path to where you want the file written/File-Name.csv 
dmesg > /media/joe/Data/Z-Back/Script-Files/Dmesg-Output.csv 

echo "Dmesg-to-CSV.sh"" the script file"

#!/bin/bash
echo "This is a shell script"  
SOMEVAR='I am done running dmesg and redirecting to /media/joe/Data/B-Back/Script-Files/Dmesg-Output.csv'  
echo "$SOMEVAR"  
dmesg > /media/joe/Data/Z-Back/Script-Files/Dmesg-Output.csv 

echo "Dmesg-CSV.desktop"" the icon file"

[Desktop Entry]
Encoding=UTF-8
Name=Dmesg-to-CSV.sh
Comment=Launch DirSyncPro
Exec=gnome-terminal -e /media/joe/Data/Z-Back/Script-Files/Dmesg-to-CSV.sh
Icon=utilities-terminal
Type=Application
Name[en_US]=Dmesg-CSV.desktop

echo "both the .sh file and .desktop file are stored in the same directory as the .csv output file"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.