później dmesg obsługuje flagę -T, może spróbuj użyć -T, jeśli twój dmesg ją obsługuje.
ilansch
obsługuje centos 7+dmesg -T
rogerdpack
Odpowiedzi:
12
dmesgodczytuje bufor pierścieniowy dziennika jądra. Nie robi znaczników czasu. To, co powinieneś zrobić, to skonfigurować syslog, aby pobierał dzienniki jądra z tego bufora i wysyłał je do pliku (jeśli nie jest to jeszcze ustawione). Uwaga: domyślna konfiguracja syslog CentOS 5.x wysyła logi jądra do /var/log/messages, jak pamiętam.
Jeśli chcesz wysłać wszystkie dzienniki jądra (dmesg) /var/log/kern.log, używając domyślnego demona syslog, dodaj wiersz podobny do następującego/etc/syslog.conf
Dziękuję za Twoją odpowiedź. Dla każdego, kto szuka systemu CentOS 6, znalazłem go/etc/rsyslog.conf
Safado
Tak, z CentOS (i RHEL) 6.x zmienili domyślnego demona syslog ze starego sysklogd na rsyslog. Jest również dostępny jako (obsługiwany) pakiet dla RHEL / CentOS 5.x.
Christopher Cashell
1
Cóż, mam to na mojej liście rzeczy do odkrycia, ale teraz zaoszczędziłeś mi trochę googlingu
Safado
8
Istnieje rozwiązanie „Włączanie znaczników czasu dla bufora pierścieniowego dmesg / Kernel”
Możesz dodać:
printk.time=1
do cmdline jądra.
Co do mnie, dodałem do rc.local na wszystkich maszynach z marionetką. To dla mnie łatwiejsze):
if test -f /sys/module/printk/parameters/time; then
echo 1 > /sys/module/printk/parameters/time
fi
Używanie rc.localjest naprawdę brzydkim rozwiązaniem ( rc.localprawie zawsze jest brzydkim rozwiązaniem czegokolwiek). Lepszym rozwiązaniem byłoby umieścić printk.time = 1na /etc/sysctl.conflub plik /etc/sysctl.d/. Właśnie dlatego te pliki istnieją. Wbijanie rzeczy w rc.localkońcu sprawi, że zaczniesz od kruchego, zawiłego, niechlujnego i niewiarygodnego start-upu.
Christopher Cashell
To, co komentuje @ChristopherCashell, jest jedyną prawidłową odpowiedzią na to pytanie. Szkoda, że to nie jest rzeczywista odpowiedź.
Petr
1
Napisałem ten prosty skrypt. Tak, jest wolny. Jeśli chcesz czegoś szybciej, albo piszesz skrypt w Perlu, Pythonie lub czymś innym. Jestem pewien, że ten prosty skrypt może wyjaśnić, jak można go obliczyć.
Uwaga: zignorowałem ułamek sekund zarejestrowany w każdej linii (po znaczniku czasu w.).
perl -n jest sposobem na odczyt standardowego wejścia i wczytanie do zmiennej $ _.
Treść (nie sekcja BEGIN) jest następnie uruchamiana raz dla każdej linii.
BEGIN uruchamia kod raz {}.
$ a jest początkiem dmesg od epoki (sekundy)
Komenda s / ... przyjmuje wartość w $ _ i zastępuje część \ s * #####. ###### znacznika czasu wersją „lokalnego czasu” przesunięcia dmesg (1 $) dodanego do czas uruchomienia systemu ($ a)
print $ a drukuje dmesg ze znacznikiem czasu przyjaznym dla regionu, zastępując znacznik czasu „sekund od uruchomienia”.
perl -n jest sposobem na odczyt standardowego wejścia i wczytanie do zmiennej $ _.
Treść (nie sekcja BEGIN) jest następnie uruchamiana raz dla każdej linii.
BEGIN uruchamia kod raz {}.
$ a jest początkiem dmesg od epoki
Polecenie s / ... przyjmuje wartość w $ _ i zastępuje część #####. ###### znacznika czasu wersją „lokalnego czasu” przesunięcia dmesg (1 $) dodanego do startu systemu czas ($ a)
print $ a drukuje dmesg ze znacznikiem czasu przyjaznym dla regionu, zastępując znacznik czasu „sekund od uruchomienia”.
@kasperd Oto, co to znaczy: - perl -n jest sposobem na odczyt standardowego wejścia i wczytanie do zmiennej $ _. Treść (nie sekcja BEGIN) jest następnie uruchamiana raz dla każdej linii. - BEGIN uruchamia kod raz {}. $ a jest początkiem dmesg od epoki - s/...Komenda przyjmuje wartość w $ _ i zastępuje część #####. ###### znacznika czasu wersją „lokalnego czasu” przesunięcia dmesg (1 $ ) dodane do godziny rozpoczęcia systemu ($ a). - print $adrukuje dmesg ze znacznikiem czasu przyjaznym dla regionu zastąpionym znacznikiem czasu „sekund od uruchomienia”.
dmesg -T
Odpowiedzi:
dmesg
odczytuje bufor pierścieniowy dziennika jądra. Nie robi znaczników czasu. To, co powinieneś zrobić, to skonfigurować syslog, aby pobierał dzienniki jądra z tego bufora i wysyłał je do pliku (jeśli nie jest to jeszcze ustawione). Uwaga: domyślna konfiguracja syslog CentOS 5.x wysyła logi jądra do/var/log/messages
, jak pamiętam.Jeśli chcesz wysłać wszystkie dzienniki jądra (dmesg)
/var/log/kern.log
, używając domyślnego demona syslog, dodaj wiersz podobny do następującego/etc/syslog.conf
źródło
/etc/rsyslog.conf
Istnieje rozwiązanie „Włączanie znaczników czasu dla bufora pierścieniowego dmesg / Kernel”
Możesz dodać:
do cmdline jądra.
Co do mnie, dodałem do rc.local na wszystkich maszynach z marionetką. To dla mnie łatwiejsze):
źródło
rc.local
jest naprawdę brzydkim rozwiązaniem (rc.local
prawie zawsze jest brzydkim rozwiązaniem czegokolwiek). Lepszym rozwiązaniem byłoby umieścićprintk.time = 1
na/etc/sysctl.conf
lub plik/etc/sysctl.d/
. Właśnie dlatego te pliki istnieją. Wbijanie rzeczy wrc.local
końcu sprawi, że zaczniesz od kruchego, zawiłego, niechlujnego i niewiarygodnego start-upu.Napisałem ten prosty skrypt. Tak, jest wolny. Jeśli chcesz czegoś szybciej, albo piszesz skrypt w Perlu, Pythonie lub czymś innym. Jestem pewien, że ten prosty skrypt może wyjaśnić, jak można go obliczyć.
Uwaga: zignorowałem ułamek sekund zarejestrowany w każdej linii (po znaczniku czasu w.).
Mam nadzieję, że to pomoże. :)
źródło
Modyfikacja skryptu w przypadku, gdy wiersz sprawy nie zaczyna się od „[”
źródło
Jest to aktualizacja sugestii Plutoid, usuwająca wiodące spacje ze znacznika czasu.
źródło
Mały skrypt perla, jak poniżej. To ogólny sposób i nie jestem autorem.
perl -n
jest sposobem na odczyt standardowego wejścia i wczytanie do zmiennej $ _.źródło
s/...
Komenda przyjmuje wartość w $ _ i zastępuje część #####. ###### znacznika czasu wersją „lokalnego czasu” przesunięcia dmesg (1 $ ) dodane do godziny rozpoczęcia systemu ($ a). -print $a
drukuje dmesg ze znacznikiem czasu przyjaznym dla regionu zastąpionym znacznikiem czasu „sekund od uruchomienia”.