plus tard, dmesg prend en charge l'indicateur -T, essayez peut-être d'utiliser -T si votre dmesg le prend en charge.
ilansch
Centos 7+ prend en chargedmesg -T
rogerdpack
Réponses:
12
dmesglit le tampon d'anneau du journal du noyau. Il ne fait pas d'horodatage. Ce que vous devez faire est de configurer syslog pour récupérer les journaux du noyau à partir de ce tampon et les envoyer dans un fichier (s'il n'est pas déjà configuré pour le faire). Remarque, la configuration par défaut de CentOS 5.x syslog envoie les journaux du noyau à /var/log/messages, si je me souviens bien.
Si vous souhaitez envoyer tous les journaux du noyau (dmesg) à /var/log/kern.log, en utilisant le démon syslog par défaut, vous devez ajouter une ligne comme celle-ci à/etc/syslog.conf
Merci pour la réponse. Pour tous ceux qui cherchent à utiliser CentOS 6, je l'ai trouvé dans/etc/rsyslog.conf
Safado
Oui, avec CentOS (et RHEL) 6.x, ils ont changé le démon syslog par défaut de l'ancien sysklogd en rsyslog. Il est également disponible en tant que package (pris en charge) pour RHEL / CentOS 5.x.
Christopher Cashell
1
Eh bien, j'ai eu cela sur ma liste de choses à comprendre, mais maintenant vous m'avez sauvé quelques recherches sur Google
Safado
8
Il existe une solution "Activation des horodatages pour dmesg / Kernel Ring Buffer"
Vous pourriez ajouter:
printk.time=1
au noyau cmdline.
Quant à moi, j'ai ajouté à rc.local sur toutes les machines avec marionnettes. C'est plus facile pour moi) :
if test -f /sys/module/printk/parameters/time; then
echo 1 > /sys/module/printk/parameters/time
fi
L'utilisation rc.localest vraiment une sorte de solution laide pour cela (l'utilisation rc.localest presque toujours une solution laide à n'importe quoi). Une meilleure solution serait de mettre printk.time = 1en /etc/sysctl.confou un fichier /etc/sysctl.d/. C'est la raison pour laquelle ces fichiers existent. Cramper des trucs en rc.localfinira par vous laisser avec une start-up fragile, alambiquée, désordonnée et peu fiable.
Christopher Cashell
Ce qui est en commentaire de @ChristopherCashell est la seule bonne réponse à cette question. C'est dommage que ce ne soit pas une vraie réponse.
Petr
1
J'ai écrit ce script simple. Oui, c'est lent. Si vous voulez quelque chose de plus rapide, vous écrivez un script sur perl, python ou autre chose. Je suis sûr que ce simple script peut vous donner une idée de la façon dont il peut être calculé.
Veuillez noter que j'ai ignoré la fraction de secondes enregistrée dans chaque ligne (après le. Dans l'horodatage).
perl -n est un moyen de lire l'entrée standard et de lire dans la variable $ _.
Le corps (pas la section BEGIN) est ensuite exécuté une fois pour chaque ligne.
BEGIN exécute le code en {} une fois.
$ a est le début de dmesg depuis l'époque (secondes)
La commande s / ... prend la valeur de $ _ et remplace la partie \ s * #####. ###### de l'horodatage par la version "heure locale" du décalage dmesg ($ 1) ajoutée à l'heure de début du système ($ a)
print $ a imprime le dmesg avec l'horodatage respectueux des paramètres régionaux substitué à l'horodatage "secondes depuis le démarrage".
perl -n est un moyen de lire l'entrée standard et de lire dans la variable $ _.
Le corps (pas la section BEGIN) est ensuite exécuté une fois pour chaque ligne.
BEGIN exécute le code en {} une fois.
$ a est le début du dmesg depuis l'époque
La commande s / ... prend la valeur de $ _ et remplace la partie #####. ###### de l'horodatage par la version "heure locale" du décalage dmesg ($ 1) ajoutée au démarrage du système temps ($ a)
print $ a imprime le dmesg avec l'horodatage respectueux des paramètres régionaux substitué à l'horodatage "secondes depuis le démarrage".
@kasperd Voici ce que cela signifie: - perl -n est un moyen de lire l'entrée standard et de lire dans la variable $ _. Le corps (pas la section BEGIN) est ensuite exécuté une fois pour chaque ligne. - BEGIN exécute le code en {} une fois. $ a est le début de dmesg depuis l'époque - La s/...commande prend la valeur dans $ _ et remplace la partie #####. ###### de l'horodatage par la version "localtime" de l'offset dmesg ($ 1 ) ajouté à l'heure de démarrage du système ($ a). - print $aimprime le dmesg avec l'horodatage respectueux des paramètres régionaux substitué à l'horodatage "secondes depuis le démarrage".
dmesg -T
Réponses:
dmesg
lit le tampon d'anneau du journal du noyau. Il ne fait pas d'horodatage. Ce que vous devez faire est de configurer syslog pour récupérer les journaux du noyau à partir de ce tampon et les envoyer dans un fichier (s'il n'est pas déjà configuré pour le faire). Remarque, la configuration par défaut de CentOS 5.x syslog envoie les journaux du noyau à/var/log/messages
, si je me souviens bien.Si vous souhaitez envoyer tous les journaux du noyau (dmesg) à
/var/log/kern.log
, en utilisant le démon syslog par défaut, vous devez ajouter une ligne comme celle-ci à/etc/syslog.conf
la source
/etc/rsyslog.conf
Il existe une solution "Activation des horodatages pour dmesg / Kernel Ring Buffer"
Vous pourriez ajouter:
au noyau cmdline.
Quant à moi, j'ai ajouté à rc.local sur toutes les machines avec marionnettes. C'est plus facile pour moi) :
la source
rc.local
est vraiment une sorte de solution laide pour cela (l'utilisationrc.local
est presque toujours une solution laide à n'importe quoi). Une meilleure solution serait de mettreprintk.time = 1
en/etc/sysctl.conf
ou un fichier/etc/sysctl.d/
. C'est la raison pour laquelle ces fichiers existent. Cramper des trucs enrc.local
finira par vous laisser avec une start-up fragile, alambiquée, désordonnée et peu fiable.J'ai écrit ce script simple. Oui, c'est lent. Si vous voulez quelque chose de plus rapide, vous écrivez un script sur perl, python ou autre chose. Je suis sûr que ce simple script peut vous donner une idée de la façon dont il peut être calculé.
Veuillez noter que j'ai ignoré la fraction de secondes enregistrée dans chaque ligne (après le. Dans l'horodatage).
J'espère que ça aide. :)
la source
La modification de script dans la ligne de cas ne commence pas par un "["
la source
Il s'agit d'une mise à jour de la suggestion de Plutoid, supprimant les espaces de tête de l'horodatage.
la source
Un petit script perl comme ci-dessous. C'est une manière générale, et je ne suis pas l'auteur.
perl -n
est un moyen de lire l'entrée standard et de lire dans la variable $ _.la source
s/...
commande prend la valeur dans $ _ et remplace la partie #####. ###### de l'horodatage par la version "localtime" de l'offset dmesg ($ 1 ) ajouté à l'heure de démarrage du système ($ a). -print $a
imprime le dmesg avec l'horodatage respectueux des paramètres régionaux substitué à l'horodatage "secondes depuis le démarrage".