分析如何查詢Linux宕機的原因

2021-08-28 03:51:18 字數 2860 閱讀 2389

linux 核心雖然號稱「不死族」,幾乎不會崩潰或者宕機,但是特殊情況下,還是有一定機率會宕機的。因為 linux 廣泛用於生產環境,所以每一次宕機都會引起相當大的損失。它 uptime 達到上百天也許你習以為常,但是只要 down 十幾秒,就會立即急的滿頭大汗。真的很難以想象證交所死機會怎麼樣,也許全國股民會鬧翻天。所以我們需要一些小技巧來查詢宕機的原因,從而避免宕機或者核心崩潰。(話說 windows 天天藍屏也沒感覺呀 :-o 難道已經麻木了 :oops: )

請注意:以下方法可能不適用於 server,因為桌面環境和 server 還是有很大區別的。

x crash

事實上 linux 核心很少出錯,平常我們所遇到的「宕機」都是 x 無響應造成的錯覺。那 x 沒響應了應該怎麼處理呢?

通常套路是 ctrl + alt +f7 (f8) 切換到某個 tty,然後用 root 登陸,執行 top 檢視吃資源最多的程式,然後使用 pkill/kill/killall 等命令殺死該程式。或使用組合鍵 ctrl +alt + backspace重啟 x (黑日白月注:這個快捷鍵組合在最新的ubuntu 和fedora 中關閉)。

如果偶遇切換 tty 失敗或者沒響應,可以試著使用ssh 登陸此電腦,然後再殺死程式。也許只是 x不響應,而核心和 ssh daemon 仍然工作,故此可以實施此法。

arch 配置 ssh daemon

萬一 x 不給力,各種方法試了無效,又沒有辦法通過 ssh 登陸到此 pc,那怎麼辦呢?別著急,我們還有萬能的 「reisub」 **。不過在啟用前先要啟用核心 sysrq 功能 (via) .系統啟動時執行:echo 「1」 > /proc/sys/kernel/sysrq 或者修改/etc/sysctl.conf 檔案,設定 kernel.sysrq = 1.系統異常時依次按下 alt+sysrq+ ,然後系統會自動重啟。(有關 sysrq 請看:linux 宕機了怎麼辦?)

不建議長按 power 按鍵強制關機,有可能損壞硬體或者丟失資料,甚至導致磁碟壞道!

x 崩潰而核心完好

這個比較常見,但是也是相當難解決的。因為 linux 上的應用軟體大部分都是開源的,所以可能沒有超高的穩定性。也許由於庫的缺少或者版本錯誤,或者**的 bug,都有可能導致程式出現異常。

一般遇到這種問題,建議檢查配置檔案是否正確,對配置檔案的錯誤修改可能導致程式的執行失敗。如果您確信配置檔案沒有錯誤但是程式仍然異常,可以嘗試把配置檔案刪除(注意備份!),然後再次開啟軟體嘗試。通常程式的配置檔案在:

或者有可能是庫的錯誤,您可以在終端輸入程式名或者程式路徑執行程式,根據終端的提示資訊除錯。由於導致程式崩潰的可能性多種多樣,在此不能一一枚舉,所以建議您根據出錯資訊去google 搜尋並找到解決方案。

kernel panic

x 的問題還好辦,可是如果 rpwt 碰到 kernel panic,那可真是上天無路入地無門,撞牆的心都有 :evil: .

一般引起 kernel panic 的原因很多,但是都比較罕見。例如硬體問題 (irqconfilct, bad block, hightemperature),軟體問題(錯誤的 mod,核心的 bug),或者檔案系統不支援(沒有內建 ext4 支援卻掛載ext4 的 root 分割槽),硬體的變動(如新增/更換記憶體,不支援架構的cpu),錯誤的驅動。

kernel panic 的表現形式也是多種多樣:啟動失敗,不正常的長時間 io 操作,鍵盤燈的不正常頻閃,wireless 等指示燈錯誤閃爍,無響應(請區別 xorg crash 情況),徹底鎖死,黑屏,reisub **不靈 等等。

[pagenext]

一般情況下,秉承kiss 原則的 linux 核心,會盡力解決一切錯誤並正常執行,如果遇到極端情況發生 panic,它會盡可能把所有相關資訊顯示在螢幕上——至於多少,別奢求,kernel 已經盡力了。

因為 kernel panic 是一種很極端的情況,有的人可能自從使用 linux 就沒有遇到過。所以我們要收集所有相關的資訊來解決問題。發生錯誤後的各種輸出是最直接的最有效的( dump 在 tty.請關閉 x)。因為 kernel 已經崩潰,不一定能找到完整的 log.您可以根據以下線索嘗試:

1、/var/log/messages —— rp 爆發的時候,也許會記錄下很多相關資訊。按照時間戳查詢。

2、回溯操作 —— 回憶 kernelpanic 之前所做的所有事,並回滾。(如安裝了某個程式,可以在 /var/log/pacman.log 找到安裝日誌)

3、dump 資訊 —— 螢幕輸出資訊是系統最後的「遺言」,請使用數位相機或者筆紙記錄。(ttyonly)

● /var/log/boot

● /var/log/messages

如果可以,您應該記錄下所有螢幕輸出資訊,並檢視 /var/log/messages .

可能遇到的問題,和解決方法:

1、irq conflict (還好我沒碰到),可以嘗試從 bios 修改硬體irq,或者公升級 bios,都不生效就換電腦或者禁用衝突硬體;

2、bad balock,嘗試修復壞道或者遮蔽壞道分割槽,建議更換磁碟;

3、io error,同上,也有可能是沒有內建檔案系統支援的原因,重新編譯核心或者找最新版的核心安裝;

4、mod,刪除可能導致錯誤的核心模組(如 vboxdrv),涉及到的命令有:

1)lsmod: 列出已載入的模組2)modprobe: 載入模組( 黑日白月注:在這裡和其他命令對應的為 insmod + depmod 比較好,modprobe 更類似於 ***mod 系列命令的公升級整合版本。)

5、driver,a卡或者n卡驅動,也容易造成問題;

6、硬體本身的問題導致,建議檢測硬體可用性和相容性(例如 memtest+);

7、核心 bug,如果您有能力,建議使用kdb (kernel debugger) 排錯,或者重新編譯核心;

8、不負責任的告訴您,最好的方法是換 windows :mrgreen:

linux 定時查詢tomcat 宕機自動啟動

bin bash while true do 執行命令,重啟tomcat tomcat home usr local tomcat 停止tomcat變數 shutdown tomcat home bin shutdown.sh 啟動tomcat變數 starttomcat tomcat home b...

如何分析慢查詢

首先需要明確查詢效能低下的基礎原因 訪問資料過多。還有一種可能性 篩選大量資料,但是並不常見。通常情況下效能低下的查詢都可以通過減少訪問資料量的方式進行優化。兩種分析方法 應用程式是否在檢索大量超過需要的資料。確認mysql伺服器是否在分析大量超過需要的資料行。描述 乙個查詢請求了超過實際需要的資料...

原 更深入的分析

整數值流 正負 在我們分析ford fulkerson演算法的過程中,產生了許多自然的結果,現在展示另乙個重要的結果,通過演算法,我們總可以獲得乙個整數值的流,接著我們 以最大流結束.因此有 如果流網路中所有的負載能力都是整數,因此存在乙個最大的流,並且每個f e 都是整數.注意到,以上沒有宣告每個...