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


38

我想知道Linux中是否有一个日志文件,该文件每次关闭计算机时都会记录下来?

我问的原因是,我正在做一些测试,这些测试涉及我的笔记本电脑电池在某些情况下可以使用多长时间。我的笔记本电脑配置为在电池剩余电量约10分钟时自动关闭,因此,如果某个地方有记录计算机关闭时间的日志文件,这将使我的测试更加轻松。

我正在运行Ubuntu 10.04。谢谢!

Answers:


15

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

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


3
除非我没有丢失它,否则在/ var / log / messages中看不到任何“关闭”消息。有时会出现消息“内核日志记录(进程)已停止”,但并非总是如此。但是,运行last -x正常。此命令显示如下所示的一行:shutdown system down 2.6.32-23-generi Sun Jul 25 09:12 - 19:00 (-14815+-13: 感谢电池信息提示。我的系统也有这个,所以我必须检查一下!似乎每5秒钟左右更新一次这些文件。谢谢!
迈克尔

再次感谢。我的结果在这里:mangstacular.blogspot.com/2010/07/…–
迈克尔


5

首先,让我开始说我知道这是一个较旧的线程。我只是发表评论,以便其他在网上戳(如我今天所做的)时发现此问题的人将有一个明确的答案。

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

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来读取文件内容。将文件路径和名称放在命令后,以将其作为参数传递就足够了。添加管道和另一个外部命令(目录)只是浪费时间和资源。

最后,关于在哪里可以找到系统关闭和/或重新引导的记录,请使用last命令,因为这恰恰是本意。它读取所有登录/注销条目的/ var / log / wtmp日志文件。由于关机和重新启动实际上是系统级登录/注销事件,因此将其记录在此处。根控制台关闭也是如此,这是注销事件。

例:

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

我希望这对在此线程中绊倒的任何人有所帮助。:-)


或者简单地last -xlast -F -R -x runlevel。为了在Ubuntu下监视电池,grep hooks /var/log/pm-suspend.log显示挂起和恢复可能也很有用。不幸的是,pm-powersave.log不会存储连接交流电源的时间(除非您添加自己的钩子)。help.ubuntu.com/community/PowerManagement/ReducedPower可能值得一读。
塞德里克·奈特

关于UUoC,$ CPU时间<< $脑时间...
MikeP '16

1
每个提及“猫的无用用途”的人可能花在指出事实上的时间要比地球上所有计算机对猫的无用用途所花费的总CPU时间花费更多的时间(有时他们会不必要地肿他们本来不错的答案,这是副作用- -像这样)
ndemou '16

4

/ var / log / messages文件应包含此信息


我没有在该文件中看到与关闭有关的任何内容。:(我尝试使用我关闭计算机时的时间戳grepping该目录中的所有其他文件,但没有走运:grep -r "Jul 24 14:" /var/log/*
Michael 2010年

不存在于Linux Mint的队友17.文件
埃里克·王

2

如果您想了解计算机过去的运行时间,可以使用uptimed之类的方法。

它带有一个名为uprecords的程序,该程序可以向您显示计算机已打开多长时间。


1

这是列出当天所有消息的单行代码:

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

这是在CentOS和YMMV上测试的。

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


1

last reboot 在CentOS 6.7上为我工作。

要在输出中显示年份,因此如果您拥有超过一年的记录,这实际上是有意义的,请执行

last -F reboot

尽管我知道-F开关在某些系统(例如Solaris)上不起作用。不过,它显然是GNU的最后一部分。

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


0

如果没有日志,则可以尝试向关闭脚本添加一些“日期>> mylog”(在某些dists中,它称为rc.shutdown)。

或者,还有一种不需要特权的方法。跑:

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

并在下一个会话中添加mylog。

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.