Explorar el Código

Use /usr/ucb/ps on Solaris in preference to pst3 (problems in 64bit mode)

git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1629 f882894a-f735-0410-b71e-b25c423dba1c
Ton Voon hace 19 años
padre
commit
4ad5dcce03
Se han modificado 3 ficheros con 12 adiciones y 25 borrados
  1. 2 1
      NEWS
  2. 9 23
      configure.in
  3. 1 1
      plugins/check_procs.c

+ 2 - 1
NEWS

@@ -1,6 +1,7 @@
 This file documents the major additions and syntax changes between releases.
 
-??    ??
+1.4.7 ??
+	check_procs uses /usr/ucb/ps if available - fixes pst3 problems on Solaris
 	Fixed MKINSTALLDIRS problem in po/
 	Root plugins installed with world executable
 	./configure now detects if possible to compile check_mysql

+ 9 - 23
configure.in

@@ -493,30 +493,16 @@ if test -n "$PS_COMMAND" && test -n "$PS_FORMAT" && test -n "$PS_COLS" && test -
 	ac_cv_ps_cols="$PS_COLS"
 	AC_MSG_RESULT([(command-line) $ac_cv_ps_command])
 
-dnl Now using the pst3/kmem hack for solaris systems to avoid truncation
-elif test "$ac_cv_uname_s" = "SunOS"; then
-	#
-	# this is a very, very ugly hack, to hardcode the location for plugins
-	#
-	if test "$libexecdir" = '${exec_prefix}/libexec'; then
-		if test "$exec_prefix" = "NONE"; then
-			if test "$prefix" = "NONE"; then
-				pst3="$ac_default_prefix/libexec/pst3"
-			else
-				pst3="$prefix/libexec/pst3"
-			fi
-		else
-			pst3="$exec_prefix/libexec/pst3"
-		fi
-	else
-		pst3="$libexecdir/pst3"
-	fi
-	ac_cv_ps_command="$pst3"
-	ac_cv_ps_format="%s %d %d %d %d %f %s %n"
-	ac_cv_ps_varlist="[procstat,&procuid,&procppid,&procvsz,&procrss,&procpcpu,procprog,&pos]"
+dnl Using /usr/ucb/ps on Solaris systems, to avoid truncation
+dnl Limitation that command name is not available
+elif test "$ac_cv_uname_s" = "SunOS" && /usr/ucb/ps -alxwwn 2>/dev/null | \
+	egrep -i ["^ *F +UID +PID +PPID +%C +PRI +NI +SZ +RSS +WCHAN +S +TT +TIME +COMMAND"] > /dev/null
+then
+	ac_cv_ps_varlist="[&procuid,&procpid,&procppid,&procpcpu,&procvsz,&procrss,procstat,&pos]"
+	ac_cv_ps_command="/usr/ucb/ps -alxwwn"
+	ac_cv_ps_format=["%*s %d %d %d %d %*d %*d %d %d%*[ 0123456789abcdef]%[OSRZT]%*s %*s %n"]
 	ac_cv_ps_cols=8
-	AC_MSG_RESULT([using nagios-plugins internal ps for solaris])
-	EXTRAS_ROOT="$EXTRAS_ROOT pst3"
+	AC_MSG_RESULT([$ac_cv_ps_command])
 
 dnl Some gnu/linux systems (debian for one) don't like -axwo and need axwo.
 dnl so test for this first...

+ 1 - 1
plugins/check_procs.c

@@ -200,7 +200,7 @@ main (int argc, char **argv)
 			procseconds = convert_to_seconds(procetime);
 
 			if (verbose >= 3)
-				printf ("%d %d %d %d %d %d %.2f %s %s %s %s\n", 
+				printf ("proc#=%d uid=%d vsz=%d rss=%d pid=%d ppid=%d pcpu=%.2f stat=%s etime=%s prog=%s args=%s\n", 
 					procs, procuid, procvsz, procrss,
 					procpid, procppid, procpcpu, procstat, 
 					procetime, procprog, procargs);