Linux 中是否有记录关机的日志?

Linux 中是否有记录关机的日志?

我想知道 Linux 中是否有一个日志文件记录每次计算机关闭的情况?

我之所以问这个问题,是因为我正在做一些测试,测试我的笔记本电脑电池在特定条件下能使用多长时间。我的笔记本电脑配置为在电池电量剩余约 10 分钟时自动关机,因此如果某处有一个日志文件记录了电脑关机的时间,这将使我的测试变得容易得多。

我正在运行 Ubuntu 10.04。谢谢!

答案1

/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/

其中,“状态”和“信息”文件看起来很有趣。您可以在各种条件下运行笔记本电脑时查看状态文件中的剩余容量,看看容量下降的速度有多快。

答案2

命令怎么样last -x shutdown

答案3

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

其次,请注意以下命令是不好的做法,属于“cat 的无用用途”(谷歌搜索)类别...

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)只是浪费时间和资源。

最后,至于在哪里可以找到系统关闭和/或重新启动的记录,请使用 last 命令,因为它正是为此而设计的。它读取 /var/log/wtmp 日志文件以查找所有登录/注销条目。由于关闭和重新启动实际上是系统级登录/注销事件,因此它们记录在这里。root 控制台关闭也是如此,它是一个注销事件。

例子:

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

最简单的方法不仅可以查看关机时间,还可以查看启动时间:

journalctl --list-boots > file.txt

它显示上次启动的时间以及自第一天以来系统关闭的时间。

相关内容