在基于 unix 的系统中是否存在我可以读取的文件,以获取与 php 中的 time() 返回相同的值?
答案1
与我其他的读取元数据的答案不同,通过 /proc 搜索“sec”,我确实找到了一个包含当前系统时间的文件:
/proc/timer_list
包含两个值:以纳秒为单位的正常运行时间(现在在...)以及稍晚一些的系统启动时间,也以纳秒为单位(.offset)。如果将它们相加并除以 10^9,您就会得到当前时间。
Timer List Version: v0.6
HRTIMER_MAX_CLOCK_BASES: 2
now at 2089173850911347 nsecs
cpu: 0
clock 0:
.base: 0000000000000000
.index: 0
.resolution: 1 nsecs
.get_time: ktime_get_real
.offset: 1316955129915578545 nsecs
编辑:还有另一个:/sys/devices/pnp0/00:05/rtc/rtc0/since_epoch
似乎包含真正的 unix 时间戳,没有偏移量或类似内容。但我不确定这个文件到底是什么,只是在 grepping 时发现它。
如果您还具有一些用于开发的终端访问权限,您可以自己尝试:
grep 131904 `find /sys 2>/dev/null` 2>/dev/null
在您有权访问的 /sys 中查找包含 unix 时间戳前几位数字的文件(如果稍后使用则替换)。
答案2
- 在我的系统上,
/proc/cpuinfo
的{a|c|m}时间等于当前系统时间。 - 也许您可以执行
date
并读取其输出?
答案3
PHP 的 time() 函数返回自 Unix 纪元以来的秒数。您可以使用其他 PHP 函数以任何您想要的方式将其格式化为日期和/或时间。
Unix 的 date 命令(至少是 GNU 版本)可以做同样的事情
# date "+%s"
1319042692
因此,您可以根据需要轻松创建包含该数字的文件(例如,使用 PHP 的 system() 函数)
或者直接阅读
$secs_since_epoch = system('date "+%s"', $return_value);
不过,对于您所问的问题,我想不出一个合理的用例。