2014-07-20 1 views
0

좋아, 그래서 우분투 운영 체제가 있습니다. 나는 lampp을 가졌다. 이제 적어도 10-15 분이 걸릴 백그라운드에서 명령을 실행하고 싶습니다. cli가 아닌 웹 인터페이스에서 PHP 스크립트로이 명령을 실행하고 싶습니다.PHP 스크립트의 백그라운드에서 &&를 사용하여 여러 개의 linux 명령 실행

첫 번째 인스턴스 :

command1 &> /dev/null & 

두 번째 인스턴스 : :이 작업을 수행 할 때 PHP 스크립트가 백그라운드에서 명령을 실행할 성공적으로 수

그러나 때 나는 이렇게한다 :

command1 &> /dev/null && command2 & 

그런 다음 명령이 백그라운드에서 실행되지 않으면이 명령이 실행될 때까지 PHP 스크립트가 일시 중지됩니다. command2가 실행되어 command1이 완료되면 command1이 실행되었음을 알 수 있습니다. 하지만 내 PHP 스크립트가 제때에 실행되지 않는 다른 배경에 있어야합니다.

명령 줄에서 두 번째 인스턴스를 실행하면 백그라운드에서 실행할 수 있지만 PHP 스크립트에서 실행하면 백그라운드에서 실행할 수 없습니다.

나는 이러한 명령을 실행하기 위해 php의 exec 함수를 사용하고 있습니다.

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

어떤 도움을 주시면 감사하겠습니다.

+0

두 개의'exec' 문을 하나씩 사용해 보셨습니까? – Machavity

+0

'&& '대신에'&'를 사용할 수도 있습니다. –

답변

1

이 시도 :

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

무엇은 서브 쉘에서 명령을 출시하고, 그래서 command1 다음, 성공적으로 완료 dev/null 모든 출력을 리디렉션 전체를 실행 한 후 처음으로 다음 command1 실행 command2에만 실행되도록 백그라운드에서.

command1의 종료 코드에 관계없이 command2을 실행하려면 && 대신 ;을 사용하십시오.

0

컴퓨터가 지시하는대로 작업하고 있습니다. && list operator은 첫 x ​​째 명령이 성공적으로 완료된 경우에만 두 x 째 명령을 수행하도록 쉘에게 지시합니다. 대신 두 개의 독립적 인 명령을 실행해야합니다. 두 명령 사이에 실제로 종속성이있는 경우 접근 방식을 다시 고려해야 할 수 있습니다.

관련 문제