我看不到这样的选择date
/proc/uptime
是基于引导的,而不是单调的。
最后我发现如果我理解正确的话,cat /proc/timer_list | grep now
它会产生 nsecs 的数量,这是通过ktime_get
返回单调时间获得的,但这很麻烦。
更新:返回的值必须与返回的相同clock_gettime
这并没有回答当前的问题,而是回答了原来的问题。因此,它被保留,因为到目前为止它对某些人有用。
在 shell 中,您可以只使用 date 实用程序:
date +%s.%N
date +%s%N
nanoseconds_since_70=$(date +%s%N)
从人日期:
%s seconds since 1970-01-01 00:00:00 UTC
%N nanoseconds (000000000..999999999)
纳秒部分以正确的方式补充秒数:当 %N 从 999999999 变为 0 时,%s 增加一秒。我没有这方面的参考(如果你能找到它,请编辑),但它可以工作。
请注意,数字不受时区变化的影响,但会受到系统时钟变化的影响,如系统管理员所做的更改、NTP 和 adjtime 函数。然而,clock_gettime 函数中的 CLOCK_MONOTONIC 也会受到影响,除了管理员更改。
CLOCK_MONOTONIC -- Clock that cannot be set and represents monotonic time
since some unspecified starting point. This clock is not affected by
discontinuous jumps in the system time (e.g., if the system administrator
manually changes the clock), but is affected by the incremental adjustments
performed by adjtime(3) and NTP.
较新的系统有更好的解决方案:CLOCK_MONOTIC_RAW。尽管如此,这是一个按要求提供的外壳解决方案。
@caf 用户对 CLOCK_REALTIME 和 CLOCK_MONOTONIC 之间的差异的回答?:
CLOCK_MONOTONIC represents the absolute elapsed wall-clock time since some
arbitrary, fixed point in the past. It isn't affected by changes in the
system time-of-day clock.
If you want to compute the elapsed time between two events observed on the one
machine without an intervening reboot, CLOCK_MONOTONIC is the best option.
/proc/uptime
如果您每次都写出完整的行,那么咨询只会很麻烦。为什么不这样总结:
$ alias now="awk '/^now/ {print \$3; exit}' /proc/timer_list"
$ now
396751009584948
这也避免了 cat 的无用使用。
看起来它在 python 3.3 中可用:http: //www.python.org/dev/peps/pep-0418/
如果做不到这一点,你可以编写一个小的 C 程序调用clock_gettime
: http: //linux.die.net/man/3/clock_gettime