在 Linux 中获取系统启动的日期和时间

jho*_*jho 46 linux uptime

我知道这会uptime打印机器启动并运行的时间,但是有没有比从此输出倒计时更容易(可靠)的方法来获取启动日期?

我试着环顾四周/proc,但没有找到任何相关的东西。我的也有这样一行dmesg

[    0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)
Run Code Online (Sandbox Code Playgroud)

但我想知道这种方法是否与发行版和内核版本无关?

cha*_*dge 42

我在这里找到了一些命令。尝试who -blast reboot | head -1
who给出数字日期,而last reboot返回缩写的日/月名称。

  • `谁-b | cut -d' ' -f13` 仅返回日期(-f14 返回时间) (4认同)
  • 警告:`last reboot` 没有给我正确的日期!`谁-b`做了。 (2认同)

sam*_*var 24

这从内核查询正常运行时间并将其显示在本地时区中:

date -d "`cut -f1 -d. /proc/uptime` seconds ago"
Run Code Online (Sandbox Code Playgroud)

小心其他选项。该last命令将wtmp在旋转后立即停止工作。该who命令取决于 的可用性和完整性utmp。并且/proc/1可能有当前日期而不是启动时间日期,甚至可能在强化系统上不可用。编辑dmesg只有一个固定长度的后台缓冲区,所以它也不可靠。内核日志可能存在,/var/log但大多数发行版只保留 8 周。

  • 查看所有替代答案后,确定:**`date -d "\`cut -f1 -d./proc/uptime\` seconds ago" -u`**(其中有 UTC 的时间/日期) (3认同)

小智 19

我无意中发现了这个问题,同时寻找一种方式来获得一致的,可分析的开机时间,而不是因为启动时,其在每次调用改变。

看来这uptime -s将在大多数 linux 系统上奏效。


Odd*_*r13 12

btime/proc/stat四处闲逛时发现了这条线

cat /proc/stat | grep btime | awk '{ print $2 }'
Run Code Online (Sandbox Code Playgroud)

快速搜索后,我找到了这个页面:/proc/stat 解释,其中概述了“/proc/stat文件中可用的有关内核活动的各种信息 ”。

“btime”行给出了系统启动的时间,以 Unix 纪元以来的秒数为单位。


tei*_*ura 8

  • : uptime -swho -b或者解析/proc/uptime
  • ls -ld /proc/1和变体。

不要为此使用 ls -ld /proc/1。它有时会在 s2disk 或 s2ram 之后更新

在我的情况下,who -b说:

系统启动 5 月 2 日 09:51

虽然ls -ld /proc/1

dr-xr-xr-x 7 root root 0 May 3 13:09 /proc/1

ls -ldfor /procor/sys似乎在恢复后仍然存在,但它依赖于实现,并且将来可能会发生变化,因此不要使用此类方法。如果你的系统时钟是本地时间,UTC没有,他们有负偏移。

(我还没有权限对答案发表评论,所以打开了一个新答案。抱歉。)

编辑:uptime -s首先由mikegreiling在此答案中回答