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


44

我知道uptime打印机器启动和运行的时间,但有没有一种更简单(可靠)的方式来获取启动日期而不是从此输出中倒计时?

我试着环顾四周/proc,但没有找到任何相关的东西。在我身上还有这样一条线dmesg

[    0.673492] rtc_cmos rtc_cmos: setting system clock to 2011-03-14 14:26:52 UTC (1300112812)

但我想知道这种方法是分布式还是内核版本不可知?


什么是unreliable or harduptime
Bobby

2
@Bobby:关于命令或它的功能本身没什么,但正如我所说,我想得到上一次系统启动的日期和时间,而不是从那以后多久。uptime返回一个字符串,如“up 13 days,21:01”,你需要从中计算它。
2011年

4
从正常运行时间值算起来是微不足道的。如果你想要可靠,你想要/proc/uptime
sam hocevar 2011年

Answers:


38

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


如果我们只想要约会而没有别的怎么样?
T0xicCode 2012年

4
who -b | cut -d' ' -f13仅返回日期(-f14返回时间)
查尔斯布里奇

2
警告:last reboot没有给我正确的日期!who -b没有。
qwertzguy 2013年

last reboot也给了我一个不正确的日期,wtmp似乎已经在这个月的第一天轮换
golimar 2015年

23

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

date -d "`cut -f1 -d. /proc/uptime` seconds ago"

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


1
有趣的是,这与who -b我的210天正常运行时间系统上的一两分钟不一致。看起来像who -b报告时间戳,而这种计数在某种程度上受到时钟漂移的影响,即使这些是由运行周期性地纠正的ntpd
鲁斯兰2014年

3
在审查了所有替代答案后,确定:( date -d "`cut -f1 -d. /proc/uptime` seconds ago" -u其中有UTC的时间/日期)
david6

非凡的答案。如果内核不知道,没有人知道 - 它是系统的真相来源。秒可以很容易地执行时间计算(我偶然发现这是因为我想知道“我的哪个主机在最后一天内没有重启[86,400秒]?”)
Mike S

16

我偶然发现了这个问题,同时寻找一种方法来获得一致的,可解析的启动时间,而不是每次调用后启动时的时间

它似乎uptime -s将在大多数Linux系统上发挥作用。


uptime -s输出例如2017-08-09 01:23:45。这是最好的,最简单的。该命令包含在“procps”包中。
teika kazura

遗憾的是uptime,CentOS 6(procps version 3.2.8)似乎并不支持这一点。
mwfearnley

uptime -s并不总是返回不变的结果:superuser.com/q/1247713/71144
cweiske

1
请注意,这始终是在本地时间,但实际上并不打印时区/偏移量。因此,如果您希望以编程方式从机器中提取它,那么它并不理想,因为您可能需要根据您的使用情况单独确定其时区。所以,我建议其他一些答案。
JJC

11

我在找了一下时发现了这btime条线/proc/stat

cat /proc/stat | grep btime | awk '{ print $2 }'

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

“btime”行给出了系统启动的时间,自Unix纪元以来的几秒钟内。


1
似乎更容易写awk '/btime/{print $2}' /proc/stat
威廉Pursell

@WilliamPursell最简单的就是你已经知道的。我不是巫师。:P
Oddstr13

好点子。但是,你无偿使用了猫。只是从文件grep。
Mike S

@MikeS正确 - 但是,我仍然支持我的原始命令链,作为信息发现位置的清晰表示,即使在我回答后7年。
Oddstr13'18

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 5月3日13:09 / proc / 1

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

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

编辑:uptime -s首先回答这个答案mikegreiling


2

最简单的方法是查看/ sbin / init何时启动(这始终是内核加载后要启动的第一个进程):

# ls -ld /proc/1
dr-xr-xr-x 7 root root 0 2011-03-27 23:54 /proc/1

所以我可以看到我的机器在2011年3月27日的6分钟到午夜启动。

如果要在脚本中使用它,可以使用stat命令:

# stat --printf='%Y' /proc/1
1301266491

%Y,因为该目录的时间上次指定以秒改变(流程创建时间),因为历元(1/1/70)和是一个标准的Unix时间戳。


1
不幸的是,这并不工作:在这些文件夹中的mtime可以因其他原因改变(我这里有一个系统,有5天的正常运行时间和的/ proc / 1的mtime 25分钟前)
KDT

1
不可靠,正如我的回答
teika kazura

1

在Linux中,

ls -ld /proc

似乎给了我我需要的东西。上面的帖子很奇怪。 /proc/uptime不包含日期值 - 必须从当前时间中减去。也许他的意思是:

date -d @$(( $(date +%s) - $(cut -f1 -d. /proc/uptime) ))

uptime -s提供日期值
mikegreiling

1

在Bash下,没有管道或其他过程; 只是文字:

$ REPLY="$(</proc/uptime)"
$ REPLY="${REPLY%%.*}"
$ echo "$REPLY"
31207

(只是重用REPLY默认变量,但你可以选择你需要的任何东西)


当然,为什么不呢?有点聪明地使用变量子串。凉。+1。谢谢你的想法!
Mike S

1

这似乎很强大,并将以UTC和ISO8601格式提供给您。(删除最后两个选项以分别禁用):

date -d "`cut -f1 -d. /proc/uptime` seconds ago" -u -Iseconds

0
date -d @$(sed -n '/^btime /s///p' /proc/stat)

(还有另一种方法,这在某些情况下很有用)


0

命令:

(echo ' Currently:' | tr "\n" ' ' ; date +"%Y-%m-%d %k:%M:%S" ; echo '  Up Since:' | tr '\n' ' ' ; uptime -s ; echo '  Duration:' | tr '\n' ' ' ; uptime -p)

输出:

 Currently: 2016-05-09  9:06:29
  Up Since: 2016-05-04 12:56:04
  Duration: up 4 days, 20 hours, 10 minutes

0

使用tuptime命令清晰简洁:

# tuptime -t
No.             Startup Date                                          Uptime            Shutdown Date   End                    Downtime

1     09:43:39 AM 08/08/2017      41 days, 0 hours, 51 minutes and 2 seconds   10:34:41 AM 09/18/2017    OK                  10 seconds
2     10:34:51 AM 09/18/2017                         1 minute and 16 seconds   10:36:07 AM 09/18/2017    OK                    1 second
3     10:36:08 AM 09/18/2017                       13 minutes and 20 seconds   10:49:28 AM 09/18/2017    OK                   3 seconds
4     10:49:31 AM 09/18/2017       45 days, 0 hours, 1 minute and 20 seconds   09:50:51 AM 11/02/2017    OK                   4 seconds
5     09:50:55 AM 11/02/2017                       27 minutes and 25 seconds   10:18:20 AM 11/02/2017    OK                   4 seconds
6     10:18:24 AM 11/02/2017                                       9 seconds   10:18:33 AM 11/02/2017    OK                   9 seconds
7     10:18:42 AM 11/02/2017      4 days, 5 hours, 41 minutes and 47 seconds   04:00:29 PM 11/06/2017    OK                  44 seconds
8     04:01:13 PM 11/06/2017    15 days, 17 hours, 33 minutes and 48 seconds   09:35:01 AM 11/22/2017   BAD   10 minutes and 40 seconds
9     09:45:41 AM 11/22/2017               8 hours, 9 minutes and 20 seconds   05:55:01 PM 11/22/2017   BAD     7 minutes and 8 seconds
10    06:02:09 PM 11/22/2017                1 hour, 7 minutes and 54 seconds   07:10:03 PM 11/22/2017   BAD   11 minutes and 30 seconds
11    07:21:33 PM 11/22/2017               1 hour, 58 minutes and 32 seconds   09:20:05 PM 11/22/2017    OK                   5 seconds
12    09:20:10 PM 11/22/2017                       14 minutes and 52 seconds   09:35:02 PM 11/22/2017   BAD    5 minutes and 52 seconds
13    09:40:54 PM 11/22/2017                         4 minutes and 6 seconds   09:45:00 PM 11/22/2017   BAD    4 minutes and 51 seconds
14    09:49:51 PM 11/22/2017             11 hours, 15 minutes and 10 seconds   09:05:01 AM 11/23/2017   BAD    7 minutes and 20 seconds
15    09:12:21 AM 11/23/2017      3 days, 2 hours, 17 minutes and 40 seconds   11:30:01 AM 11/26/2017   BAD   27 minutes and 44 seconds
16    11:57:45 AM 11/26/2017   109 days, 19 hours, 12 minutes and 37 seconds   07:10:22 AM 03/16/2018    OK                  17 seconds
17    07:10:39 AM 03/16/2018     25 days, 3 hours, 55 minutes and 59 seconds   12:06:38 PM 04/10/2018    OK                   3 seconds
18    12:06:41 PM 04/10/2018      8 days, 19 hours, 3 minutes and 20 seconds   07:10:01 AM 04/19/2018   BAD    3 minutes and 52 seconds
19    07:13:53 AM 04/19/2018     77 days, 9 hours, 44 minutes and 39 seconds
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.