Корреляция/var/log /* метки времени

Можно также сделать это с менеджером Архива, если Вы предпочитаете GUI. Посмотрите под, 'Сохраняют-> Другие Опции-> Разделение в объемы'.

20
14.01.2011, 07:37
5 ответов

Интересная проблема, Не уверенная, я когда-либо пытался сделать это. Но я имею, замечают метку времени, о которой Вы говорите, и я всегда полагал, что это секунды начиная с начальной загрузки.

В моем системном журнале я имею на своем сервере, я имею:

Jan 10 19:58:55 wdgitial kernel: [    0.000000] Initializing cgroup subsys cpuset
Jan 10 19:58:55 wdgitial kernel: [    0.000000] Initializing cgroup subsys cpu
Jan 10 19:58:55 wdgitial kernel: [    0.000000] Linux version 2.6.32-21-server (buildd@yellow) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #32-Ubuntu SMP Fri Apr 16     09:17:34 UTC 2010 (Ubuntu 2.6.32-21.32-server 2.6.32.11+drm33.2)
Jan 10 19:58:55 wdgitial kernel: [    0.000000] Command line:  root=/dev/xvda1 ro quiet splash

Я предположил бы, что это довольно последовательно среди большей части дистрибутива Linux, поскольку это - ядро, выкладывающее, это - материал.

И здесь у меня есть дата наряду с меткой времени.

4
27.01.2020, 19:44

Можно дать этому попытку:

Во-первых, получите метку времени dmesg файла (мое предположение, это будет временем dmesg 0). Вы будете использовать

ls -l --time-style=+%s
/var/log$ ls -l --time-style=+%s dmesg
-rw-r----- 1 root adm 56181 1294941018 dmesg

Можно преобразовать секунды в человекочитаемую дату с

perl -e 'print scalar localtime(1294941018)' 

Таким образом для наблюдения читаемого времени события добавьте в секунды от события в dmesg. Если dmesg событие составляло 55,290387 секунд в, добавьте 55 или 55.290387:

perl -e 'print scalar localtime(1294953978 + 55)'

Другой способ преобразовать секунды с эпохальными корнями в читаемое время состоит в том, чтобы использовать дату-d, как предложено. Если Вы говорите 'дате' представлять время, предоставленное-d, можно указать, что время, которое будет преобразовано, находится в seconds-since-the-epoch при помощи.

date -d "@1294953978"

Это дает Вам что-то как "четверг Jan 13 15:26:18 CST 2011", как произведено.

date +%s
распечатает текущее время в формате секунд начиная с эпохи.

Я не могу помнить, как сделать математику оболочки, таким образом, я обычно использую метод жемчуга как выше.:)

3
27.01.2020, 19:44
  • 1
    @jgbelacqua: Вы хотите date -d @$((1294953978 + 55)), по крайней мере, под ударом. Однако некоторые метки времени ядра скашиваются, означая, что времена, произведенные этим методом, были бы ранее, чем их соответствующие метки времени в /var/log/syslog. Похоже, что это происходит в результате, приостанавливают к RAM события, по-видимому, в дополнение к спящему режиму и возможно некоторому другому материалу, потому что время ядра не увеличивает в течение тех периодов. Посмотрите обновление вопроса для большего количества информации –  intuited 14.01.2011, 07:28

Самый легкий способ отобразить число от dmesg до даты использует date программа.

date -d "-50595 seconds"

Эта команда отображает дату в течение текущего времени минус 50 595 секунд.

От man date:

-d, --date=STRING
       display time described by STRING, not `now'

Число равняется вовремя приводимому в действие, не, время протекло со времени начальной загрузки.

2
27.01.2020, 19:44

Быстрый, грязный, работы.

$ dmesg | grep 3w | perl /root/print_time_offset.pl

Содержание того сценария:

$ cat /root/print_time_offset.pl

#!/usr/bin/perl

$uptime = `cat /proc/uptime | awk '{print $1}';`;
$boot = time() - $uptime;
chomp $boot;
while (<STDIN>) {
        if ($_ =~ /^\[([\s\d\.]+)\]/) {
                $time_offset = $1;
        }
        $real_time = sprintf scalar localtime($boot + $time_offset);
        $_ =~ s/\[[\s\d\.]+\]/\[$real_time\]/;
        print $_;
}

Демонстрационный вывод следующие:

[Mon Feb 21 23:06:33 2011] 3ware 9000 Storage Controller device driver for Linux v2.26.02.012.
[Mon Feb 21 23:06:33 2011] 3w-9xxx 0000:03:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
[Mon Feb 21 23:06:33 2011] 3w-9xxx 0000:03:00.0: setting latency timer to 64
[Mon Feb 21 23:06:33 2011] scsi4 : 3ware 9000 Storage Controller
[Mon Feb 21 23:06:33 2011] 3w-9xxx: scsi4: Found a 3ware 9000 Storage Controller at 0xfbcde000, IRQ: 16.
[Mon Feb 21 23:06:34 2011] 3w-9xxx: scsi4: Firmware FE9X 4.08.00.006, BIOS BE9X 4.08.00.001, Ports: 4.
[Mon Feb 21 23:06:35 2011] 3w-9xxx: scsi4: ERROR: (0x03:0x0101): Invalid command opcode:opcode=0x85.
[Mon Feb 21 23:06:35 2011] 3w-9xxx: scsi4: ERROR: (0x03:0x0101): Invalid command opcode:opcode=0x85.
[Mon Feb 21 23:06:35 2011] 3w-9xxx: scsi4: ERROR: (0x03:0x0101): Invalid command opcode:opcode=0x85.
[Mon Feb 21 23:06:35 2011] 3w-9xxx: scsi4: ERROR: (0x03:0x0101): Invalid command opcode:opcode=0x85.
[Mon Feb 21 23:06:35 2011] 3w-9xxx: scsi4: ERROR: (0x03:0x0101): Invalid command opcode:opcode=0x85.
[Mon Feb 21 23:06:35 2011] 3w-9xxx: scsi4: ERROR: (0x03:0x0101): Invalid command opcode:opcode=0x85.
[Sat Feb 26 02:01:01 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x0029): Verify started:unit=0, subunit=1.
[Sat Feb 26 02:01:01 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x0029): Verify started:unit=0, subunit=0.
[Sat Feb 26 16:49:13 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x002B): Verify completed:unit=0, subunit=1.
[Sat Feb 26 17:07:19 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x002B): Verify completed:unit=0, subunit=0.
[Sat Mar  5 02:00:16 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x0029): Verify started:unit=0, subunit=1.
[Sat Mar  5 02:00:16 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x0029): Verify started:unit=0, subunit=0.
[Sat Mar  5 18:48:57 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x002B): Verify completed:unit=0, subunit=1.
[Sat Mar  5 19:05:17 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x002B): Verify completed:unit=0, subunit=0.
[Sat Mar 12 02:00:30 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x0029): Verify started:unit=0, subunit=1.
[Sat Mar 12 02:00:30 2011] 3w-9xxx: scsi4: AEN: INFO (0x04:0x0029): Verify started:unit=0, subunit=0.
1
27.01.2020, 19:44
  • 1
    , я предполагаю, что Вы только читаете первые два абзаца вопроса. Проверьте его снова более подробно. Или, альтернативно, попытайтесь приостановить свой компьютер и проверить, чтобы видеть, сообщает ли Ваш сценарий правильно об абсолютных метках времени недавно зарегистрированных сообщений. –  intuited 13.03.2011, 04:28

Так как Вы отметили, что скос времени, изменяющийся во время, приостанавливает/возобновляет, я отмечу, что это документируется по крайней мере в одно место. dmesg (1) страница справочника говорит:

Источник времени, используемый для журналов, не обновляется после системы ПРИОСТАНАВЛИВАЮТ/ВОЗОБНОВЛЯЮТ.

Я не мог найти способ заставить ядро сохранить эти метки времени в синхронизации со стенным временем.

2
27.01.2020, 19:44

Теги

Похожие вопросы