好的,我有一个操作系统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);
?>
任何帮助都将不胜感激。
答案 0 :(得分:2)
试试这个:
<?php
exec('(command1 && command2) >/dev/null &',$out,$ret);
它正在做的是在子shell中启动命令,以便command1
先运行然后command2
仅在command1
成功完成后运行,然后将所有输出重定向到dev/null
并在后台运行整个事情。
如果您想command2
运行command1
而不管;
退出代码使用&&
而不是{{1}}。
答案 1 :(得分:0)
计算机正在执行您指示它执行的操作。如果第一个命令成功完成,&&
list operator告诉shell只运行第二个命令。相反,你应该运行两个独立的命令;如果两个命令之间确实存在依赖关系,那么您可能需要重新考虑您的方法。