如果系統突然關閉。那麼能知道什麼時候關閉的嗎?突然意味著由於電源故障或由於 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: -
從您選擇的文件中選擇最新的一個,您就可以很好地估計系統何時停止。
只是一些想法,希望能有所幫助。