|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
开发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[1];
}
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;
}
测试了局以下所示:
但不会命令而成为高手也是不可能的.这就好比学英语,什么语法都不懂,只捧着单词手册背单词是学不会英语的,但是没有单词词汇量英语水平也提不高的。 |
|