如何获取命令的开始和结束时间戳?

如何获取命令的开始和结束时间戳?

我有一个工具,它会不时地输出到标准输出,不失一般性,假设序列如下:

mysystem$ ./runme
Starting
Done
mysystem$

现在“runme”需要一段时间才能完成,所以我真的很想让 shell 给我

mysystem$ somecommand ./runme
0952 Starting
1134 Done
mysystem$

或者对此进行近似... 有什么想法吗? 很高兴看到诸如写入文件之类的事情...

编辑喜欢到目前为止的快速回复,但我应该更清楚一点……

该程序可能会生成一些中间语句,所以我非常希望 shell 能够给我

mysystem$ somecommand ./runme
0952 Starting
0959 Somewaythough
1011 Mostly done
1134 Done
mysystem$

但这很可能是不可能的......

答案1

当前的

$ ./slow
Starting ...
Nearly finished ...
All done.

期望

$./slow | ./stamp
15:31:19 Starting ...
15:31:29 Nearly finished ...
15:31:31 All done.

慢速进程

$ cat slow
#!/usr/bin/ksh
echo Starting ...
sleep 10
echo Nearly finished ...
sleep 2
echo All done.

时间戳器

$ cat stamp
#!/usr/bin/perl
use strict;
use warnings;
while(<>) {
  my($sec, $min, $hour) = (localtime)[0..2];
  print "$hour:$min:$sec $_";
}

事实上,我很惊讶这个方法有效,我以为我必须对缓冲做些什么。YMMV

使用sprintf来格式化时间留给读者作为练习。


为了高尔夫球手

$ ./slow | perl -n -e 'printf "%02d:%02d:%02d %s", (localtime)[2,1,0],$_'
15:42:17 Starting ...
15:42:27 Nearly finished ...
15:42:29 All done.

答案2

您可以将其放在time要执行的命令前面,它就会计时执行。

user@hostname/pwd$ time ls
file1
file2
file3

real      0m0.006s
user      0m0.001s
sys       0m0.003s

更长的命令可以使时间变得更加有趣。

答案3

关于什么:

ls -la 
total 28
drwxr-xr-x   2 glens glens    27 2011-06-16 09:27 ./
drwxr-xr-x 197 glens glens 69632 2011-11-10 11:17 ../
-rwxrwxrwx   1 glens glens   406 2011-06-16 09:27 SERVER_LOG.txt*

sed

ls -la  | sed -e "s/\(.*\)/$(date +%H%M) \1/"
1154 total 28
1154 drwxr-xr-x   2 glens glens    27 2011-06-16 09:27 ./
1154 drwxr-xr-x 197 glens glens 69632 2011-11-10 11:17 ../
1154 -rwxrwxrwx   1 glens glens   406 2011-06-16 09:27 SERVER_LOG.txt*

答案4

在命令之前显示一个时间戳,在命令之后显示另一个时间戳:

### show current time for each command
## after the command:
PS1='[\t]'"$PS1"
## before the command:
trap 'echo [$( date +%H:%M:%S)]' DEBUG

输出示例:

me@mycomp MINGW64 ~/Projects/myproject (master)
$ php -v
[16:03:41]
PHP 8.0.14 (cli) (built: Dec 16 2021 10:25:26) ( ZTS Visual C++ 2019 x64 )
Copyright (c) The PHP Group
[16:03:41]

相关内容