私は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