我想知道 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
它显示上次启动的时间以及自第一天以来系统关闭的时间。