使用&&执行多个linux命令在PHP脚本的后台

时间:2014-07-20 03:47:53

标签: php linux

好的,我有一个操作系统Ubuntu。我有灯泡。现在我想在后台执行一些命令,这将至少执行10-15分钟。我想从Web界面而不是cli。

从PHP脚本执行此命令

初审:

当我这样做时,php脚本能够成功地在后台运行命令:

command1 &> /dev/null &

第二个实例:

但是当我这样做时:

command1 &> /dev/null && command2 &

然后命令不在后台运行,php脚本暂停直到执行此命令。我希望在command1完成后执行command2,以便我(或我的php脚本)可以知道command1已经执行。但它应该在后台,否则我的PHP脚本不能按时执行。

当我从命令行执行第二个实例时,它可以在后台运行,但是当我从php脚本执行它时,它无法在后台运行。

我使用php的exec函数来执行这些命令。

<?php
exec('command1 &> /dev/null && command2 &',$out,$ret);
?>

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

试试这个:

<?php
exec('(command1 && command2) >/dev/null &',$out,$ret);

它正在做的是在子shell中启动命令,以便command1先运行然后command2仅在command1成功完成后运行,然后将所有输出重定向到dev/null并在后台运行整个事情。

如果您想command2运行command1而不管;退出代码使用&&而不是{{1}}。

答案 1 :(得分:0)

计算机正在执行您指示它执行的操作。如果第一个命令成功完成,&& list operator告诉shell只运行第二个命令。相反,你应该运行两个独立的命令;如果两个命令之间确实存在依赖关系,那么您可能需要重新考虑您的方法。