⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 get_df.c

📁 UNIX环境下资源监控程序(包含对CPUMEMDISKIOPS等资源的监控)
💻 C
字号:
#include "public.h"
//#include "monitor.h"
//#include "msgqueue.h"
#include "sysmoni.h"
#include "standdb.h"
/************************************************************/
/*	文件名	:	get_df.c									*/
/*	描述	:	使用系统命令取得磁盘信息,输入到一个文本里,*/
/*				按行分析文件信息,如果信息包含告警内容则告警*/
/*				如果告警不成功将其写入异常处理文件			*/
/*	编写人	:	genius.xuyong								*/
/*	创建日期:	16 Aug. 2002								*/
/*	修改	:												*/
/************************************************************/

extern	long	gl_qmsgsend;	/*引用全局变量*/
/************************************************************/
/*	函数	:	get_df(char * acz_device)					*/
/*	描述	:	使用系统命令取得磁盘信息,输入到一个文本里,*/
/*				按行分析文件信息,如果信息包含告警内容则告警*/
/*				如果告警不成功将其写入异常处理文件			*/
/*	输入参数:	acz_device	(设备名)						*/
/*	输出参数:	无											*/
/*	编写人	:	genius.xuyong								*/
/*	创建日期:	16 Aug. 2002								*/
/*	修改	:												*/
/************************************************************/

int get_df( char *acz_device,
               char *acz_machine_code,
               char *acz_module_code,
               char *acz_object_code,
               char *acz_create_time)
{
	FILE*		lh_file;		
	char		lcz_buf[LEN];	
	int			i; 
	system("df -k >out/disk.dat");	/*系统命令:df -k  */
								/* 取得磁盘空间信息和i节点信息*/

	lh_file = fopen("./out/disk.dat","r");
	if ( NULL == lh_file )
	{
		printf("open file disk.dat error!\n");
		fclose( lh_file );
		return( -1 );
	}
	
	/**清空内存缓冲值**/
	memset(&ls_disk,0x00,sizeof(ls_disk));
	memset(lcz_buf,0x00,LEN);	
	i=0;

	/**从文件中按行读出一行放到lcz_buf中,如到文件尾退出**/
	while (NULL != fgets(lcz_buf,sizeof(lcz_buf),lh_file))
	{
		
		/*	如果该行中不包含"/yldc",继续读下一行,否则
			分解字符串到DISKINFO结构的数组中
		*/
		/*  if (NULL==strstr(lcz_buf,"/yldc"))
		  {
			continue;
		  }
		 */
		 /* Modified  by  Guoql in 8.5.2005  */
		  if (NULL==strstr(lcz_buf,"/"))
		  {
			continue;
		  }
		else
		{
			decompose_disk(lcz_buf,acz_machine_code,acz_module_code,acz_object_code,acz_create_time);
			i++;	/*计数值,得到有效的ls_disk个数*/
		}
	}

	fclose( lh_file );

	/* deal_disk(&ls_disk,i,acz_device,acz_unusualfile,acz_lckfile,acz_procname);	/*处理磁盘信息*/

	return ( 0 );
}

/************************************************************/
/*	函数	:	decompose_disk()							*/
/*	描述	:	将字符串的内容输入到DISKINFO的结构数组中	*/
/*	输入参数:	acz_buf	,as_disk地址						*/
/*	输出参数:	as_disk内容									*/
/*	编写人	:	genius.xuyong								*/
/*	创建日期:	16 Aug. 2002								*/
/*	修改	:												*/
/************************************************************/

int decompose_disk(char *acz_buf,char* acz_machine_code,char* acz_module_code,char* acz_object_code,char * create_time)
{
	int		i,j,k;
	char	lc_char;
	char	lcz_tmp[6][19];/*df -k产生的数据项为6项*/
	char    complete_time[20]="";
	long	ll_pos;
	char    lc_state[10];    /*磁盘属性状态*/
	char    lc_code[10][10];  /*磁盘属性编码*/
	char    gcz_df[10][20]={"filesystem","kbytes","used","avail","capacity","mounted on"}; /* 磁盘模块属性数组*/
		
        /*设置lcz_tmp位置为lcza_tmp[k][j]*/	
	memset(lcz_tmp,0x00,sizeof(lcza_tmp));
	j=0;
	k=0;	
	
	/*将字符串分解到lcz_tmp中*/
	for (i=0;;i++)/*this cycle is read a char from the buffer char*/
	{
		lc_char=acz_buf[i];/*put the buffer char to lc_char*/
		if (lc_char=='\n')/*if the char is the end of the buffer*/
		{
			if (j>0)	/*if counter j >0,mean lcz_tmp not null*/
			{
				lcz_tmp[k][j]='\0';
				if (lc_state[k]=='1')
				{
					get_format_time(complete_time,sizeof(complete_time));
					Write_MonitorInfo(lc_code[k], acz_object_code,lcz_tmp[k],create_time,complete_time);
				}
			}	
			break;	/* the exit of the cycle*/
			
			
			
			
		}

		if (lc_char!=0x20)	/*if the char is not null*/
		{
			lcz_tmp[k][j]=lc_char;	
			j++;	/*the value of lc_char append to lcz_tmp */			
		}
		else
		{
			if (j>0)
			{
				lcz_tmp[k][j]='\0';
				
				memset(lc_state,0x00,strlen(lc_state));
				memset(lc_code,0x00,10);
				
				if (k==0)
				{  	memset(lc_state,0x00,strlen(lc_state));
					memset(lc_code,0x00,10);
					Read_Property(gcz_cpu,acz_module_code,lc_state,lc_code);
					if  ( Read_Object(lcz_tmp[k], acz_module_code,acz_object_code)==0)
				         break;
				}
				
				if (lc_state[k]=='1')
				{       
					get_format_time(complete_time,sizeof(complete_time));
					Write_MonitorInfo(lc_code[k], acz_object_code,lcz_tmp[k],create_time,complete_time);
				}	
				k++;
			}	
			memset(lcz_tmp,0x00,10);/*set lcz_tmp is null*/
			j=0;	/*set the first position is lcz_tmp[0]*/
		}
	}

	
	
	return ( 0 );

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -