2012-01-17 43 views
5

我需要編寫一個腳本來每分鐘檢查一次磁盤,並報告它是否由於任何原因而失敗。錯誤可能是絕對磁盤故障和壞扇區等。磁盤故障檢測Perl腳本

首先,我想知道是否有任何腳本,它應該是一個標準的程序(因爲我真的不想重新發明輪子)。

其次,我想知道是否要在/ var/log/messages中查找錯誤,是否有任何我可以使用的磁盤標準錯誤字符串列表?

我在網上尋找很多,有很多的信息,同時沒有關於這方面的信息。

任何幫助將不勝感激。

感謝,

+3

驅動器是否支持SMART?如果是這樣,你有權訪問'smartctl'工具嗎?如果是這樣,請記住,您可能已經安裝了smartmontools,其中*包含一個守護進程以完成您正在嘗試執行的操作*。 – Charles

+0

不幸的不是! – Amir

回答

4

你可以簡單地解析的dmesg輸出通常報告有關驅動器錯誤相當詳細的信息,以及這就是我之前已經收集統計上沒有驅動器。

雖然直接使用Parse::Syslog或更低級別的內核報告,但您可能會獲得更好的更多文檔信息。

+0

dmesg給我啓動信息。我的服務器不經常啓動。 – Amir

+0

dmesg也會報告內核驅動程序錯誤,而不僅僅是內核啓動順序。我意識到dmesg的輸出並不像syslog輸出那樣標準化,所以如果你不知道這些錯誤是什麼樣的話,也許你會想要。當我收到驅動器錯誤並想知道細節時,我使用了dmesg。 –

+0

您是否知道syslog中的任何簽名(或簽名列表),使用它可以說某些磁盤錯誤/故障正在進行? – Amir

2

Logwatch執行/ var/log/messages部分的考驗(以及您選擇添加的任何其他日誌文件)。你可以選擇使用它,或者使用它的代碼來推出你自己的溶劑(它全部用Perl編寫)。

如果您的硬盤驅動器支持SMART,我建議您使用smartctl輸出進行診斷,因爲它包含大量可以隨時監控以檢測故障的良好信息。

+0

+1用smartctl發現好!太糟糕BSD缺乏。 –