나는 shell_exec를 사용하여 계속 실행되는 프로그램을 시작하는 bash 스크립트를 호출하는 PHP에서 명령을 실행하려고 시도하고 있지만 때로는 프로그램에서 오류가 발생하고 종료됩니다. 필요한 것은 스크립트를 호출하여 수행하는 방법입니다. 2초 메서드가 프로그램 출력을 반환한 후 프로그램이 올바르게 시작되고 Linux에서 계속 실행되는 경우에만 PID를 반환하고 싶지만 PHP는 계속 실행됩니다. 오류가 발생하고 닫히면 출력을 원합니다. 그 오류에 대해 이것이 내가 시도한 것입니다.
#!/bin/bash
ezstream -c $1 &
ezpid=$!
echo $ezpid
sleep 2
disown
오류가 발생하면 정상적으로 반환되고 오류 메시지가 표시되지만 정상적으로 실행되면 프로그램이 계속 실행되기 때문에 PHP가 중단되고 반환되지 않습니다. 2초 후에 계속 실행하더라도 스크립트가 반환되도록 하려면 어떻게 해야 합니까?
Bash를 사용하여 이 작업을 어떻게 수행할 수 있나요? Process 클래스를 사용하여 C#에서 이 작업을 수행할 수 있습니다.
Process ez = new Process();
//ez.parameters
ez.Start();
if (ez.WaitForExit(2000))
{
string message = ez.StandardOutput.ReadToEnd();
return message;
}
return ez.Id.ToString();
답변1
이 작업을 수행해야 합니다.
#!/bin/bash
ezstream -c $1 >log.txt 2>error.txt &
ezpid=$!
echo $ezpid
sleep 2
if ps | grep $ezpid ; then
echo ezsteam is still running!
cat log.txt
exit 0
else
echo ezstream is dead
cat error.txt
exit 1
fi