[Nagiosplug-checkins] CVS: nagiosplug/plugins Makefile.am,1.24,1.25 check_nagios.c,1.6,1.7 check_procs.c,1.12,1.13 check_vsz.c,1.7,NONE

Ton Voon tonvoon at users.sourceforge.net
Mon Apr 7 15:54:04 CEST 2003


Update of /cvsroot/nagiosplug/nagiosplug/plugins
In directory sc8-pr-cvs1:/tmp/cvs-serv29121/plugins

Modified Files:
	Makefile.am check_nagios.c check_procs.c 
Removed Files:
	check_vsz.c 
Log Message:
Souped up check_procs with different metrics


Index: Makefile.am
===================================================================
RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/Makefile.am,v
retrieving revision 1.24
retrieving revision 1.25
diff -C2 -r1.24 -r1.25
*** Makefile.am	15 Mar 2003 01:25:35 -0000	1.24
--- Makefile.am	7 Apr 2003 22:53:48 -0000	1.25
***************
*** 8,12 ****
  	check_mrtg check_mrtgtraf check_nwstat check_overcr check_ping \
  	check_procs check_real check_smtp check_ssh check_tcp check_time \
! 	check_udp check_ups check_users check_vsz negate urlize \
  	@EXTRAS@
  
--- 8,12 ----
  	check_mrtg check_mrtgtraf check_nwstat check_overcr check_ping \
  	check_procs check_real check_smtp check_ssh check_tcp check_time \
! 	check_udp check_ups check_users negate urlize \
  	@EXTRAS@
  
***************
*** 69,73 ****
  check_ups_LDADD = $(NETLIBS)
  check_users_LDADD = $(BASEOBJS) popen.o
- check_vsz_LDADD = $(BASEOBJS) popen.o
  check_by_ssh_LDADD = $(NETLIBS) popen.o
  negate_LDADD = $(BASEOBJS) popen.o
--- 69,72 ----
***************
*** 105,109 ****
  check_ups_DEPENDENCIES = check_ups.c $(NETOBJS) $(DEPLIBS)
  check_users_DEPENDENCIES = check_users.c $(BASEOBJS) popen.o $(DEPLIBS)
- check_vsz_DEPENDENCIES = check_vsz.c $(BASEOBJS) popen.o $(DEPLIBS)
  check_by_ssh_DEPENDENCIES = check_by_ssh.c $(NETOBJS) popen.o $(DEPLIBS)
  negate_DEPENDENCIES = negate.c $(BASEOBJS) popen.o $(DEPLIBS)
--- 104,107 ----

Index: check_nagios.c
===================================================================
RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/check_nagios.c,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** check_nagios.c	26 Mar 2003 03:39:13 -0000	1.6
--- check_nagios.c	7 Apr 2003 22:53:48 -0000	1.7
***************
*** 56,59 ****
--- 56,62 ----
  	int procuid = 0;
  	int procppid = 0;
+ 	int procvsz = 0;
+ 	int procrss = 0;
+ 	float procpcpu = 0;
  	char procstat[8];
  	char procprog[MAX_INPUT_BUFFER];
***************
*** 107,111 ****
  	while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
  		cols = sscanf (input_buffer, PS_FORMAT, PS_VARLIST);
! 		if ( cols >= 4 ) {
  			asprintf (&procargs, "%s", input_buffer + pos);
  			strip (procargs);
--- 110,114 ----
  	while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
  		cols = sscanf (input_buffer, PS_FORMAT, PS_VARLIST);
! 		if ( cols >= 6 ) {
  			asprintf (&procargs, "%s", input_buffer + pos);
  			strip (procargs);

Index: check_procs.c
===================================================================
RCS file: /cvsroot/nagiosplug/nagiosplug/plugins/check_procs.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -r1.12 -r1.13
*** check_procs.c	26 Mar 2003 03:57:58 -0000	1.12
--- check_procs.c	7 Apr 2003 22:53:49 -0000	1.13
***************
*** 40,48 ****
  #define AUTHOR "Ethan Galstad"
  #define EMAIL "nagios at nagios.org"
! #define SUMMARY "Check the number of currently running processes and generates WARNING or\n\
! CRITICAL states if the process count is outside the specified threshold\n\
! ranges. The process count can be filtered by process owner, parent process\n\
! PID, current state (e.g., 'Z'), or may be the total number of running\n\
! processes\n"
  
  #include "config.h"
--- 40,101 ----
  #define AUTHOR "Ethan Galstad"
  #define EMAIL "nagios at nagios.org"
! #define SUMMARY "\
! Checks all processes and generates WARNING or CRITICAL states if the specified\n\
! metric is outside the required threshold ranges. The metric defaults to number\n\
! of processes.  Search filters can be applied to limit the processes to check.\n"
! 
! #define OPTIONS "\
! -w <range> -c <range> [-m metric]\n\
!             [-s state] [-p ppid] [-u user] [-r rss] [-z vsz] [-P %cpu]\n\
!             [-a argument-array] [-C command] [-v]"
! 
! #define LONGOPTIONS "\
! Required Arguments:\n\
!  -w, --warning=RANGE\n\
!    Generate warning state if metric is outside this range\n\
!  -c, --critical=RANGE\n\
!    Generate critical state if metric is outside this range\n\
! Optional Arguments:\n\
!  -m, --metric=TYPE\n\
!    Check thresholds against metric. Valid types:\n\
!    PROCS - number of processes (default)\n\
!    VSZ  - virtual memory size\n\
!    RSS  - resident set memory size\n\
!    CPU  - percentage cpu\n\
!  -v, --verbose\n\
!    Extra information. Up to 3 verbosity levels\n\
! Optional Filters:\n\
!  -s, --state=STATUSFLAGS\n\
!    Only scan for processes that have, in the output of `ps`, one or\n\
!    more of the status flags you specify (for example R, Z, S, RS,\n\
!    RSZDT, plus others based on the output of your 'ps' command).\n\
!  -p, --ppid=PPID\n\
!    Only scan for children of the parent process ID indicated.\n\
!  -z, --vsz=VSZ\n\
!    Only scan for processes with vsz higher than indicated.\n\
!  -r, --rss=RSS\n\
!    Only scan for processes with rss higher than indicated.\n\
!  -P, --pcpu=PCPU\n\
!    Only scan for processes with pcpu higher than indicated.\n\
!  -u, --user=USER\n\
!    Only scan for processes with user name or ID indicated.\n\
!  -a, --argument-array=STRING\n\
!    Only scan for ARGS that match up to the length of the given STRING.\n\
!  -C, --command=COMMAND\n\
!    Only scan for exact matches to the named COMMAND.\n\
! \n\
! RANGEs are specified 'min:max' or 'min:' or ':max' (or 'max'). If\n\
! specified 'max:min', a warning status will be generated if the\n\
! count is inside the specified range\n"
! 
! #define EXAMPLES "\
!  check_procs -w 2:2 -c 2:1024 -C portsentry\n\
!    Warning if not two processes with command name portsentry. Critical\n\
!    if < 2 or > 1024 processes\n\
!  check_procs -w 10 -a '/usr/local/bin/perl' -u root\n\
!    Warning alert if > 10 processes with command arguments containing \n\
!    '/usr/local/bin/perl' and owned by root\n\
!  check_procs -w 50000 -c 100000 --metric=VSZ\n\
!    Alert if vsz of any processes over 50K or 100K\n"
  
  #include "config.h"
***************
*** 56,59 ****
--- 109,113 ----
  void print_usage (void);
  void print_help (void);
+ int check_thresholds (int);
  
  int wmax = -1;
***************
*** 69,82 ****
  #define PROG 16
  #define ARGS 32
  
! int verbose = FALSE;
  int uid;
  int ppid;
  char *statopts = "";
  char *prog = "";
  char *args = "";
  char *fmt = "";
  char tmp[MAX_INPUT_BUFFER];
- const char *zombie = "Z";
  
  int
--- 123,150 ----
  #define PROG 16
  #define ARGS 32
+ #define VSZ  64
+ #define RSS  128
+ #define PCPU 256
+ 
+ /* Different metrics */
+ int metric = 0;
+ #define METRIC_PROCS 0
+ #define METRIC_VSZ 1
+ #define METRIC_RSS 2
+ #define METRIC_CPU 3
+ char *metric_name = "";
  
! int verbose = 0;
  int uid;
  int ppid;
+ int vsz;
+ int rss;
+ float pcpu;
  char *statopts = "";
  char *prog = "";
  char *args = "";
  char *fmt = "";
+ char *fails = "";
  char tmp[MAX_INPUT_BUFFER];
  
  int
***************
*** 87,94 ****
--- 155,167 ----
  	int procuid = 0;
  	int procppid = 0;
+ 	int procvsz = 0;
+ 	int procrss = 0;
+ 	float procpcpu = 0;
  	char procstat[8];
  	char procprog[MAX_INPUT_BUFFER];
  	char *procargs;
  
+ 	const char *zombie = "Z";
+ 
  	int resultsum = 0; /* bitmask of the filter criteria met by a process */
  	int found = 0; /* counter for number of lines returned in `ps` output */
***************
*** 96,108 ****
  	int pos; /* number of spaces before 'args' in `ps` output */
  	int cols; /* number of columns in ps output */
  
  	int result = STATE_UNKNOWN;
  
  	if (process_arguments (argc, argv) == ERROR)
  		usage ("Unable to parse command line\n");
  
! 	/* run the command */
! 	if (verbose)
! 		printf ("%s\n", PS_COMMAND);
  	child_process = spopen (PS_COMMAND);
  	if (child_process == NULL) {
--- 169,187 ----
  	int pos; /* number of spaces before 'args' in `ps` output */
  	int cols; /* number of columns in ps output */
+ 	int warn = 0; /* number of processes in warn state */
+ 	int crit = 0; /* number of processes in crit state */
+ 	int i;
  
  	int result = STATE_UNKNOWN;
  
+ 	asprintf (&metric_name, "PROCS");
+ 	metric = METRIC_PROCS;
+ 
  	if (process_arguments (argc, argv) == ERROR)
  		usage ("Unable to parse command line\n");
  
! 	if (verbose >= 2)
! 		printf ("CMD: %s\n", PS_COMMAND);
! 
  	child_process = spopen (PS_COMMAND);
  	if (child_process == NULL) {
***************
*** 118,133 ****
  
  	while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
  		cols = sscanf (input_buffer, PS_FORMAT, PS_VARLIST);
  
  		/* Zombie processes do not give a procprog command */
  		if ( cols == 3 && strstr(procstat, zombie) ) {
- 			strcpy(procprog, "");
  			cols = 4;
  		}
! 		if ( cols >= 4 ) {
  			found++;
  			resultsum = 0;
  			asprintf (&procargs, "%s", input_buffer + pos);
   			strip (procargs);
  			if ((options & STAT) && (strstr (statopts, procstat)))
  				resultsum |= STAT;
--- 197,216 ----
  
  	while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) {
+ 		strcpy(procprog,"");
+ 		asprintf(&procargs,"");
+ 
  		cols = sscanf (input_buffer, PS_FORMAT, PS_VARLIST);
  
  		/* Zombie processes do not give a procprog command */
+ 		/* - would they give other columns? */
  		if ( cols == 3 && strstr(procstat, zombie) ) {
  			cols = 4;
  		}
! 		if ( cols >= 7 ) {
  			found++;
  			resultsum = 0;
  			asprintf (&procargs, "%s", input_buffer + pos);
   			strip (procargs);
+ 
  			if ((options & STAT) && (strstr (statopts, procstat)))
  				resultsum |= STAT;
***************
*** 140,153 ****
  			if ((options & USER) && (procuid == uid))
  				resultsum |= USER;
! #ifdef DEBUG1
! 			if (procargs == NULL)
! 				printf ("%d %d %d %s %s\n", procs, procuid, procppid, procstat,
! 								procprog);
! 			else
! 				printf ("%d %d %d %s %s %s\n", procs, procuid, procppid, procstat,
! 								procprog, procargs);
! #endif
! 			if (options == resultsum)
! 				procs++;
  		} 
  		/* This should not happen */
--- 223,263 ----
  			if ((options & USER) && (procuid == uid))
  				resultsum |= USER;
! 			if ((options & VSZ)  && (procvsz >= vsz))
! 				resultsum |= VSZ;
! 			if ((options & RSS)  && (procrss >= rss))
! 				resultsum |= RSS;
! 			if ((options & PCPU)  && (procpcpu >= pcpu))
! 				resultsum |= PCPU;
! 
! 			if (verbose >= 3)
! 				printf ("%d %d %d %d %d %.2f %s %s %s\n", 
! 					procs, procuid, procvsz, procrss,
! 					procppid, procpcpu, procstat, procprog, procargs);
! 
! 			/* Next line if filters not matched */
! 			if (!(options == resultsum || options == ALL))
! 				continue;
! 
! 			procs++;
! 
! 			if (metric == METRIC_VSZ)
! 				i = check_thresholds (procvsz);
! 			else if (metric == METRIC_RSS)
! 				i = check_thresholds (procrss);
! 			/* TODO? float thresholds for --metric=CPU */
! 			else if (metric == METRIC_CPU)
! 				i = check_thresholds ((int)procpcpu); 
! 
! 			if (metric != METRIC_PROCS) {
! 				if (i == STATE_WARNING) {
! 					warn++;
! 					asprintf (&fails, "%s%s%s", fails, (fails == "" ? "" : ", "), procprog);
! 				}
! 				if (i == STATE_CRITICAL) {
! 					crit++;
! 					asprintf (&fails, "%s%s%s", fails, (fails == "" ? "" : ", "), procprog);
! 				}
! 				result = max_state (result, i);
! 			}
  		} 
  		/* This should not happen */
***************
*** 173,235 ****
  	}
  
- 	if (options == ALL)
- 		procs = found;
- 
  	if (found == 0) {							/* no process lines parsed so return STATE_UNKNOWN */
  		printf ("Unable to read output\n");
- 
  		return result;
  	}
  
! 	if (verbose && (options & STAT))
! 		printf ("%s ", statopts);
! 	if (verbose && (options & PROG))
! 		printf ("%s ", prog);
! 	if (verbose && (options & PPID))
! 		printf ("%d ", ppid);
! 	if (verbose && (options & USER))
! 		printf ("%d ", uid);
  
   	if (wmax == -1 && cmax == -1 && wmin == -1 && cmin == -1) {
! 		if (result == STATE_UNKNOWN)
! 			result = STATE_OK;
! 		printf (fmt, "OK", procs);
! 		return result;
   	}
  	else if (cmax >= 0 && cmin >= 0 && cmax < cmin) {
! 		if (procs > cmax && procs < cmin) {
! 			printf (fmt, "CRITICAL", procs);
  			return STATE_CRITICAL;
- 		}
  	}
! 	else if (cmax >= 0 && procs > cmax) {
! 		printf (fmt, "CRITICAL", procs);
  		return STATE_CRITICAL;
  	}
! 	else if (cmin >= 0 && procs < cmin) {
! 		printf (fmt, "CRITICAL", procs);
  		return STATE_CRITICAL;
  	}
  
  	if (wmax >= 0 && wmin >= 0 && wmax < wmin) {
! 		if (procs > wmax && procs < wmin) {
! 			printf (fmt, "CRITICAL", procs);
! 			return STATE_CRITICAL;
  		}
  	}
! 	else if (wmax >= 0 && procs > wmax) {
! 		printf (fmt, "WARNING", procs);
! 		return max_state (result, STATE_WARNING);
  	}
! 	else if (wmin >= 0 && procs < wmin) {
! 		printf (fmt, "WARNING", procs);
! 		return max_state (result, STATE_WARNING);
  	}
! 
! 	printf (fmt, "OK", procs);
! 	if ( result == STATE_UNKNOWN ) {
! 		result = STATE_OK;
! 	}
! 	return result;
  }
  
--- 283,363 ----
  	}
  
  	if (found == 0) {							/* no process lines parsed so return STATE_UNKNOWN */
  		printf ("Unable to read output\n");
  		return result;
  	}
  
! 	if ( result == STATE_UNKNOWN ) 
! 		result = STATE_OK;
! 
! 	/* Needed if procs found, but none match filter */
! 	if ( metric == METRIC_PROCS ) {
! 		result = max_state (result, check_thresholds (procs) );
! 	}
! 
! 	if ( result == STATE_OK ) {
! 		printf ("%s OK: %d process%s", 
! 			metric_name, procs, ( procs != 1 ? "es" : "") );
! 	} else if (result == STATE_WARNING) {
! 		if ( metric == METRIC_PROCS ) {
! 			printf ("PROCS WARNING: %d process%s", procs, 
! 				( procs != 1 ? "es" : ""));
! 		} else {
! 			printf ("%s WARNING: %d warn out of %d process%s", 
! 				metric_name, warn, procs, 
! 				( procs != 1 ? "es" : ""));
! 		}
! 	} else if (result == STATE_CRITICAL) {
! 		if (metric == METRIC_PROCS) {
! 			printf ("PROCS CRITICAL: %d process%s", procs, 
! 				( procs != 1 ? "es" : ""));
! 		} else {
! 			printf ("%s CRITICAL: %d crit, %d warn out of %d process%s", 
! 				metric_name, crit, warn, procs, 
! 				( procs != 1 ? "es" : ""));
! 		}
! 	} 
! 	
! 	if (fmt != "") {
! 		printf (" with %s", fmt);
! 	}
! 
! 	if ( verbose >= 1 && fails != "" )
! 		printf (" [%s]", fails);
! 
! 	printf ("\n");
! 	return result;
! }
  
+ /* Check thresholds against value */
+ int
+ check_thresholds (int value)
+ {
   	if (wmax == -1 && cmax == -1 && wmin == -1 && cmin == -1) {
! 		return OK;
   	}
  	else if (cmax >= 0 && cmin >= 0 && cmax < cmin) {
! 		if (value > cmax && value < cmin)
  			return STATE_CRITICAL;
  	}
! 	else if (cmax >= 0 && value > cmax) {
  		return STATE_CRITICAL;
  	}
! 	else if (cmin >= 0 && value < cmin) {
  		return STATE_CRITICAL;
  	}
  
  	if (wmax >= 0 && wmin >= 0 && wmax < wmin) {
! 		if (value > wmax && value < wmin) {
! 			return STATE_WARNING;
  		}
  	}
! 	else if (wmax >= 0 && value > wmax) {
! 		return STATE_WARNING;
  	}
! 	else if (wmin >= 0 && value < wmin) {
! 		return STATE_WARNING;
  	}
! 	return STATE_OK;
  }
  
***************
*** 245,252 ****
--- 373,384 ----
  		{"warning", required_argument, 0, 'w'},
  		{"critical", required_argument, 0, 'c'},
+ 		{"metric", required_argument, 0, 'm'},
  		{"timeout", required_argument, 0, 't'},
  		{"status", required_argument, 0, 's'},
  		{"ppid", required_argument, 0, 'p'},
  		{"command", required_argument, 0, 'C'},
+ 		{"vsz", required_argument, 0, 'z'},
+ 		{"rss", required_argument, 0, 'r'},
+ 		{"pcpu", required_argument, 0, 'P'},
  		{"argument-array", required_argument, 0, 'a'},
  		{"help", no_argument, 0, 'h'},
***************
*** 261,265 ****
  
  	while (1) {
! 		c = getopt_long (argc, argv, "Vvht:c:w:p:s:u:C:a:", long_options, &option_index);
  
  		if (c == -1 || c == EOF)
--- 393,398 ----
  
  	while (1) {
! 		c = getopt_long (argc, argv, "Vvht:c:w:p:s:u:C:a:z:r:m:P:", 
! 			long_options, &option_index);
  
  		if (c == -1 || c == EOF)
***************
*** 369,373 ****
  		case 'C':									/* command */
  			asprintf (&prog, "%s", optarg);
! 			asprintf (&fmt, "%s%scommand name %s", fmt, (options ? ", " : ""),
  			          prog);
  			options |= PROG;
--- 502,506 ----
  		case 'C':									/* command */
  			asprintf (&prog, "%s", optarg);
! 			asprintf (&fmt, "%s%scommand name '%s'", fmt, (options ? ", " : ""),
  			          prog);
  			options |= PROG;
***************
*** 375,383 ****
  		case 'a':									/* args (full path name with args) */
  			asprintf (&args, "%s", optarg);
! 			asprintf (&fmt, "%s%sargs %s", fmt, (options ? ", " : ""), args);
  			options |= ARGS;
  			break;
  		case 'v':									/* command */
! 			verbose = TRUE;
  			break;
  		}
--- 508,569 ----
  		case 'a':									/* args (full path name with args) */
  			asprintf (&args, "%s", optarg);
! 			asprintf (&fmt, "%s%sargs '%s'", fmt, (options ? ", " : ""), args);
  			options |= ARGS;
  			break;
+ 		case 'r': 					/* RSS */
+ 			if (sscanf (optarg, "%d%[^0-9]", &rss, tmp) == 1) {
+ 				asprintf (&fmt, "%s%sRSS >= %d", fmt, (options ? ", " : ""), rss);
+ 				options |= RSS;
+ 				break;
+ 			}
+ 			printf ("%s: RSS must be an integer!\n\n",
+ 			        progname);
+ 			print_usage ();
+ 			exit (STATE_UNKNOWN);
+ 		case 'z':					/* VSZ */
+ 			if (sscanf (optarg, "%d%[^0-9]", &vsz, tmp) == 1) {
+ 				asprintf (&fmt, "%s%sVSZ >= %d", fmt, (options ? ", " : ""), vsz);
+ 				options |= VSZ;
+ 				break;
+ 			}
+ 			printf ("%s: VSZ must be an integer!\n\n",
+ 			        progname);
+ 			print_usage ();
+ 			exit (STATE_UNKNOWN);
+ 		case 'P':					/* PCPU */
+ 			/* TODO: -P 1.5.5 is accepted */
+ 			if (sscanf (optarg, "%f%[^0-9.]", &pcpu, tmp) == 1) {
+ 				asprintf (&fmt, "%s%sPCPU >= %.2f", fmt, (options ? ", " : ""), pcpu);
+ 				options |= PCPU;
+ 				break;
+ 			}
+ 			printf ("%s: PCPU must be a float!\n\n",
+ 			        progname);
+ 			print_usage ();
+ 			exit (STATE_UNKNOWN);
+ 		case 'm':
+ 			asprintf (&metric_name, "%s", optarg);
+ 			if ( strcmp(optarg, "PROCS") == 0) {
+ 				metric = METRIC_PROCS;
+ 				break;
+ 			} 
+ 			else if ( strcmp(optarg, "VSZ") == 0) {
+ 				metric = METRIC_VSZ;
+ 				break;
+ 			} 
+ 			else if ( strcmp(optarg, "RSS") == 0 ) {
+ 				metric = METRIC_RSS;
+ 				break;
+ 			}
+ 			else if ( strcmp(optarg, "CPU") == 0 ) {
+ 				metric = METRIC_CPU;
+ 				break;
+ 			}
+ 			printf ("%s: metric must be one of PROCS, VSZ, RSS, CPU!\n\n",
+ 				progname);
+ 			print_usage ();
+ 			exit (STATE_UNKNOWN);
  		case 'v':									/* command */
! 			verbose++;
  			break;
  		}
***************
*** 403,407 ****
  {
  
! if (wmax >= 0 && wmin == -1)
  		wmin = 0;
  	if (cmax >= 0 && cmin == -1)
--- 589,593 ----
  {
  
! 	if (wmax >= 0 && wmin == -1)
  		wmin = 0;
  	if (cmax >= 0 && cmin == -1)
***************
*** 423,433 ****
  /* 	} */
  
! 	if (options == 0) {
! 		options = 1;
! 		asprintf (&fmt, "%%s - %%d processes running\n");
! 	}
! 	else {
! 		asprintf (&fmt, "%%s - %%d processes running with %s\n", fmt);
! 	}
  
  	return options;
--- 609,614 ----
  /* 	} */
  
! 	if (options == 0)
! 		options = ALL;
  
  	return options;
***************
*** 443,478 ****
  		 COPYRIGHT, AUTHOR, EMAIL, SUMMARY);
  	print_usage ();
! 	printf
! 		("\nRequired Arguments:\n"
! 		 " -w, --warning=RANGE\n"
! 		 "    generate warning state if process count is outside this range\n"
! 		 " -c, --critical=RANGE\n"
! 		 "    generate critical state if process count is outside this range\n\n"
! 		 "Optional Filters:\n"
! 		 " -s, --state=STATUSFLAGS\n"
! 		 "    Only scan for processes that have, in the output of `ps`, one or\n"
! 		 "    more of the status flags you specify (for example R, Z, S, RS,\n"
! 		 "    RSZDT, plus others based on the output of your 'ps' command).\n"
! 		 " -p, --ppid=PPID\n"
! 		 "    Only scan for children of the parent process ID indicated.\n"
! 		 " -u, --user=USER\n"
! 		 "    Only scan for proceses with user name or ID indicated.\n"
! 		 " -a, --argument-array=STRING\n"
! 		 "    Only scan for ARGS that match up to the length of the given STRING\n"
! 		 " -C, --command=COMMAND\n"
! 		 "    Only scan for exact matches to the named COMMAND.\n\n"
! 		 "RANGEs are specified 'min:max' or 'min:' or ':max' (or 'max'). If\n"
! 		 "specified 'max:min', a warning status will be generated if the\n"
! 
! 		 "count is inside the specified range\n");}
! 
  
  void
  print_usage (void)
  {
! 	printf
! 		("Usage:\n"
! 		 " check_procs -w <range> -c <range> [-s state] [-p ppid] [-u user]\n"
! 		 "             [-a argument-array] [-C command]\n"
! 		 " check_procs --version\n" " check_procs --help\n");
  }
--- 624,636 ----
  		 COPYRIGHT, AUTHOR, EMAIL, SUMMARY);
  	print_usage ();
! 	printf ("\nOptions:\n" LONGOPTIONS "\nExamples:\n" EXAMPLES "\n");
! }
  
  void
  print_usage (void)
  {
! 	printf ("Usage:\n" " %s %s\n"
! 		 " %s (-h | --help) for detailed help\n"
! 		 " %s (-V | --version) for version information\n",
! 	progname, OPTIONS, progname, progname);	
  }

--- check_vsz.c DELETED ---





More information about the Commits mailing list