操作系统实验11Linuxproc文件资料资料资料系统.docx
- 文档编号:24630797
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:11
- 大小:233.31KB
操作系统实验11Linuxproc文件资料资料资料系统.docx
《操作系统实验11Linuxproc文件资料资料资料系统.docx》由会员分享,可在线阅读,更多相关《操作系统实验11Linuxproc文件资料资料资料系统.docx(11页珍藏版)》请在冰豆网上搜索。
操作系统实验11Linuxproc文件资料资料资料系统
《操作系统》实验报告
实验序号:
实验十一实验项目名称:
Linuxproc文件系统
学 号
1207022103
姓 名
陈华荣
专业、班
1班
实验地点
实1-311
指导教师
李桂森
实验时间
2014-12-17
一、实验目的
通过本实验的学习,使学生掌握Linux系统Web服务器的配置方法,搭建简单的动态数据网站。
二、实验内容
实验内容:
实践Linux系统Web服务器的配置操作,并搭建简单的动态网站。
三、实验内容与步骤
1,查看/proc目录,了解此目录下各个目录以及文件的含义;解释以下文件的含义:
proc文件系统可以被用于收集有用的关于系统和运行中的内核的信息。
下面是一些重要的文件:
*/proc/cpuinfo-CPU的信息(型号,家族,缓存大小等)
*/proc/meminfo-物理内存、交换空间等的信息
*/proc/mounts-已加载的文件系统的列表
*/proc/devices-可用设备的列表
*/proc/filesystems-被支持的文件系统
*/proc/modules-已加载的模块
*/proc/version-内核版本
*/proc/cmdline-系统启动时输入的内核命令行参数
*/proc/XXX–XXX是指以数字编号的目录,有不少这样的目录,每一个目录表示一个进程(即线程组)
*/proc/sys–可以修改的系统信息
*/proc/swaps-要获知swap空间的使用情况
*/proc/uptime-获取系统的正常运行时间
*/proc/fs/nfsd/exports-列出由NFS共享的文件系统
*/proc/kmsg–该文件被作为内核日志信息源,它可以被作为一个系统信息调用的接口使用。
*/proc/kcore–该文件提供了以内核文件格式形式访问系统物理内存,并且可以被gdb用于检查任意内核数据结构的当前状态。
如果装了源码,那么可以通过查看/usr/src/linux/Documentation/filesystems/proc.txt文件来获取更多的信息。
/proc/kcore文件是系统物理内存的映像
2,从proc文件系统获取信息
通过读取proc文件系统,获取系统各种信息,包括主机名、系统启动时间、版本号、所有进程信息等
主机名
系统启动时间:
/proc/uptime
版本号:
/proc/version
3,从proc中获取相关信息,分别编程计算并显示cpu的使用率、主存的使用率和网络利用率。
注:
这些数据分别要从/proc/stat、/proc/net/dev、/proc/meminfo三个文件中提取,要求实时监测(周期性显示)
选做:
利用图形界面编程,实现类似Windows资源管理器的效果。
#include
#include
#include
#include
/*声明结构体*/
structcpustatus
{
longtotal;
floatuser;
floatnice;
floatsystem;
floatidle;
};
structnetstatus
{
longtotal;
floatbytes;
floatpackets;
floaterrs;
floatdrop;
};
structmemstatus
{
unsignedintMemTotal;
floatMemFree;
};
/*计算CPU利用率*/
voidget_cpu_status(structcpustatus*cpu_stat)
{
unsignedinttotal;
floatuser;
floatnice;
floatsystem;
floatidle;
charcpu[21];
chartext[201];
FILE*fp;
fp=fopen("/proc/stat","r");
while(fgets(text,200,fp))
if(strstr(text,"cpu"))
sscanf(text,"%s%f%f%f%f",cpu,&user,&nice,&system,&idle);
fclose(fp);
total=(user+nice+system+idle);
user=((user+system)/total)*100;
cpu_stat->total=total;
cpu_stat->user=user;
cpu_stat->nice=nice;
cpu_stat->system=system;
cpu_stat->idle=idle;
return;
}
/*计算net利用率*/
voidget_net_status(structnetstatus*net_dev)
{
unsignedinttotal;
floatbytes;
floatpackets;
floaterrs;
floatdrop;
charnet[21];
chartext[201];
FILE*fp;
fp=fopen("/proc/net/dev","r");
while(fgets(text,200,fp))
if(strstr(text,"eth0"))
sscanf(text,"%s%f%f%f%f",net,&bytes,&packets,&errs,&drop);
fclose(fp);
total=(bytes+packets+errs+drop);
bytes=(bytes/total)*100;
net_dev->total=total;
net_dev->bytes=bytes;
net_dev->packets=packets;
net_dev->errs=errs;
net_dev->drop=drop;
return;
}
/*计算mem利用率*/
voidget_mem_infous(structmemstatus*mem_info)
{
floatMemTotal;
floatMemFree;
charmem[20];
chartext1[500];
chartext2[500];
chartext3[500];
FILE*fp;
fp=fopen("/proc/meminfo","r");
while(fgets(text1,500,fp))
while(fgets(text2,500,fp))
while(fgets(text3,500,fp))
if(strstr(text1,"MemTotal"))
sscanf(text1,"%s%f",mem,&MemTotal);
if(strstr(text2,"MemFree"))
sscanf(text2,"%s%f",mem,&MemFree);
fclose(fp);
MemFree=((MemTotal-MemFree)/MemTotal)*100;
mem_info->MemTotal=MemTotal;
mem_info->MemFree=MemFree;
}
/*主函数*/
intmain(intac,char*av[])
{
structcpustatuscpu_stat;
structnetstatusnet_dev;
structmemstatusmem_info;
while
(1)
{
get_cpu_status(&cpu_stat);
get_mem_infous(&mem_info);
get_net_status(&net_dev);
printf("CPUUse\tNetUse\tMemoryUse\n");
printf("%4.2f\t%4.2f\t%4.2f\t\n",cpu_stat.user,net_dev.bytes,mem_info.MemFree);
sleep
(2);
}
return0;
}
四、实验心得体会
由于linux下c的编写困难。
建议现在外面window下写好c程序,然后再挂载到linux下编译运行。
不容易出错。
五、教师评语
签名:
日期:
成绩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操作系统 实验 11 Linuxproc 文件 资料 系统