我有两个并行进程运行 shell 脚本,每个进程都会不时使用 echo 打印到 stdout。但有时输出可能会混淆。有没有办法独占 stdout,然后释放它?
答案1
我不太明白您的确切意图,但我假设您有两个进程将它们的输出发送到标准输出,并且您一次只想监视其中一个。
我的建议是让每个进程写入自己的文件而不是 stdout。如果您不想重写脚本,您可以让进程的所有输出重定向,使用 > 仅用于标准输出或使用 &> 重定向所有输出(包括 stderr)。
因此,您可以使用以下方式执行您的流程:
$./proc1 &> proc1.out
$./proc2 &> proc2.out
现在,如果您想监视某个进程的输出,请使用带有“follow”选项的 tail 命令:
$ tail -f proc1.out
如果要在标准输出上同时查看两个进程的输出,请使用:
$ tail -f proc1.out -f proc2.out