如果系统突然关闭。那么能知道什么时候关闭的吗?突然意味着由于电源故障或由于 sysrq 魔术键。如果我每隔几秒钟记录一些内容,那么我就会得到答案,但如果没有,那么有什么办法吗?
我正在使用定制的基于控制台的系统。内核是5.3
答案1
您可以通过多种方式判断系统何时重新启动...“正常运行时间”、“上次重新启动”等。判断系统何时关闭有点麻烦。假设您通过 rsyslogd 运行定期系统日志记录,您可以通过将以下内容添加到 /etc/rsyslogd.conf 来使用模块 immark 作为“每隔几秒记录一些内容”例程:
$ModLoad immark
$MarkMessagePeriod <your time granularity here, in seconds>
$ActionWriteAllMarkMessages on
您也可以不打扰,而可以查看消息文件中的两件事之一。如果文件在系统启动时轮换,您可以使用“ls -l”简单地查看该文件先前版本的日期,以便您很好地猜测系统何时停止写入该文件。如果您不轮转系统日志,则可以通过查看指示重新启动的行之前的行的时间戳来获得相同的准确性。我们的重启看起来有点像这样:
2020-03-29T03:20:01.529437-04:00 [hostname] rsyslogd: [origin software="rsyslogd" swVersion="8.24.0-41.el7_7.2" x-pid="1615" x-info="h
ttp://www.rsyslog.com"] rsyslogd was HUPed
如果关闭不是意外的,那么它会变得更容易,因为系统记录器会在它消失之前向日志写入一条消息。
如果您关闭了系统日志记录,那么这一切当然就变得毫无意义了。如果您仍在将内容记录到系统日志中,则可以获取其中某些文件的统计信息,并通过查看修改时间来大致了解系统何时消失:
root# stat /var/log/messages-01.gz
File: '/var/log/messages-01.gz'
Size: 185529 Blocks: 368 IO Block: 4096 regular file
Device: fd06h/64774d Inode: 12689803 Links: 1
Access: (0640/-rw-r-----) Uid: ( 0/ root) Gid: (658178/ mssgro)
Access: 2020-04-08 10:27:47.691311523 -0400
Modify: 2020-04-05 03:01:34.000000000 -0400 <=== that's what you're after ==
Change: 2020-04-07 18:16:40.252668164 -0400
Birth: -
从您选择的文件中选择最新的一个,您就可以很好地估计系统何时停止。
只是一些想法,希望能有所帮助。