我正在尝试进行一些非常粗略的基准测试,因此我想运行 time
来 self 的脚本的命令。我有以下内容:
#!/usr/bin/perl
use strict;
my $command = "/usr/bin/time -f \"%U,%S,%E,%P,%K,%M\" ...";
my $stats = `$command`;
print "stats: $stats\n";
不幸的是,该命令的结果似乎从未分配给 $stats
。当我执行脚本时,我得到如下内容:
0.15,0.03,0:00.44,43%,0,143808
stats:
所以看起来它运行的是 time
命令成功,但打印出值 STDOUT
而不是将值分配给 $stats
。当我使用另一个命令时,例如 ls
,它似乎按预期工作。我在这里做错了什么?
最佳答案
time
打印到 stderr。
$ /usr/bin/time -f "%U,%S,%E,%P,%K,%M" echo foo >/dev/null
0.00,0.00,0:00.03,10%,0,2352
$ /usr/bin/time -f "%U,%S,%E,%P,%K,%M" echo foo >/dev/null 2>/dev/null
$
因此只需将 2>&1
添加到您的命令中即可。
关于perl - 从 perl 运行/usr/bin/time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140850/