<p>This fixes an issue that appears when running check_procs over NRPE,<br>
where the default shell is configured to (for example) dash, as is the<br>
case on Debian.</p>

<p>dash (and tcsh, and mksh, and probably others), when invoked with -c forks an additional process<br>
to execute the argument string. Contrast this with bash, which does not<br>
do this, provided that the argument string simply can be exec()'d as-is.</p>

<p>To demonstrate:<br>
$ bash -c pstree<br>
init─┬ ..<br>
    ...<br>
    ├─sshd─-─sshd───pstree</p>

<p>versus<br>
$ dash -c pstree<br>
init─┬ ..<br>
    ...<br>
    ├─sshd─-─sshd───dash───pstree</p>

<p>The consequence of this fork is that the following invokation:<br>
    /opt/plugins/check_procs -a init</p>

<p>will result in this output:</p>

<pre><code>PROCS OK: 2 processes with args 'init' | processes=2;;;0;
</code></pre>

<p>because the check_procs, in addition to finding the actual init process,<br>
finds its parent shell as well.</p>

<p>This example is a bit contrived, but I think it illustrates the<br>
point.</p>

<p>This wouldn't really be a problem, and normally isn't, if it weren't<br>
for the fact that NRPE uses a call to popen() which does exactly the<br>
above (executes '/bin/sh -c ...'), causing inconsistent behaviour<br>
between distributions and much confusion for end users.</p>

<p>The argument may be made that the dash process spawned by NRPE is just a<br>
process like any other, and should therefore be included in the process<br>
count just like any other. However, this is not very intuitive, because<br>
of the previously mentioned inconsistencies.</p>

<p>The argument might also well be made that we're <em>never</em> interested in the<br>
immediate ancestor of the plugin, but it is unknown how many<br>
installations have already made the necessary modifications to their<br>
setups to make up for the fact that the plugin behaves the way it does.</p>

<p>Thus, this patch adds an option --ignore-parent, which could (and<br>
indeed, in my opinion, should) be used, if you want to run check_procs through NRPE,<br>
with the -a option.</p>

<p>See also these bug reports:<br><a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626913">http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=626913</a><br><a href="http://sourceforge.net/p/nagiosplug/bugs/512/">http://sourceforge.net/p/nagiosplug/bugs/512/</a><br><a href="https://github.com/nagios-plugins/nagios-plugins/issues/999" class="issue-link" title="check_procs counts too much processes with dash as shell [sf#3304535]">#999</a><br><a href="https://bugs.op5.com/view.php?id=4398">https://bugs.op5.com/view.php?id=4398</a></p>

<hr>

<h4>You can merge this Pull Request by running</h4>
<pre>  git pull https://github.com/catharsis/nagios-plugins issue-999</pre>
<p>Or view, comment on, or merge it at:</p>
<p>  <a href='https://github.com/nagios-plugins/nagios-plugins/pull/1205'>https://github.com/nagios-plugins/nagios-plugins/pull/1205</a></p>

<h4>Commit Summary</h4>
<ul>
  <li>check_procs: add option to ignore plugin parent process</li>
</ul>

<h4>File Changes</h4>
<ul>
  <li>
    <strong>M</strong>
    <a href="https://github.com/nagios-plugins/nagios-plugins/pull/1205/files#diff-0">plugins/check_procs.c</a>
    (16)
  </li>
  <li>
    <strong>M</strong>
    <a href="https://github.com/nagios-plugins/nagios-plugins/pull/1205/files#diff-1">plugins/t/check_procs.t</a>
    (13)
  </li>
</ul>

<h4>Patch Links:</h4>
<ul>
  <li><a href='https://github.com/nagios-plugins/nagios-plugins/pull/1205.patch'>https://github.com/nagios-plugins/nagios-plugins/pull/1205.patch</a></li>
  <li><a href='https://github.com/nagios-plugins/nagios-plugins/pull/1205.diff'>https://github.com/nagios-plugins/nagios-plugins/pull/1205.diff</a></li>
</ul>