Как метки времени в последнем выводе интерпретировать в Linux? - PullRequest
0 голосов
/ 18 февраля 2009
$ last -aid
foouser  pts/12       Sun Feb 15 07:30 - 15:23 (2+07:52)     XXX.YYY.ZZZ.QQQ

Солнце 15 февраля 07:30 - 15:23 часть довольно очевидна. Пользователь вошел в 7:30 в воскресенье. Но (2 + 07: 52) неясно. 7:52 разница между двумя разами, но что за 2+?

Ответы [ 3 ]

2 голосов
/ 18 февраля 2009

Используйте источник, Люк:

sprintf(length, "(%d+%02d:%02d)", days, hours, mins);

Это исходный пакет sysvinit в Debian.

Подсказка для тех, у кого нет знаний в Си: это количество дней.

1 голос
/ 13 мая 2009

Строка в скобках - это продолжительность сеанса. Как вы заметили, время - это разница между временем окончания и началом. 2+ - это количество дней, как хоп отметил .

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

Это довольно читаемый формат, когда вы знаете, на что смотрите. Если бы я проектировал выходные данные, я бы сделал необязательным день недели и вместо этого поместил бы всю конечную дату в строку. Еще лучше было бы позволить настраивать штамп даты. Таким образом, вывод может быть более легко использован другой программой.

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

$ last | perl -lne 'print "$2 days, $3 hours, $4 minutes" if /\(((\d+)\+)(\d{2}):(\d{2})\)$/'
17 days, 05 hours, 23 minutes
3 days, 23 hours, 16 minutes
14 days, 06 hours, 09 minutes
23 days, 04 hours, 54 minutes
16 days, 06 hours, 57 minutes
...
0 голосов
/ 18 февраля 2009

Это могут быть дни, но я не уверен; также это не вопрос программирования.

...