有时候需要用程序读出硬盘的大小等信息,以下以php为例,演示整体的思路,其它语言也类似(当然有专用函数的语言除外)。
整体思路如下:
(1)选用sysctl kern.disks取出系统中的磁盘,这个结果是比较准确的,因为md等虚拟的磁盘不会出现在这个列表中。
(2)对每个磁盘执行diskinfo 命令,这个命令显示磁盘的名称,大小,簇大小,柱面,磁道等信息,我们只用第三列的磁盘大小,这个值是以字节为单位,比较大,所以我们再转换为G为单位。
程序如下:
//可以用sysctl输出磁盘列表,类似:kern.disks: cd0 ada0
$cmdstr = '/sbin/sysctl kern.disks';
$result = exec($cmdstr);
//两级preg_splite,只为了保险起见,其实只用后一级就可以,因为其他地方没有空格。
$result = preg_split("/:/",trim($result));
$result = preg_split("/\s+/",trim($result[1]));
foreach ( $result as $disk ){
//# diskinfo ada0的结果,其中第三列就是磁盘大小,单位是字节
//ada0 512 8589934592 16777216 0 0 16644 16 63
$cmdstr = '/usr/sbin/diskinfo ' . $disk;
$result2 = exec($cmdstr);
$result2 = preg_split('/\s+/',$result2);
$disksize = round(intval($result2[2]/1024/1024/1024));
echo “磁盘” . $result2[0] . ‘大小为:’ . $disksize . ‘G字节’;
}
该贴被wulcan编辑于2014-7-24 11:19:54该贴由hui.chen转至本版2014-11-5 17:04:56