我知道该uptime
命令,但它自启动后返回秒数,所以如果我只是从当前时间戳中减去该数字,理论上如果在我读取正常运行时间和当前时间戳后秒发生变化,我可以获得不同的结果。uptime -s
是我想要的,但它在 centos 上不可用(顺便说一句,它是如何计算的?)。我可以只获取 /proc 目录的 ctime 吗?这似乎给了我正确的数字,但我想知道是否每个 linux 系统都在启动时创建了 /proc。
ter*_*don 14
首先,在 Linux 上crtime
很棘手。也就是说,运行类似
$ stat -c %z /proc/
2014-10-30 14:00:03.012000000 +0100
Run Code Online (Sandbox Code Playgroud)
或者
$ stat -c %Z /proc/
1414674003
Run Code Online (Sandbox Code Playgroud)
可能正是您所需要的。该/proc
文件系统由标准的LFS定义,应该有任何Linux系统以及大部分(所有?)UNIXen。
或者,假设您并不真正需要秒精度,而只需要时间戳正确,您可以使用who
:
$ who -b
system boot 2014-10-30 14:00
Run Code Online (Sandbox Code Playgroud)
From man who
: -b, --boot time of last system boot
您可以使用 GNU 将其转换为自纪元以来的秒数date
:
$ date -d "$(who -b | awk '{print $4,$3}' | tr - / )" +%s
1414674000
Run Code Online (Sandbox Code Playgroud)
小智 5
/proc/stat
另一种解决方案是btime
[1]:
$ cat /proc/stat | grep btime | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
输出示例:
1583547431
Run Code Online (Sandbox Code Playgroud)
这是自纪元以来的秒数时间戳。
[1] http://man7.org/linux/man-pages/man5/proc.5.html