我知道这会uptime
打印机器启动和运行的时间,但是有没有比从这个输出倒计时更简单(可靠)的方法来获取启动日期?
我试着四处寻找/proc
,但没有找到任何相关的东西。我的上面还有一行这样的内容dmesg
:
[ 0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)
但我想知道这种方法是否与分布和内核版本无关?
答案1
我发现了一些命令这里。尝试who -b
或last reboot | head -1
。
who
给出数字日期,而last reboot
返回缩写的日期/月份名称。
答案2
这将从内核查询正常运行时间并将其显示在本地时区中:
date -d "`cut -f1 -d. /proc/uptime` seconds ago"
请谨慎使用其他选项。last
一旦wtmp
被轮换,该命令将停止工作。该who
命令取决于 的可用性和完整性utmp
。并且/proc/1
可能具有当前日期而不是启动时间日期,甚至可能在强化系统上不可用。编辑:dmesg
只有一个固定长度的后台缓冲区,因此它也不可靠。内核日志可能存在,/var/log
但大多数发行版仅保留 8 周的日志。
答案3
我在寻找一种获得一致、可解析的方法时偶然发现了这个问题开机时间,而不是自启动以来的时间每次通话时都会发生变化。
看起来这uptime -s
在大多数 Linux 系统上都可以起作用。
答案4
- 好的:
uptime -s
或who -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 5月 3 13:09 /proc/1
ls -ld
或/proc
似乎/sys
在恢复后仍然存在,但它依赖于实现,并且将来可能会发生变化,所以不要使用这样的方法。和如果你的系统时钟是本地时间,而不是 UTC,它们有负偏移。
(我还没有权限对答案发表评论,因此打开了一个新答案。抱歉。)