web-dev-qa-db-ja.com

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

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

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

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

19
miluz

/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
16
goldilocks

systemdを使用すると、journalctl -kを使用してsystemdジャーナルからすべての情報を取得できます。 systemdを使用する場合、syslogおよびrsyslogは必要ありません。

3
Catalin Hritcu

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"
0
Joe