summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--plugins/check_procs.c8
-rw-r--r--plugins/t/check_procs.t9
2 files changed, 16 insertions, 1 deletions
diff --git a/plugins/check_procs.c b/plugins/check_procs.c
index d20b027f..c2239dba 100644
--- a/plugins/check_procs.c
+++ b/plugins/check_procs.c
@@ -123,6 +123,7 @@ main (int argc, char **argv)
123 char *procprog; 123 char *procprog;
124 124
125 pid_t mypid = 0; 125 pid_t mypid = 0;
126 pid_t myppid = 0;
126 struct stat statbuf; 127 struct stat statbuf;
127 dev_t mydev = 0; 128 dev_t mydev = 0;
128 ino_t myino = 0; 129 ino_t myino = 0;
@@ -172,6 +173,7 @@ main (int argc, char **argv)
172 173
173 /* find ourself */ 174 /* find ourself */
174 mypid = getpid(); 175 mypid = getpid();
176 myppid = getppid();
175 if (usepid || stat_exe(mypid, &statbuf) == -1) { 177 if (usepid || stat_exe(mypid, &statbuf) == -1) {
176 /* usepid might have been set by -T */ 178 /* usepid might have been set by -T */
177 usepid = 1; 179 usepid = 1;
@@ -241,6 +243,12 @@ main (int argc, char **argv)
241 printf("not considering - is myself or gone\n"); 243 printf("not considering - is myself or gone\n");
242 continue; 244 continue;
243 } 245 }
246 /* Ignore parent*/
247 else if (myppid == procpid) {
248 if (verbose >= 3)
249 printf("not considering - is parent\n");
250 continue;
251 }
244 252
245 /* filter kernel threads (childs of KTHREAD_PARENT)*/ 253 /* filter kernel threads (childs of KTHREAD_PARENT)*/
246 /* TODO adapt for other OSes than GNU/Linux 254 /* TODO adapt for other OSes than GNU/Linux
diff --git a/plugins/t/check_procs.t b/plugins/t/check_procs.t
index 1dea5643..e0479ea0 100644
--- a/plugins/t/check_procs.t
+++ b/plugins/t/check_procs.t
@@ -13,7 +13,7 @@ my $t;
13if (`uname -s` eq "SunOS\n" && ! -x "/usr/local/nagios/libexec/pst3") { 13if (`uname -s` eq "SunOS\n" && ! -x "/usr/local/nagios/libexec/pst3") {
14 plan skip_all => "Ignoring tests on solaris because of pst3"; 14 plan skip_all => "Ignoring tests on solaris because of pst3";
15} else { 15} else {
16 plan tests => 12; 16 plan tests => 14;
17} 17}
18 18
19my $result; 19my $result;
@@ -26,6 +26,13 @@ $result = NPTest->testCmd( "./check_procs -w 100000 -c 100000 -s Z" );
26is( $result->return_code, 0, "Checking less than 100000 zombie processes" ); 26is( $result->return_code, 0, "Checking less than 100000 zombie processes" );
27like( $result->output, '/^PROCS OK: [0-9]+ process(es)? with /', "Output correct" ); 27like( $result->output, '/^PROCS OK: [0-9]+ process(es)? with /', "Output correct" );
28 28
29SKIP: {
30 skip "No bash available", 2 unless(system("which bash > /dev/null") == 0);
31 $result = NPTest->testCmd( "bash -c './check_procs -a '/sbin/init'; true'" );
32 is( $result->return_code, 0, "Parent process is ignored" );
33 like( $result->output, '/^PROCS OK: 1 process?/', "Output correct" );
34
35}
29$result = NPTest->testCmd( "./check_procs -w 0 -c 100000" ); 36$result = NPTest->testCmd( "./check_procs -w 0 -c 100000" );
30is( $result->return_code, 1, "Checking warning if processes > 0" ); 37is( $result->return_code, 1, "Checking warning if processes > 0" );
31like( $result->output, '/^PROCS WARNING: [0-9]+ process(es)? | procs=[0-9]+;0;100000;0;$/', "Output correct" ); 38like( $result->output, '/^PROCS WARNING: [0-9]+ process(es)? | procs=[0-9]+;0;100000;0;$/', "Output correct" );