Logs
如何從日誌中找出導致系統關閉的原因?
例如,我在
/var/log/messages
:Mar 01 23:12:34 hostname shutdown: shutting down for system halt
有沒有辦法找出導致關機的原因?例如,它是從控制台執行的,還是有人按下電源按鈕等?
嘗試以下命令:
顯示上次重啟條目的列表:
last reboot | less
顯示上次關閉條目的列表:
last -x | less
或更準確地說:
last -x | grep shutdown | less
但是你不會知道是誰做的。如果你想知道是誰做的,你需要添加一些程式碼,這意味著你下次就知道了。
我在網上找到了這個資源。它可能對您有用:
TLDR
使用這兩個命令並繼續閱讀以獲取更多資訊。
last -x | head | tac grep -iv ': starting\|kernel: .*: Power Button\|watching system buttons\|Stopped Cleaning Up\|Started Crash recovery kernel' \ /var/log/messages /var/log/syslog /var/log/apcupsd* \ | grep -iw 'recover[a-z]*\|power[a-z]*\|shut[a-z ]*down\|rsyslogd\|ups'
1)關於last -x 命令的輸出
執行此命令*並將輸出與以下範例進行比較:
last -x | head | tac
正常關機範例
正常關機和開機看起來像這樣(請注意,您有一個關機事件,然後是一個系統啟動事件):
runlevel (to lvl 0) 2.6.32- Sat Mar 17 08:48 - 08:51 (00:02) shutdown system down ... <-- first the system shuts down reboot system boot ... <-- afterwards the system boots runlevel (to lvl 3)
在某些情況下,您可能會看到這一點(請注意,沒有關於關閉的行,但係統處於執行級別 0,即“停止狀態”):
runlevel (to lvl 0) ... <-- first the system shuts down (init level 0) reboot system boot ... <-- afterwards the system boots runlevel (to lvl 2) 2.6.24-... Fri Aug 10 15:58 - 15:32 (2+23:34)
意外關閉範例
斷電導致的意外關機如下所示(請注意,您有一個系統啟動事件,而之前沒有系統關機事件):
runlevel (to lvl 3) ... <-- the system was running since this momemnt reboot system boot ... <-- then we've a boot WITHOUT a prior shutdown runlevel (to lvl 3) 3.10.0-693.21.1. Sun Jun 17 15:40 - 09:51 (18:11)
2)關於 /var/log/ 中的日誌
過濾最有趣的日誌消息的 bash 命令如下:
grep -iv ': starting\|kernel: .*: Power Button\|watching system buttons\|Stopped Cleaning Up\|Started Crash recovery kernel' \ /var/log/messages /var/log/syslog /var/log/apcupsd* \ | grep -iw 'recover[a-z]*\|power[a-z]*\|shut[a-z ]*down\|rsyslogd\|ups'
當發生意外斷電或硬體故障時,文件系統將無法正確解除安裝,因此在下次啟動時,您可能會收到如下日誌:
EXT4-fs ... INFO: recovery required ... Starting XFS recovery filesystem ... systemd-fsck: ... recovering journal systemd-journald: File /var/log/journal/.../system.journal corrupted or uncleanly shut down, renaming and replacing.
當系統因使用者按下電源按鈕而關閉時,您會得到如下日誌:
systemd-logind: Power key pressed. systemd-logind: Powering Off... systemd-logind: System is powering down.
只有當系統有序關閉時,您才會得到如下日誌:
rsyslogd: ... exiting on signal 15
當系統因過熱而關閉時,您會收到如下日誌:
critical temperature reached...,shutting down
如果你有一個 UPS 並執行一個守護程序來監控電源和關機,你顯然應該檢查它的日誌(NUT 登錄 /var/log/messages 但 apcupsd 登錄 /var/log/apcupsd*)
筆記
*:這是
last
其手冊頁中的描述:last [...] prints information about connect times of users. Records are printed from most recent to least recent. [...] The special users reboot and shutdown log in when the system reboots or (surprise) shuts down.
我們
head
用來保留最近的 10 個事件,並且我們tac
用來顛倒順序,這樣我們就不會被從最近到最近的事件最後列印的事實混淆。