我正试图从PHP启动一个命令,shell_exec调用一个bash脚本启动一个程序保持运行,但有时这个程序抛出一个错误并退出,我需要的是一种调用脚本的方法,并在2秒后返回无论程序输出什么,如果程序正确启动我只是希望它返回PID并且它仍然在Linux上运行但PHP继续,如果它抛出错误并关闭我想要输出该错误,这是我尝试的:
#!/bin/bash
ezstream -c $1 &
ezpid=$!
echo $ezpid
sleep 2
disown
如果它抛出一个错误它返回错误消息,但如果它正常运行PHP会卡住并且永远不会返回,因为程序一直在运行,即使它在2秒后仍然运行,我怎么能让脚本返回?
我怎样才能用bash做到这一点?我能够在C#中用这样的Process类做到这一点
Process ez = new Process();
//ez.parameters
ez.Start();
if (ez.WaitForExit(2000))
{
string message = ez.StandardOutput.ReadToEnd();
return message;
}
return ez.Id.ToString();
解决方法:
这应该做的工作:
#!/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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。