summaryrefslogtreecommitdiffstats
path: root/src/libs/zbxsysinfo
diff options
context:
space:
mode:
authorosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-10-12 08:52:14 +0000
committerosmiy <osmiy@97f52cf1-0a1b-0410-bd0e-c28be96e8082>2005-10-12 08:52:14 +0000
commitbe486186a47bada0536ed3366416f117f7d7a929 (patch)
treee693d69ab5df4b65c95a491502f04248afe1f77a /src/libs/zbxsysinfo
parentb84948ab39ad2ec2ac025619a2e8ec9250e89335 (diff)
downloadzabbix-be486186a47bada0536ed3366416f117f7d7a929.tar.gz
zabbix-be486186a47bada0536ed3366416f117f7d7a929.tar.xz
zabbix-be486186a47bada0536ed3366416f117f7d7a929.zip
- added support of proc.mem[process,user,mode] (Eugene)
git-svn-id: svn://svn.zabbix.com/trunk@2175 97f52cf1-0a1b-0410-bd0e-c28be96e8082
Diffstat (limited to 'src/libs/zbxsysinfo')
-rw-r--r--src/libs/zbxsysinfo/common/common.c66
-rw-r--r--src/libs/zbxsysinfo/linux/Makefile.am2
-rw-r--r--src/libs/zbxsysinfo/linux/linux.c2
3 files changed, 41 insertions, 29 deletions
diff --git a/src/libs/zbxsysinfo/common/common.c b/src/libs/zbxsysinfo/common/common.c
index b0b601c5..667ab69f 100644
--- a/src/libs/zbxsysinfo/common/common.c
+++ b/src/libs/zbxsysinfo/common/common.c
@@ -694,7 +694,14 @@ int PROC_NUM(const char *cmd, const char *param,double *value)
}
else
{
- if(strcmp(procname, psinfo.pr_fname)==0)
+ if(procname[0] != 0)
+ {
+ if(strcmp(procname, psinfo.pr_fname)==0)
+ {
+ proccount++;
+ }
+ }
+ else
{
proccount++;
}
@@ -734,7 +741,7 @@ int PROC_NUM(const char *cmd, const char *param,double *value)
int proc_ok = 0;
int usr_ok = 0;
- struct passwd *usrinfo;
+ struct passwd *usrinfo = NULL;
int proc_uid = 0;
FILE *f;
@@ -754,14 +761,17 @@ int PROC_NUM(const char *cmd, const char *param,double *value)
if(get_param(param, 2, usrname, MAX_STRING_LEN) != 0)
{
usrname[0] = 0;
- usrinfo = NULL;
}
else
{
- usrinfo = getpwnam(usrname);
- if(usrinfo == NULL)
+ if(usrname[0] != 0)
{
- return SYSINFO_RET_FAIL;
+ usrinfo = getpwnam(usrname);
+ if(usrinfo == NULL)
+ {
+ /* incorrect user name */
+ return SYSINFO_RET_FAIL;
+ }
}
}
@@ -794,36 +804,36 @@ int PROC_NUM(const char *cmd, const char *param,double *value)
{
continue;
}
- fgets(line,MAX_STRING_LEN,f);
-
- if(sscanf(line,"%s\t%s\n",name1,name2)==2)
- {
- if(strcmp(name1,"Name:") == 0)
- {
- if(strcmp(procname,name2)==0)
- {
- proc_ok = 1;
- }
- }
- }
- else
- {
- fclose(f);
- continue;
- }
+
+ if(procname[0] != 0)
+ {
+ fgets(line,MAX_STRING_LEN,f);
+ if(sscanf(line,"%s\t%s\n",name1,name2)==2)
+ {
+ if(strcmp(name1,"Name:") == 0)
+ {
+ if(strcmp(procname,name2)==0)
+ {
+ proc_ok = 1;
+ }
+ }
+ }
- if(proc_ok == 0)
+ if(proc_ok == 0)
+ {
+ fclose(f);
+ continue;
+ }
+ }
+ else
{
- fclose(f);
- continue;
+ proc_ok = 1;
}
if(usrinfo != NULL)
{
-
while(fgets(line, MAX_STRING_LEN, f) != NULL)
{
-
if(sscanf(line, "%s\t%i\n", name1, &proc_uid) != 2)
{
continue;
diff --git a/src/libs/zbxsysinfo/linux/Makefile.am b/src/libs/zbxsysinfo/linux/Makefile.am
index 61445b63..4e57c84f 100644
--- a/src/libs/zbxsysinfo/linux/Makefile.am
+++ b/src/libs/zbxsysinfo/linux/Makefile.am
@@ -1,6 +1,6 @@
SUBDIRS=
-libzbxsysinfo2_a_SOURCES=cpu.c diskio.c diskspace.c inodes.c memory.c sensors.c swap.c uptime.c
+libzbxsysinfo2_a_SOURCES=cpu.c diskio.c diskspace.c inodes.c memory.c proc.c sensors.c swap.c uptime.c
lib_LIBRARIES=libzbxsysinfo2.a
libzbxsysinfo2_a_LIBADD = ../../zbxcommon/libzbxcommon.a ../../zbxcrypto/libzbxcrypto.a
diff --git a/src/libs/zbxsysinfo/linux/linux.c b/src/libs/zbxsysinfo/linux/linux.c
index 71da5581..6ccfffee 100644
--- a/src/libs/zbxsysinfo/linux/linux.c
+++ b/src/libs/zbxsysinfo/linux/linux.c
@@ -91,6 +91,7 @@ int AGENT_PING(const char *cmd, const char *parameter,double *value);
int VM_MEMORY_SHARED(const char *cmd, const char *parameter,double *value);
int VM_MEMORY_TOTAL(const char *cmd, const char *parameter,double *value);
int PROC_NUM(const char *cmd, const char *parameter,double *value);
+int PROC_MEMORY(const char *cmd, const char *param, double *value);
int PROCCOUNT(const char *cmd, const char *parameter,double *value);
int SYSTEM_CPU_LOAD1(const char *cmd, const char *parameter,double *value);
@@ -182,6 +183,7 @@ COMMAND parameters_specific[]=
{"kernel.maxproc" ,KERNEL_MAXPROC, 0, 0},
{"proc.num[*]" ,PROC_NUM, 0, "inetd"},
+ {"proc.mem[*]" ,PROC_MEMORY, 0, "inetd,root,sum"},
{"vm.memory.total" ,VM_MEMORY_TOTAL, 0, 0},
{"vm.memory.shared" ,VM_MEMORY_SHARED, 0, 0},