我必须并行运行两个进程并不断处理它们的输出。
应该在bash脚本中启动基本执行,该脚本执行python脚本,如下所示:
python somefile.py &
python someotherfile.py &
它们都运行很长时间并产生日志输出。我想处理它们的输出(哪个程序生成日志输出并不重要。)
是否可以将输出重定向到处理它的函数?
答案 0 :(得分:0)
这是我脑海中最简单的事情。
档案a.sh:
while true; do
echo A
sleep 0.5
done
档案b.sh:
while true; do
echo B
sleep 1.2
done
档案c.sh:
(
./a.sh &
./b.sh &
) | while read output; do
echo "C: read $output"
done
文件c.sh
在后台启动a.sh
和b.sh
,并从两者中读取输出。当c.sh运行时,输出为:
C: read A
C: read B
C: read A
C: read A
C: read B
C: read A
C: read A
C: read B
C: read A
C: read A
诀窍是使用括号将命令分组到一个单元中(好吧,另一个shell)。运行这些命令(在本例中为后台),整个标准输出通过管道输入while
循环。