我有一个php脚本,其中包含正在运行的以下命令:
exec("pgrep -fl ./build-dh", $output, $return);
如果pgrep没有发现“../build dh”进程正在运行,它通常返回“1”,但是,它总是返回“0”,即使我确定该进程没有运行。
以下是我从$output得到的信息:
Array ( [0] => 28560 sh -c pgrep -fl ./build-dh )
这意味着它正在输出它自己的PID,我猜不管发生什么,它都会强制返回一个“0”的代码。当我在shell中运行以下命令时,它工作正常:
$pgrep -fl ./build-dh
$echo $?
1
所以回报率很好…当我运行这个:
$pgrep -f nginx
11192
11193
11194
11195
11196
$echo $?
0
如何在php中使其正常工作?
谢谢
最佳答案
幸运的是,从exec修复$output
和$result
不需要太多时间,就可以更接近于您在cli中得到的结果:
foreach($output as $oi=>$o) if(strpos($o,'pgrep')!==false) unset($output[$oi]);
$return = !count($output);