透明 发表于 2015-1-16 12:43:49

linux教程之linux体系猎取硬盘利用信息

开发linux发行版的人都是通读过linux内核代码,对linux原理极其精通的人。
1、df命令
  Linux下能够用df命令猎取硬盘的利用情形,经由过程man能够猎取df命令的具体情形。df命令常常用的参数为:
  a:显现全体的档案体系和各支解区的磁盘利用情况
  i:显现i-nodes的利用量
  k:巨细用k来暗示(默许值)
  t:显现某一个档案体系的一切支解区磁盘利用量
  x:显现不是某一个档案体系的一切支解区磁盘利用量
  T:显现每一个支解区所属的档案体系称号
  经常使用命令:df-hi
举例截图以下所示



2、du命令
  du命令用来查询档案或目次的磁盘利用空间,经由过程man猎取du命令的具体先容。经常使用的命令参数以下:
  a:显现全体目次和其次目次下的每一个档案所占的磁盘空间
  b:巨细用bytes来暗示(默许值为kbytes)
  c:最初再加上总计(默许值)
  s:只显现各档案巨细的总合(summarize)
  x:只盘算同属统一个档案体系的档案
  L:盘算一切的档案巨细
  经常使用命令:du-ah
举例操纵以下图所示:




3、statfs布局及函数
  之前在看APUE时分,在第四章文件和目次中,讲到了猎取文件信息的stat布局,经由过程stat布局能够获文件的巨细,创立工夫,修正工夫,用户id,组id等等。man上stat布局及操纵函数以下图所示:




明天次要总结进修一下猎取硬盘信息的statfs布局,经由过程statfs布局的信息盘算前路径地点的磁盘利用情形。man上关于statfs先容以下所示:



statfs布局的中辞意思以下所示:
.代码以下:

structstatfs
{
 longf_type;/*文件体系范例*/
 longf_bsize;/*经由优化的传输块巨细*/
 longf_blocks;/*文件体系数据块总数*/
  longf_bfree;/*可用块数*/
  longf_bavail;/*非超等用户可猎取的块数*/
  longf_files;/*文件结点总数*/
  longf_ffree;/*可用文件结点数*/
  fsid_tf_fsid;/*文件体系标识*/
  longf_namelen;/*文件名的最年夜长度*/
};





statfs布局中可用空间块数有两种f_bfree和f_bavail,前者是硬盘一切残剩空间,后者为非root用户残剩空间,ext3文件体系给root用户分有5%的独享空间,以是这里是分歧的中央。这里要夸大的是每块的巨细通常为4K。因而,要完成与df了局分歧的就得在取得块数上乘以4,如许已用、可用、总块数就能够完成。
测试程序以下所示:

.代码以下:

#include<stdio.h>
#include<sys/statfs.h>
#include<sys/vfs.h>
#include<errno.h>
intmain(intargc,char*argv[])
{
structstatfsdisk_info;
char*path="/home/";
intret=0;
if(argc==2)
{
  path=argv;
}
if(ret==statfs(path,&disk_info)==-1)
{
  fprintf(stderr,"Failedtogetfilediskinfomation,
  errno:%u,reason:%s
",errno,strerror(errno));
  return-1;
}
longlongtotal_size=disk_info.f_blocks*disk_info.f_bsize;
longlongavailable_size=disk_info.f_bavail*disk_info.f_bsize;
longlongfree_size=disk_info.f_bfree*disk_info.f_bsize;
//输入每一个块的长度,linux下内存块为4KB
printf("blocksize:%ldbytes
",disk_info.f_bsize);
//输入块个数
printf("totaldatablocks:%ld
",disk_info.f_blocks);
//输入path地点磁盘的巨细
printf("totalfiledisksize:%dMB
",total_size>>20);
//输入非root用户能够用的磁盘空间巨细
printf("avaiablesize:%dMB
",available_size>>20);
//输入硬盘的一切残剩空间
printf("freesize:%dMB
",free_size>>20);
//输入磁盘上文件节点个数
printf("totalfilenodes:%ld
",disk_info.f_files);
//输入可用文件节点个数
printf("freefilenodes:%ld
",disk_info.f_ffree);
//输入文件名最年夜长度
printf("maxinumlengthoffilename:%ld
",disk_info.f_namelen);
return0;
}


测试了局以下所示:



但不会命令而成为高手也是不可能的.这就好比学英语,什么语法都不懂,只捧着单词手册背单词是学不会英语的,但是没有单词词汇量英语水平也提不高的。

爱飞 发表于 2015-1-18 05:30:12

任何人都可以根据自己的喜好来定制适合自己的操作系统,Linux?是抢占式多任务多用户操作系统.

简单生活 发表于 2015-1-21 15:28:13

要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。

莫相离 发表于 2015-1-30 20:27:46

linux鸟哥的私房菜,第三版,基础篇,网上有pdf下的,看它的目录和每章的介绍就行了,这个绝对原创!

灵魂腐蚀 发表于 2015-2-6 15:53:32

永中office 2004增强版安装只需要默认安装即可使用并操作大多与win系统雷同,打印机的配置和管理,记录光盘等。

海妖 发表于 2015-2-16 23:31:12

直到学习Linux这门课以后,我才知道,原来我错了。?

飘飘悠悠 发表于 2015-3-5 13:58:05

通过一条缓慢的调制解调器线路,它也能操纵几千公里以外的远程系统。

再见西城 发表于 2015-3-12 08:06:55

随着Linux应用的扩展,出现了不少Linux社区。有一些非常优秀的社区往往是Linux高手的舞台,如果在探讨高级技巧的论坛张贴非常初级的问题经常会没有结果。

透明 发表于 2015-3-19 19:14:45

要增加自己Linux的技能,只有通过实践来实现了。所以,赶快找一部计算机,赶快安装一个Linux发行版本,然后进入精彩的Linux世界,相信对于你自己的Linux能力必然大有斩获。
页: [1]
查看完整版本: linux教程之linux体系猎取硬盘利用信息