如何通过查看系统日志来判断系统是否重新启动以及重新启动的时间?


14

如何查看Linux日志(例如)来判断Linux系统是否重新启动并确定重新启动的时间/var/log/messages


重新启动怎么了?通过控制台命令?电力流失?硬件故障?
devicenull 2012年

@devicenull:我认为应该是以上所有情况,因为回答“何时重新开启电源?”之类的问题很有用。“工程师做了什么?什么时候发生?”
Stefan Lasiewski'2

Answers:


24

非常非常容易 该last命令将分析/var/log/wtmp用户活动,包括伪用户重新启动。

使用命令: last reboot

请参阅man last以获取更多信息。http://linux.die.net/man/1/last

每次重新引导系统时,伪用户重新引导都会登录。因此,上次重启将显示自创建日志文件以来所有重启的日志。

如果/ var / log / wtmp文件是自上次重新引导以来旋转的,则可以使用来查看先前的重新引导last -f /var/log/wtmp.1 reboot


嗨,亚伦,谢谢您的帮助!我在系统上尝试了“最后一次重启”,并得到了以下信息:“ wtmp开始于2012年3月1日星期四11:10:40”,但是“正常运行时间”却给了我这样的信息:“ 17:29:21最多6天,9:24、7用户,平均负载:0.00、0.01、0.05“。我系统上的当前时间是MST 3月1日17:31。因此,似乎“上次重新启动”认为系统在不到一天前已重新启动,这不是真的。...您能告诉我更多有关“上一次”如何确定重新启动时间的信息吗?谢谢!
2012年

2
该时间戳并不表示重新启动。您会看到一条看起来像的线reboot system boot [kernel] [date]。因此,这告诉您wtmp回溯了多久,并且自日志开始以来就没有重新启动过。也许日志在3月1日旋转了?
亚伦·科普利2012年

一定是我在其他一些系统上尝试过的结果,其中一些确实显示了这样的行:reboot system boot 2.6.27.19-5-defa Thu Jul 14 04:10(64 + 12:37)。非常感谢!
杰克Z

9

它因发行而异。有时/ var / log / {messages,syslog,dmesg}将包含它。对于刚重启的那一行,我的最后两行和重启后的第一行是:

Feb 29 13:16:07 hostname kernel: Kernel logging (proc) stopped.
Feb 29 13:16:07 hostname rsyslogd: [origin software="rsyslogd" swVersion="5.8.1" x-pid="592" x-info="http://www.rsyslog.com"] exiting on signal 15.
Feb 29 13:23:15 hostname kernel: imklog 5.8.1, log source = /proc/kmsg started.
Feb 29 13:23:15 hostname rsyslogd: [origin software="rsyslogd" swVersion="5.8.1" x-pid="572" x-info="http://www.rsyslog.com"] start
Feb 29 13:23:15 hostname rsyslogd: rsyslogd's groupid changed to 103
Feb 29 13:23:15 hostname rsyslogd: rsyslogd's userid changed to 101
Feb 29 13:23:15 hostname rsyslogd-2039: Could no open output pipe '/dev/xconsole' [try http://www.rsyslog.com/e/2039 ]
Feb 29 13:23:15 hostname kernel: [    0.000000] Initializing cgroup subsys cpuset
Feb 29 13:23:15 hostname kernel: [    0.000000] Initializing cgroup subsys cpu
Feb 29 13:23:15 hostname kernel: [    0.000000] Linux version 3.0.0-12-server (buildd@crested) (gcc version 4.6.1 (Ubuntu/Linaro 4.6.1-9ubuntu3) ) #20-Ubuntu SMP Fri Oct 7 16:36:30 UTC 2011 (Ubuntu 3.0.0-12.20-server 3.0.4)
Feb 29 13:23:15 hostname kernel: [    0.000000] Command line: BOOT_IMAGE=/vmlinuz-3.0.0-12-server root=/dev/mapper/hostname-root ro
Feb 29 13:23:15 hostname kernel: [    0.000000] KERNEL supported cpus:
Feb 29 13:23:15 hostname kernel: [    0.000000]   Intel GenuineIntel
Feb 29 13:23:15 hostname kernel: [    0.000000]   AMD AuthenticAMD
Feb 29 13:23:15 hostname kernel: [    0.000000]   Centaur CentaurHauls
Feb 29 13:23:15 hostname kernel: [    0.000000] Disabled fast string operations
Feb 29 13:23:15 hostname kernel: [    0.000000] BIOS-provided physical RAM map:

... 等等。这表明正常关机。意外关机可能不会告诉您它脱机的时间,但是您可以根据最后一条消息与第一条消息之间的间隔来猜测,具体取决于您的系统噪声。


谢谢你的帮助!因此,我可以依靠“内核:[0.000000]”作为系统重新启动的指示器吗?
杰克Z

5

输入uptime命令。

这将告诉您系统已经运行了多长时间以及平均负载。

编辑:您还可以查找/var/log/kern.log。它应该只包含内核消息,因此将更容易找到启动消息。


注意:如果此服务器很重要,则应考虑使用Nagios之类的东西来实现集中式syslog服务器,以监视系统运行状况并向您发出中断警报。我使用并喜欢AlienVault,其中包括(组件是可选的):系统日志服务器,nagios,入侵检测,漏洞扫描程序,资产跟踪等。
InChargeOfIT 2012年

2

在/ var / log / messages或/ var / log / boot日志中查找系统启动时间。来自CentOS 6的示例...

Feb 28 23:05:56 dev0 kernel: imklog 4.6.2, log source = /proc/kmsg started.
Feb 28 23:05:56 dev0 rsyslogd: [origin software="rsyslogd" swVersion="4.6.2" x-pid="1557" x-info="http://www.rsyslog.com"] (re)start

1

在Ubuntu上,我查找字符串\] Linux version/var/log/syslog

它将匹配看起来像这样的行:

27 Jun 2017 12:33:42.268 Hostname:my-hostname : [ 0.000000] Linux version 3.13.0-100-generic (buildd@lgw01-52) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #147-Ubuntu SMP Tue Oct 18 16:48:51 UTC 2016 (Ubuntu 3.13.0-100.147-generic 3.13.11-ckt39) Context
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.