точное время выполнения системного вызова с использованием perl - PullRequest
0 голосов
/ 22 января 2011

Есть ли лучший способ программно использовать perl для отслеживания времени процесса unix (время начала, время окончания) ??

Например, у меня есть скрипт perl, который запускает команду unix с использованием system ().Я печатаю метку времени до системы () и после.

Мой журнал времени начала и окончания одинаков.Я точно знаю, что когда процесс завершается за считанные минуты, значит, он не точен.

Вот мой код:

my $dt  = strftime('%Y%m%d', localtime(time));
my $dt2 = strftime('%Y%m%d-%H:%M:%S', localtime(time)); 
my @tbls = qx(mysql -u foo -pmypw --database $dbsrc -h $node -ss -e "show tables");

open (CRLOG, ">dump-$dt.log") || die "cannot append";
foreach my $tbls (@tbls)
{
   chomp $tbls;
   print CRLOG "TIME START => $dt2\n";
   my $crfile = qq{mysql -u foo -pmypw --database $dbsrc -h $node.test.com -ss -e "SELECT 'a','b','c' UNION SELECT 1,2,3 FROM $tbls"| tr "\t" ",">$node-$tbls.$dt.csv};   system($crfile); 
   print CRLOG "COMMAND => $crfile\n";
   print CRLOG "TIME END => $dt2\n";
}; 
close (CRLOG);

Ответы [ 2 ]

2 голосов
/ 22 января 2011

$dt2 - это константа, но, похоже, вы хотите, чтобы она пересчитывала метку времени каждый раз, когда она используется.Для этого вам следует использовать функцию.

sub dt2 {
    return strftime('%Y%m%d-%H:%M:%S', localtime(time))
}

...

open (CRLOG, ">dump-$dt.log") || die "cannot append";
foreach my $tbls (@tbls)
{
   chomp $tbls;
   print CRLOG "TIME START => ", &dt2, "\n";
   my $crfile = qq{mysql -u foo -pmypw ...};
   system($crfile); 
   print CRLOG "COMMAND => $crfile\n";
   print CRLOG "TIME END => ", &dt2, "\n";
}; 
close (CRLOG);
0 голосов
/ 22 января 2011

Вы пытались использовать команду "time" для определения времени выполнения команды?

http://www.computerhope.com/unix/utime.htm

Итак, в вашем Perl-скрипте было бы что-то вроде этого, чтобы захватить вывод:

$time_me = `/usr/bin/time $my_command`;

Затем проанализируйте переменную $ time_me, чтобы получить значения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...