Command to get time in milliseconds
Linux中是否有shell命令以毫秒为单位获取时间?
因此,
例如:
1 2 | $ echo $(($(date +%s%N)/1000000)) 1535546718115 |
-
date +"%T.%N" 以纳秒返回当前时间。106:46:41.431857000 -
date +"%T.%6N" 返回当前时间,纳秒缩小为前6位,即微秒。106:47:07.183172 -
date +"%T.%3N" 返回当前时间,纳秒次数舍入为前3位数,即毫秒。106:47:42.773
通常,
纳米是10?9和毫10?3。因此,我们可以使用纳秒的3个第一个字符来获得毫米:
1 | date +%s%3N |
来自
%N nanoseconds (000000000..999999999)
%s seconds since 1970-01-01 00:00:00 UTC
来源:服务器故障我如何使用bash以毫秒为单位获得当前的Unix时间?
在OS X上,
1 | brew install coreutils |
要获得更"原生"的体验,您可以随时将其添加到
1 | alias date='gdate' |
然后执行
1 | $ date +%s%N |
这是一个以某种方式可移植的hack for linux以毫秒为单位获取时间:
1 2 3 4 5 6 7 | #!/bin/sh read up rest </proc/uptime; t1="${up%.*}${up#*.}" sleep 3 # your command read up rest </proc/uptime; t2="${up%.*}${up#*.}" millisec=$(( 10*(t2-t1) )) echo $millisec |
输出是:
1 | 3010 |
这是一个非常便宜的操作,它适用于shell内部和procfs
1 | millis(){ python -c"import time; print(int(time.time()*1000))"; } |
要么
1 | alias millis='python -c"import time; print(int(time.time()*1000))"' |
在大多数情况下,其他答案可能就足够了,但我想我在加热箱系统遇到问题时会增加2美分。
有问题的系统不支持
经过多次努力,我们(感谢戴夫!)想出了这个:
1 | adjtimex | awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }' |
它从
如果你需要一个尾随的新行(可能是因为它看起来更好),那么试试吧
1 2 | adjtimex | awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }' && printf" " |
另请注意,这需要
1 2 | ln -s /bin/busybox ./adjtimex ln -s /bin/busybox ./awk |
然后将上面称为
1 | ./adjtimex | ./awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }' |
或者当然你可以把它们放在你的
编辑:
以上工作在我的busybox设备上。在Ubuntu上我尝试了同样的事情,并意识到
1 2 | sudo apt-get install adjtimex adjtimex -p | awk '/raw time:/ { print $6 }' |
我不会在Ubuntu上这样做。我会用
即使在像AIX这样的异国平台上,也可以使用Perl。例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #!/usr/bin/perl -w use strict; use Time::HiRes qw(gettimeofday); my ($t_sec, $usec) = gettimeofday (); my $msec= int ($usec/1000); my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime ($t_sec); printf"%04d-%02d-%02d %02d:%02d:%02d %03d ", 1900+$year, 1+$mon, $mday, $hour, $min, $sec, $msec; |
只是想添加@Alper的答案,我必须做些什么才能使这些东西工作:
在Mac上,你需要
1 2 3 4 5 6 7 | function timeit() { start=`gdate +%s%N` bash -c $1 end=`gdate +%s%N` runtime=$(((end-start)/1000000000.0)) echo" seconds" } |
你可以使用字符串
像这样的python脚本:
1 2 | import time cur_time = int(time.time()*1000) |