Only in nagios-plugins-1.4.0alpha1-rm: autom4te-2.53.cache Only in nagios-plugins-1.4.0alpha1-rm: autom4te.cache diff -r -u nagios-plugins-1.4.0alpha1/configure nagios-plugins-1.4.0alpha1-rm/configure --- nagios-plugins-1.4.0alpha1/configure 2003-11-30 18:55:45.000000000 -0800 +++ nagios-plugins-1.4.0alpha1-rm/configure 2004-07-14 21:40:45.000000000 -0700 @@ -15537,13 +15537,13 @@ echo "$as_me:$LINENO: result: $ac_cv_ps_command" >&5 echo "${ECHO_T}$ac_cv_ps_command" >&6 -elif ps -weo 'stat comm vsz rss user uid ppid args' 2>/dev/null | \ - egrep -i "^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +[RGSCOMDNA]+" >/dev/null +elif ps -weo 'stat comm vsz rss user uid ppid etime args' 2>/dev/null | \ + egrep -i "^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +[ELAPSD]+ +[RGSCOMDNA]+" >/dev/null then - ac_cv_ps_varlist="procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos" - ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - ac_cv_ps_cols=8 + ac_cv_ps_varlist="procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procetime,procprog,&pos" + ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid ppid vsz rss pcpu etime comm args'" + ac_cv_ps_format="%s %d %d %d %d %f %s %s %n" + ac_cv_ps_cols=9 echo "$as_me:$LINENO: result: $ac_cv_ps_command" >&5 echo "${ECHO_T}$ac_cv_ps_command" >&6 diff -r -u nagios-plugins-1.4.0alpha1/configure.in nagios-plugins-1.4.0alpha1-rm/configure.in --- nagios-plugins-1.4.0alpha1/configure.in 2003-11-30 18:55:32.000000000 -0800 +++ nagios-plugins-1.4.0alpha1-rm/configure.in 2004-07-14 06:23:16.000000000 -0700 @@ -644,13 +644,13 @@ AC_MSG_RESULT([$ac_cv_ps_command]) dnl STAT UCOMM VSZ RSS USER UID PPID COMMAND -elif ps -weo 'stat comm vsz rss user uid ppid args' 2>/dev/null | \ - egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +[RGSCOMDNA]+"] >/dev/null +elif ps -weo 'stat comm vsz rss user uid ppid etime args' 2>/dev/null | \ + egrep -i ["^ *S[TAUES]* +[UCOMDNA]+ +[VSIZE]+ +R[S]+ +U[SER]+ +U[ID]+ +P[PID]+ +[ELAPSD]+ +[RGSCOMDNA]+"] >/dev/null then - ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]" - ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid ppid vsz rss pcpu comm args'" - ac_cv_ps_format="%s %d %d %d %d %f %s %n" - ac_cv_ps_cols=8 + ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procetime,procprog,&pos]" + ac_cv_ps_command="$PATH_TO_PS -weo 'stat uid ppid vsz rss pcpu etime comm args'" + ac_cv_ps_format="%s %d %d %d %d %f %s %s %n" + ac_cv_ps_cols=9 AC_MSG_RESULT([$ac_cv_ps_command]) dnl FreeBSD Only in nagios-plugins-1.4.0alpha1/pkg/solaris: pkginfo diff -r -u nagios-plugins-1.4.0alpha1/plugins/check_nagios.c nagios-plugins-1.4.0alpha1-rm/plugins/check_nagios.c --- nagios-plugins-1.4.0alpha1/plugins/check_nagios.c 2003-08-21 23:22:38.000000000 -0700 +++ nagios-plugins-1.4.0alpha1-rm/plugins/check_nagios.c 2004-07-14 06:27:19.000000000 -0700 @@ -52,6 +52,7 @@ int procrss = 0; float procpcpu = 0; char procstat[8]; + char procetime[MAX_INPUT_BUFFER]; char procprog[MAX_INPUT_BUFFER]; char *procargs; int pos, cols; diff -r -u nagios-plugins-1.4.0alpha1/plugins/check_procs.c nagios-plugins-1.4.0alpha1-rm/plugins/check_procs.c --- nagios-plugins-1.4.0alpha1/plugins/check_procs.c 2003-11-30 18:46:01.000000000 -0800 +++ nagios-plugins-1.4.0alpha1-rm/plugins/check_procs.c 2004-07-14 21:36:09.000000000 -0700 @@ -47,14 +47,15 @@ #define VSZ 64 #define RSS 128 #define PCPU 256 - +#define ELAPSED 512 /* Different metrics */ char *metric_name; enum metric { METRIC_PROCS, METRIC_VSZ, METRIC_RSS, - METRIC_CPU + METRIC_CPU, + METRIC_ELAPSED }; enum metric metric = METRIC_PROCS; @@ -85,8 +86,10 @@ int procppid = 0; int procvsz = 0; int procrss = 0; + int procseconds = 0; float procpcpu = 0; char procstat[8]; + char procetime[MAX_INPUT_BUFFER]; char procprog[MAX_INPUT_BUFFER]; char *procargs; char *temp_string; @@ -156,10 +159,14 @@ temp_string = strtok (NULL, "/"); } + /* we need to convert the elapsed time to seconds */ + procseconds = convert_to_seconds(procetime); + if (verbose >= 3) - printf ("%d %d %d %d %d %.2f %s %s %s\n", + printf ("%d %d %d %d %d %.2f %s %s %s %s\n", procs, procuid, procvsz, procrss, - procppid, procpcpu, procstat, procprog, procargs); + procppid, procpcpu, procstat, + procetime, procprog, procargs); /* Ignore self */ if (strcmp (procprog, progname) == 0) { @@ -198,6 +205,8 @@ /* TODO? float thresholds for --metric=CPU */ else if (metric == METRIC_CPU) i = check_thresholds ((int)procpcpu); + else if (metric == METRIC_ELAPSED) + i = check_thresholds (procseconds); if (metric != METRIC_PROCS) { if (i == STATE_WARNING) { @@ -297,6 +306,7 @@ {"vsz", required_argument, 0, 'z'}, {"rss", required_argument, 0, 'r'}, {"pcpu", required_argument, 0, 'P'}, + {"elapsed", required_argument, 0, 'e'}, {"argument-array", required_argument, 0, 'a'}, {"help", no_argument, 0, 'h'}, {"version", no_argument, 0, 'V'}, @@ -448,7 +458,12 @@ metric = METRIC_CPU; break; } - printf (_("%s: metric must be one of PROCS, VSZ, RSS, CPU!\n\n"), + else if ( strcmp(optarg, "ELAPSED") == 0) { + metric = METRIC_ELAPSED; + break; + } + + printf (_("%s: metric must be one of PROCS, VSZ, RSS, CPU, ELAPSED!\n\n"), progname); print_usage (); exit (STATE_UNKNOWN); @@ -646,6 +661,62 @@ printf (_(UT_SUPPORT)); } +/* convert the elapsed time to seconds */ +int convert_to_seconds(char *etime) { + + char *ptr; + int total; + + int hyphcnt; + int coloncnt; + int days; + int hours; + int minutes; + int seconds; + + hyphcnt = 0; + coloncnt = 0; + days = 0; + hours = 0; + minutes = 0; + seconds = 0; + + for (ptr = etime; *ptr != '\0'; ptr++) { + + if (*ptr == '-') { + hyphcnt++; + continue; + } + if (*ptr == ':') { + coloncnt++; + continue; + } + } + + if (hyphcnt > 0) { + sscanf(etime, "%d-%d:%d:%d", + &days, &hours, &minutes, &seconds); + } else { + if (coloncnt == 2) { + sscanf(etime, "%d:%d:%d", + &hours, &minutes, &seconds); + } else if (coloncnt == 1) { + sscanf(etime, "%d:%d", + &minutes, &seconds); + } + } + + total = (days * 86400) + + (hours * 3600) + + (minutes * 60) + + seconds; + + if (verbose >= 3) { + printf("seconds: %d\n", total); + } + return total; +} + void print_usage (void) {