是否有Linux的一个shell命令来获取毫秒的时间?
Answer 1:
date +%s%N
返回的秒+当前纳秒数。
因此, echo $(($(date +%s%N)/1000000))
是你所需要的。
例如:
$ echo $(($(date +%s%N)/1000000))
1535546718115
date +%s
返回的秒数从epoch,如果这是有用
Answer 2:
date +"%T.%N"
返回当前时间与纳秒。06:46:41.431857000
date +"%T.%6N"
返回当前时间与舍入到前6位,这是微秒纳秒。06:47:07.183172
date +"%T.%3N"
返回当前时间与舍入到前3位数字,这是毫秒纳秒。06:47:42.773
在一般情况下,每场date
命令的格式可以给出一个可选的字段宽度。
Answer 3:
纳米是10 -9和毫10 -3。 因此,我们可以利用纳秒的3个字符拿到毫:
date +%s%3N
从man date
:
%N纳秒(000000000..999999999)
自1970-01-01 00:00:00 UTC%S秒
来源:服务器故障是我得到当前Unix时间使用bash毫秒怎么办? 。
Answer 4:
在OS X上,其中date
不支持%N
标志,我建议安装coreutils
使用自制 。 这会给你访问一个命令调用gdate
,这将表现为date
确实在Linux系统上。
brew install coreutils
对于更多的“原生”的经历,你可以随时添加到您的.bash_aliases
alias date='gdate'
然后执行
$ date +%s%N
Answer 5:
date
命令didnt提供在OS X毫秒,所以使用从蟒别名
millis(){ python -c "import time; print(int(time.time()*1000))"; }
要么
alias millis='python -c "import time; print(int(time.time()*1000))"'
Answer 6:
其他答案很可能在大多数情况下足够了,但我想我会加入我的2美分,我遇到了一个busybox的系统上的问题。
有问题的系统不支持%N
格式选项,也没有python
或perl
解释。
经过大量挠头我们(!感谢戴夫)想出了这一点:
adjtimex | awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }'
它提取从输出秒和毫秒adjtimex
(通常用于设置系统时钟的选择),并打印它们没有新线(使他们获得胶合在一起)。 请注意,微秒字段必须预先用零填充,但是这并不影响秒字段比6位长呢。 从这一点应该是微不足道的微秒转换为毫秒。
如果你需要一个尾随新行(也许是因为它看起来更好)然后再试
adjtimex | awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }' && printf "\n"
另外请注意,这需要adjtimex
和awk
可用。 如果没有,那么与busybox的,你可以指出他们与本地
ln -s /bin/busybox ./adjtimex
ln -s /bin/busybox ./awk
然后调用上面
./adjtimex | ./awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }'
或者,当然你可以把它们放在你PATH
编辑:
以上的工作我busybox的设备上。 在Ubuntu上我尝试了同样的事情,并意识到adjtimex
有不同的版本。 在Ubuntu这个工作到输出的时间以秒为小数,以微秒(包括尾随新行)
sudo apt-get install adjtimex
adjtimex -p | awk '/raw time:/ { print $6 }'
我不会做这在Ubuntu虽然。 我会用date +%s%N
Answer 7:
这里是Linux的获取时间以毫秒为莫名其妙便携式黑客:
#!/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
输出是:
3010
这是一个非常便宜的操作,这与外壳的内部和procfs的作品
Answer 8:
Perl可以用于此,即使在像AIX平台异国情调。 例:
#!/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\n",
1900+$year, 1+$mon, $mday, $hour, $min, $sec, $msec;
Answer 9:
python脚本是这样的:
import time
cur_time = int(time.time()*1000)
Answer 10:
只想添加到@阿尔珀的回答了我必须做的就是这个东西的工作:
在Mac上,你需要brew install coreutils
所以我们可以使用gdate
。 否则在Linux上,它只是date
。 而这一功能将帮助您随时命令,而无需创建临时文件或任何东西:
function timeit() {
start=`gdate +%s%N`
bash -c $1
end=`gdate +%s%N`
runtime=$(((end-start)/1000000000.0))
echo " seconds"
}
你还可以用一个字符串使用timeit 'tsc --noEmit'