2010-07-24 20:12:11 +0000 2010-07-24 20:12:11 +0000
40
40

Linux中有没有记录关机的日志?

我想知道在Linux中是否有一个日志文件,它记录了每次关机的情况?

我问这个问题的原因是,我正在做一些测试,涉及到我的笔记本电池在某些条件下的持续时间。我的笔记本被配置为当电池电量还剩10分钟时自动关机,所以如果在某个地方有一个记录电脑关机时间的日志文件,这将使我的测试变得更加容易。

我运行的是Ubuntu 10.04。谢谢你

答案 (8)

29
29
29
2010-07-29 09:30:27 +0000

命令last -x shutdown呢?

16
16
16
2010-07-24 21:43:43 +0000

/var/log/messages文件中确实应该有一些与关机有关的内容,比如我的(CentOS 5)就有这样的行。

Jul 18 23:00:13 nero shutdown[2649]: shutting down for system halt
...
Jul 18 23:00:27 nero kernel: Kernel logging (proc) stopped.
Jul 18 23:00:27 nero kernel: Kernel log daemon terminating.

检查你的/etc/syslog.conf/etc/rsyslog.conf或同等文件,以确保日志在那里。你可能需要root权限才能读取日志文件。

另外,虽然它本身不是关机,但 “last "命令应该报告重启情况。

在你最后一次关机的前后,日志中真的什么都没有吗?

为了便于您的测试,请记住,您的计算机只知道它还剩10分钟,因为电池报告的信息可能是或不准确。与其等待关机,你可以直接查看ACPI信息。在我的笔记本上,它在这里。

/proc/acpi/battery/BAT0/

在这里,"状态 "和 "信息 "文件看起来很有趣。你可以在各种条件下运行笔记本时观察状态文件中的剩余容量,看看它下降的速度有多快。

5
5
5
2015-03-26 14:50:50 +0000

首先,让我先说,我知道这是一个老话题。我发表评论是为了让其他在网上搜索时发现这个问题的人(就像我今天一样)能有一个明确的答案。

其次,请注意以下命令是不好的做法,属于 “猫的无用用途"(google搜索一下)的范畴……

cat /var/log/messages | grep "`LC_ALL=en_en.utf8 date +"%b %e"`"

这一行应该改成。

grep "`LC_ALL=en_en.utf8 date +"%b %e"`" /var/log/messages

grep, 大部分的unix/linux命令(sed, awk, 等等… )都不需要cat来读取文件内容. 只需将文件路径和名称放在命令后面作为参数传递即可。增加一个管道和另一个外部命令(cat)只是浪费时间和资源。

最后,至于在哪里找到系统关机和/或重启的记录,使用最后一条命令,因为这正是它的目的。它读取/var/log/wtmp日志文件中的所有登录/注销条目。因为关机和重启实际上是系统级别的登录/注销事件,所以它们被记录在这里。同样的道理也适用于root console shutdown,它是一个logout事件。

示例:

last -5 reboot shutdown root

这将给你wtmp日志中最后5个重启、关机和root(包括控制台关机)条目。

结果:

reboot ~ Mon Mar 23 14:51
shutdown ~ Mon Mar 23 14:49
root console Mon Mar 23 14:49 - shutdown (00:00)
reboot ~ Mon Mar 16 09:54
shutdown ~ Thu Mar 12 17:41

我希望这能帮助任何偶然发现这个帖子的人。)

4
4
4
2010-07-24 20:16:46 +0000

/var/log/messages文件应该包含以下信息。

2
2
2
2010-07-25 01:22:07 +0000

如果你想跟踪你的电脑在过去有多长时间,你可以使用类似uptimed的东西。

它自带一个叫uprecords的程序,可以显示你的电脑已经开机多长时间了。

1
1
1
2017-01-19 18:02:30 +0000

last reboot在CentOS 6.7上对我有效。

要在输出中显示年份,所以如果你有超过一年的记录,实际上是有意义的,做

last -F reboot

虽然我收集到-F开关在某些系统上不起作用,比如Solaris。不过这显然是GNU最后的一部分。

感谢 https://unix.stackexchange.com/a/97597/174520

1
1
1
2014-05-07 13:52:00 +0000

这里有一个单行本,可以列出当天的所有消息。

cat /var/log/messages | grep "`LC_ALL=en_en.utf8 date +"%b %e"`"

这是在CentOS上测试的,所以YMMV。

当然还有last rebootlast shutdown(如前所述),但这对我的需求来说太简单了(只提供日期)。

0
0
0
2010-07-24 21:15:36 +0000

如果没有日志,你可以尝试在关机脚本中添加一些 “日期/>/>mylog”(在某些系统中,它被称为rc.shutdown)

或者,也有一个不需要预处理的方法。运行。

while [1];do sleep 5;date>mylog;sync;done

并在下一次会话时跟踪mylog。