无法在jenkins控制台输出中禁止dos2unix命令的输出

时间:2017-03-15 10:36:58

标签: php jenkins dos2unix

我有一个Jenkins触发的项目,其中包含以下命令包含在PHP exec中 -

$dos2unix = exec("dos2unix ".$filePath);

它在Jenkins控制台输出中显示以下不需要的命令输出,并使屏幕变得混乱 -

dos2unix: converting file /home/jenkins/deployment_beta/phing/scratchpad/adserver/app/webroot/openx/lib/OA/Dal/Delivery/mysql.php to UNIX format ...
dos2unix: converting file /home/jenkins/deployment_beta/phing/scratchpad/adserver/app/webroot/openx/lib/OA/Dal/Maintenance/Statistics/Common.php to UNIX format ...

我尝试在ob_start()和ob_end_clean()中包装命令,并将输出定向到/ dev / null -

ob_start();
$dos2unix = exec("dos2unix ".$filePath." > /dev/null");
ob_end_clean();

但是,我在控制台输出中的表现仍然相同。

注 - 如果我在命令行中手动触发构建,我不会看到这个不需要的输出,无论我是否已将输出定向到/ dev / null或包装在输出缓冲区语句中。

我已阅读Suppressing output from exec() calls in PHP但无法解决问题。

1 个答案:

答案 0 :(得分:2)

dos2unix将其消息打印到stderr。要重定向它们,您需要使用2>而不是>。

$dos2unix = exec("dos2unix ".$filePath." 2> /dev/null");

另一个选择是使用选项-q。使用-q dos2unix不会打印消息,并且在出现错误时不会返回错误代码。

$dos2unix = exec("dos2unix -q ".$filePath.");