Code

Use /usr/ucb/ps on Solaris in preference to pst3 (problems in 64bit mode)
authorTon Voon <tonvoon@users.sourceforge.net>
Tue, 6 Mar 2007 17:29:15 +0000 (17:29 +0000)
committerTon Voon <tonvoon@users.sourceforge.net>
Tue, 6 Mar 2007 17:29:15 +0000 (17:29 +0000)
git-svn-id: https://nagiosplug.svn.sourceforge.net/svnroot/nagiosplug/nagiosplug/trunk@1629 f882894a-f735-0410-b71e-b25c423dba1c

NEWS
configure.in
plugins/check_procs.c

diff --git a/NEWS b/NEWS
index 310c08bcf9a9c60d5742f628945098d1cc67a3fc..184d4ec2610f45b4bb5f16f3f4498badb960a2bb 100644 (file)
--- a/NEWS
+++ b/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
index b0d1c97da8f2461ff0f67750d4cae522bd93a22c..3b8db841438feb8d59acc7fcc8eafc8f3f24b57f 100644 (file)
@@ -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...
index da7e9f0f888d6392a9df6949249e958ce2bfddb7..2e2832849e50329bcb1de03bb5d9165515e480b3 100644 (file)
@@ -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);