Unix Time

Discussion in 'Linux, Freebsd, *nix' started by hpagof, 6 May 2010.

  1. hpagof

    hpagof Elder - Старейшина

    Joined:
    5 Oct 2006
    Messages:
    42
    Likes Received:
    3
    Reputations:
    0
    Прошу помочь, у меня стоит squid и sags. Начальство хочет смотреть логи в виде текстового документа, логи у меня типа:
    Code:
    [B]1268901385.523[/B]    717 192.168.1.1 TCP_MISS/200 472 GET http://info.music.metaservices.microsoft.com/cdinfo/GetMDRCDPOSTURL.aspx? - DEFAULT_PARENT/127.0.0.1 text
    Мне всё понятно, но нужно им конвертировать Юникс тайм в нормальную дату. Т.е скрипт который конвертировал только ЮниксТайм в файле лога который я им буду предоставлять т.е так:
    Code:
    [B]Thu, 18 Mar 2010 08:36:25 GMT[/B]    717 192.168.1.1 TCP_MISS/200 472 GET http://info.music.metaservices.microsoft.com/cdinfo/GetMDRCDPOSTURL.aspx? - DEFAULT_PARENT/127.0.0.1 text
    Посоветуйте что нибудь
     
  2. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Little example
    Code:
    #!/usr/bin/perl
    
    use strict;
    use warnings;
    use POSIX qw /strftime/;
    
    my $time = 1268901385.523;
    print strftime ("%a, %d %b %Y %H:%M:%S %Z", gmtime $time), "\n";
    
     
  3. hpagof

    hpagof Elder - Старейшина

    Joined:
    5 Oct 2006
    Messages:
    42
    Likes Received:
    3
    Reputations:
    0
    Разве этот код не выполняется только для одной конкретной даты в логах ?
     
  4. krypt3r

    krypt3r Elder - Старейшина

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Я вам пример дал, как из единичного значения unixtime'а перевести в более читаемый формат. Функция strftime() вам поможет
     
  5. hpagof

    hpagof Elder - Старейшина

    Joined:
    5 Oct 2006
    Messages:
    42
    Likes Received:
    3
    Reputations:
    0
    Создал файл unixtime.pl со следующим содержанием:
    Code:
    #! /usr/bin/perl -p
    s/^\d+\.\d+/localtime $&/e;
    И вополнил

    perl unixtime.pl /путь к логам

    Спасибо за помощь тебе!