在大多数情况下,其他答案可能就足够了,但当我在 BusyBox 系统上遇到问题时,我想我会加两分钱。
有问题的系统不支持%N 格式选项,并且没有 Python 或 Perl 解释器。
经过多次挠头,我们(感谢戴夫!)想出了这个:
adjtimex | awk '/(time.tv_sec|time.tv_usec):/ { printf("%06d", $2) }'
它从adjtimex 的输出中提取秒和微秒(通常用于设置系统时钟的选项)并在没有新行的情况下打印它们(因此它们粘在一起)。请注意,微秒字段必须预先填充零,但这不会影响超过六位数的秒字段。由此,将微秒转换为毫秒应该是微不足道的。
如果你需要一个尾随的新行(也许是因为它看起来更好)然后尝试
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