如果我有两个后台进程生成 STDOUT 或 STDERR 的输入(例如,两个安装脚本),是否有一种简单的方法可以区分这两个输出流?我想我可以通过一个 sed 程序来传输每个进程的输出,该程序为每个输出的每一行添加不同的标签作为前缀,但我正在寻找更简单的东西。
答案1
最简单的解决方案是启动两个后台作业并将其输出重定向到文件:
utility1 >utility1.out 2>utility1.err &
utility2 >utility2.out 2>utility2.err &
这样做的另一个好处是不会因为输出而堵塞终端。
显然,您也可以将错误流和输出流重定向到同一个文件:
utility1 >utility1.out 2>&1 &
utility2 >utility2.out 2>&1 &
您还可以使用tmux
:
tmux new "utility1" ';' split "utility2"
tmux
所有命令退出后将立即退出。为了避免这种情况,请更改"utility"
为"utility;read"
.这将使窗格保持打开状态,直到您按Enter。