我正在尝试编写一个启动rtmpsrv
的脚本并等待它的一些输出。 rtmpsrv
提供所需的输出并继续运行,但脚本正在等待rtmpsrv
的终止。如何在不停止的情况下访问rtmpsrv
的输出?
答案 0 :(得分:1)
最简单的方法是:
rtmpsrv > logfile &
然后,您可以在logfile
中搜索您要查找的文字。与此同时,rtmpsrv
会做到这一点,完全不知道你的脚本。
此问题包含如何在脚本中等待某个模式出现在日志文件中的示例(因此您不必一次又一次地搜索它):Do a tail -F until matching a pattern
注意:如果您在脚本中启动rtmpsrv
进程并且脚本终止,则可能会终止rtmpsrv
进程。为避免使用nohup。
答案 1 :(得分:1)
嗯,我不熟悉rtmpsrv
,但除非必要,否则你应该等待它完成。但是,您可以将其输出重定向到文件,然后grep
该文件以查看它是否包含您要查找的字符串。
(虚构的代码......你可以期待语法地狱,只想给你一个想法)
nohup rtmpsrv >log.rtmpsrv 2>&1 &
...
while :; do
if ! result=$(grep "your desired line" log.rtmpsrv); then
echo "success: found $result"
break
fi
done
注意:if构造应该按照http://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_07_01.html工作 - 只是为了拥有更好的代码,正如@Charles Duffy建议的那样。
答案 2 :(得分:0)
只需使用gdb -p <pid>
附加到流程,其中pid
是您脚本的流程ID。
您可以通过像ps ax | grep <My Script's Name>
http://etbe.coker.com.au/2008/02/27/redirecting-output-from-a-running-process/