dmesgの内容をファイルに書き込む方法は?

dmesgの内容をファイルに書き込む方法は?

私は最初から新しく構築されたLinuxオペレーティングシステムを実行しています。再起動後も持続するファイルにカーネルメッセージバッファ(dmesg)を保存したいと思います。

syslogdを実行してみましたが、既存のカーネルメッセージバッファもなくsyslogdを起動した後、カーネルから生成された新しいメッセージもない新しいログファイル/var/log/messagesのみが開かれました。

カーネルメッセージバッファを永続ログファイルに保存するには?

答え1

/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

答え2

を使用すると、systemdジャーナルのすべての情報を取得するために使用できます。 systemdを使用している場合は必要ありません。systemdjournalctl -ksyslogrsyslog

答え3

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"

関連情報