Страница 1 из 1

Дата-время в юникс формате.

Добавлено: 2007-03-09 8:56:01
Slider007
Привет ещё раз всем.

Задумал я сотворить кое-что с логами сквида, и у меня возникла проблема - дата и время в логе записано в юникс формате, типа 1173165443.739

А проблема заключается в том, что я не умею переводить дату из юникс формата в нормальную привычную нам дату вида dd/mm/yyyy.

Знаю что 1173165443.739 это количество секунд прошедших с 01/01/1970, но чего дальше с этими секундами делать не знаю.

Подскажите пожалуйста как перевести дату из юникс формата и обратно средствами Шелла. Может быть функции есть стандартные ?

Добавлено: 2007-03-09 9:01:42
Alex Keda
хм.. а я даже не знаю как шеллом...
тока перлом/php

Добавлено: 2007-03-09 9:17:38
Slider007
Мда, жаль, я тут перловский скрипт откопал, но мне плохо от его вида стало ...
Ладно буду думать. Спасибо :)

Добавлено: 2007-03-09 9:33:43
Alex Keda
плохо-неплохо, но с учётом обычного объёма логов сквида - лучше на перле сделать.
ну или на php.
на шелле будет медленно очень - чтоб ты не делал.

Добавлено: 2007-03-09 10:24:38
nomad

Код: Выделить всё

date --date=@1173165443.739 +%Y-%m-%d\ %H:%M:%S
Написано в info по date в разделе Date Input

Код: Выделить всё

2007-03-06 12:17:23

Добавлено: 2007-03-09 11:14:01
Slider007
nomad писал(а):

Код: Выделить всё

date --date=@1173165443.739 +%Y-%m-%d\ %H:%M:%S
Написано в info по date в разделе Date Input

Код: Выделить всё

2007-03-06 12:17:23
Это на чем написано ? Шелл это выполнять не хочет.

Добавлено: 2007-03-09 11:29:24
Гость
date -r 1173428672

Добавлено: 2007-03-09 11:39:59
idle
Slider007
Зачем выдумывать велосипед, если существует огромное количество разнообразных анализаторов логов сквида?

На perl можно сделать так:

Код: Выделить всё

cat access.log | perl -lne'for([split]){($s,$min,$h,$d,$m)=localtime(@$_[0]);print"date: $m-$d $h:$min user: @$_[2] url: @$_[6]"}'

Добавлено: 2007-03-09 12:08:34
nomad
Короче: в Linux date --date=@12134435, во фре date -r 1231234

Добавлено: 2007-03-09 12:57:51
dikens3
Как вариант в squid.conf:

Код: Выделить всё

emulate_httpd_log on
И смотреть нормальные логи:

Код: Выделить всё

192.168.2.2 - - [09/Mar/2007:00:59:56 +0300] "GET http://esuite.us.drweb.com/update/4.33/drwbases/state HTTP/1.1" 304 285 TCP_MISS:DIRECT
192.168.2.2 - - [09/Mar/2007:00:59:56 +0300] "GET http://esuite.us.drweb.com/update/4.33/drwupgrade/state HTTP/1.1" 304 285 TCP_MISS:DIRECT
192.168.2.2 - - [09/Mar/2007:00:59:57 +0300] "GET http://esuite.us.drweb.com/update/4.33/drwagntd/state HTTP/1.1" 304 285 TCP_MISS:DIRECT
192.168.2.2 - - [09/Mar/2007:00:59:58 +0300] "GET http://esuite.us.drweb.com/update/4.33/drwconsole/state HTTP/1.1" 304 285 TCP_MISS:DIRECT
192.168.2.2 - - [09/Mar/2007:00:59:58 +0300] "GET http://esuite.us.drweb.com/update/4.33/drwcs/state HTTP/1.1" 304 285 TCP_MISS:DIRECT
192.168.2.2 - - [09/Mar/2007:01:59:56 +0300] "GET http://esuite.us.drweb.com/update/4.33/drwbases/state HTTP/1.1" 304 285 TCP_MISS:DIRECT
192.168.2.2 - - [09/Mar/2007:01:59:56 +0300] "GET http://esuite.us.drweb.com/update/4.33/drwupgrade/state HTTP/1.1" 304 285 TCP_MISS:DIRECT
192.168.2.2 - - [09/Mar/2007:01:59:57 +0300] "GET http://esuite.us.drweb.com/update/4.33/drwagntd/state HTTP/1.1" 304 285 TCP_MISS:DIRECT
192.168.2.2 - - [09/Mar/2007:01:59:57 +0300] "GET http://esuite.us.drweb.com/update/4.33/drwconsole/state HTTP/1.1" 304 285 TCP_MISS:DIRECT

Добавлено: 2007-03-12 7:55:27
Sapsan
я такой вот скриптик юзаю

Код: Выделить всё

#!/usr/bin/perl
while(<>){
    ($t,$a)=split(" ",$_,2);
    if(length $t==14){
    ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($t);
        printf "%02u/%02u/%02u %02u:%02u:%02u %s",
           1900+$year,$mon+1,$mday,$hour,$min,$sec,$a;
    }
    else {
      print $_;
    }
}
просто добавляем его в конвеер и всё становится красиво.

Добавлено: 2007-03-12 8:27:30
nomad
http://bash.org.ru/quote.php?num=6011

Код: Выделить всё

ya_frosia: Связка ломов, как правило, тонет.
alexei: ya_frosia: Но в ртути прекрасно плавает.
zoogenic: alexei: Но если ломы урановые, то и во ртути тонут.
alexei: zoogenic: сам топи урановые ломы в ртути.
Ребят, пользуйтесь sarg'ом уже =)