-c, --count
              Suppress  normal output; instead print a count of matching processes.  When count does not match any‐
              thing, e.g. returns zero, the command will return non-zero value.


Looks like you would want to use the --count flag instead of piping to wc:
[0:root@elmo CoA3]$ pgrep -f http --count
12
[0:root@elmo CoA3]$ pgrep -f httx --count
0
OR
Check the return code:
EXIT STATUS
       0      One or more processes matched the criteria.
       1      No processes matched.
       2      Syntax error in the command line.
       3      Fatal error: out of memory etc.

$last_line = exec('pgrep -f foo 2>&1', $output, $return_code);
print $output;
print $return_code;


Bill


On 8/9/2017 5:03 PM, Patrick O'Callaghan wrote:
On Wed, 2017-08-09 at 14:06 -0400, bruce wrote:
Hey peeps.

From a fed/centos cmdline...

 pgrep -f "foo" | wc -l

will return 0 -- if "foo" doesn't exist in the procTBL, and something
else if "foo" is running.

The curiousity... When I have a simple php

<?php

$f="pgrep -f 'foo' | wc -l";
$t=`$f`;
print $t

?>

$t isn't 0!! -- it's actually 1, or something else if foo is running..

Any ideas why?? I've used the different methods php provides to "run"
shell/.cmdline processes. I get the same results.

Now.. I can do something like
 ps aux | grep 'foo' | grep -v 'grep' | wc -l
and get the correct results within the php as well as the shell.

Didn't find anything via the 'net or SO on this..

Thoughts/comments??
I suggest you run the PHP script with the pipe to 'wc' changed to save
the output somewhere, then look at it.

poc
_______________________________________________
users mailing list -- users@lists.fedoraproject.org
To unsubscribe send an email to users-leave@lists.fedoraproject.org