Linux下如何获取硬盘健康状况信息

奋---斗 2013-11-08 03:56:30
在Linux下,如何通过c语言获取硬盘是否有坏道、温度等类似SMART功能的信息。分很少,还望大神给点帮助
...全文
359 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
奋---斗 2013-11-11
  • 打赏
  • 举报
回复
引用 6 楼 cheidtf 的回复:
从smartctl中扣出来。大家都是这样做的啦!
唉、我也想扣,可是对于一个只会C的菜鸟来说,这难道是有点大,更何况他还是cpp文件。
cheidtf 2013-11-11
  • 打赏
  • 举报
回复
从smartctl中扣出来。大家都是这样做的啦!
奋---斗 2013-11-11
  • 打赏
  • 举报
回复
引用 4 楼 lishanchao 的回复:
smartctl的源碼雖是cpp的,但幾乎沒有用C++的語法,你可以當成純C來看。 另外建議你下在一份硬盤廠商的datasheet(記得東芝的比較詳細,或是ATA command set)對着代碼看,看smartctl是怎麼使用ata command來讀硬盤信息的。
谢谢!不过我比较菜,那源码看着实在是有点难度啊!要是有简单一点的参考一下就好了,最主要是检测是否有坏道。
沭水河畔 2013-11-11
  • 打赏
  • 举报
回复
引用 3 楼 tdy353021560 的回复:
[quote=引用 1 楼 quanliyadan 的回复:] linux是自带磁盘检测服务的,/etc/init.d/smartd start
这些命令我都知道,我现在要的是自己编程来实现这些功能。smartd和smartctl命令的源码我都看过,可惜是C++写的,我也看不明白。 我用的是虚拟机,虚拟机硬盘还不支持SMART功能,这让我很郁闷啊![/quote] smartctl的源碼雖是cpp的,但幾乎沒有用C++的語法,你可以當成純C來看。 另外建議你下在一份硬盤廠商的datasheet(記得東芝的比較詳細,或是ATA command set)對着代碼看,看smartctl是怎麼使用ata command來讀硬盤信息的。
奋---斗 2013-11-11
  • 打赏
  • 举报
回复
引用 1 楼 quanliyadan 的回复:
linux是自带磁盘检测服务的,/etc/init.d/smartd start
这些命令我都知道,我现在要的是自己编程来实现这些功能。smartd和smartctl命令的源码我都看过,可惜是C++写的,我也看不明白。 我用的是虚拟机,虚拟机硬盘还不支持SMART功能,这让我很郁闷啊!
Liteboy 2013-11-10
  • 打赏
  • 举报
回复
smartctl -A /dev/hdb smartctl version 5.33 [i386-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 10 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x000f 053 051 006 Pre-fail Always - 11338710 3 Spin_Up_Time 0x0003 0Array8 0Array7 000 Pre-fail Always - 0 4 Start_Stop_Count 0x0032 100 100 020 Old_age Always - 17 5 Reallocated_Sector_Ct 0x0033 100 100 036 Pre-fail Always - 0 7 Seek_Error_Rate 0x000f 087 060 030 Pre-fail Always - 61005Array516 Array Power_On_Hours 0x0032 087 087 000 Old_age Always - 11Array74 10 Spin_Retry_Count 0x0013 100 100 0Array7 Pre-fail Always - 0 12 Power_Cycle_Count 0x0032 100 100 020 Old_age Always - 110 1Array4 Temperature_Celsius 0x0022 045 052 000 Old_age Always - 45 1Array5 Hardware_ECC_Recovered 0x001a 053 051 000 Old_age Always - 11338710 1Array7 Current_Pending_Sector 0x0012 100 100 000 Old_age Always - 0 1Array8 Offline_Uncorrectable 0x0010 100 100 000 Old_age Offline - 0 1ArrayArray UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0000 100 253 000 Old_age Offline - 0 202 TA_Increase_Count 0x0032 100 253 000 Old_age Always - 0
Liteboy 2013-11-10
  • 打赏
  • 举报
回复
linux是自带磁盘检测服务的,/etc/init.d/smartd start

23,115

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧