Comment le contenu dmesg peut-il être connecté à un fichier?


18

J'utilise un système d'exploitation Linux qui a été construit à partir de zéro. Je voudrais enregistrer le tampon de messages du noyau (dmesg) dans un fichier qui restera persistant entre les redémarrages.

J'ai essayé d'exécuter syslogd mais il vient d'ouvrir un nouveau fichier journal, / var / log / messages, sans ni le tampon de messages du noyau existant, ni aucun nouveau message généré par le noyau après le lancement de syslogd.

Comment le tampon de messages du noyau peut-il être enregistré dans un fichier journal persistant?


Quel syslogd utilisez-vous: sysklogd, busybox, inetutils, systemd, rsyslog, autre?
Gilles 'SO- arrête d'être méchant'

Réponses:


16

Vous devez regarder soit /etc/rsyslog.confou /etc/syslog.conf. Si vous avez une ligne tôt comme:

*.*                -/var/log/syslog

Tout, y compris le contenu de dmesg, devrait aller dans ce fichier. Pour mieux le cibler:

kernel.*           -/var/log/dmesg

Si cela échoue pour une raison quelconque, vous pouvez périodiquement (par exemple via cron):

dmesg > /var/log/dmesg

Selon la taille du tampon dmesg (il est compilé dans le noyau ou défini via le log_buf_lenparamètre) et depuis combien de temps votre système fonctionne, cela gardera un enregistrement du journal du noyau depuis son démarrage.

Si vous souhaitez écrire la sortie dmesg en continu dans un fichier, utilisez l'indicateur -w (--follow).

dmesg --follow > mydmesg.log

4
+1 Il convient probablement de mentionner que dmesg utilise un tampon en anneau afin qu'il ne se développe pas sans limite et qu'il soit conservé dans le noyau afin que les messages puissent être enregistrés avant que des choses comme le système de fichiers ne soient encore activées.
msw

3

Si vous utilisez, systemdvous pouvez obtenir toutes les informations du systemdjournal en utilisant journalctl -k. sysloget rsyslogne sont pas nécessaires si vous utilisez systemd.


0

PopSicle fait cela J'utilise l'ancienne redirection msdos et elle est restreinte dans un fichier .csv qui est ouvert dans une feuille de calcul par LibreOffice Calc dans le terminal, essayez quelque chose comme ça

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"
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.